Ensure that the xColumnText(), xQueryPhrase() and xPhraseFirstColumn() APIs all retur...
[sqlite.git] / test / carray01.test
blob1af9cb66e33457ab20cf523041c91b02d24065b2
1 # 2020-11-17
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
6 #    May you do good and not evil.
7 #    May you find forgiveness for yourself and forgive others.
8 #    May you share freely, never taking more than you give.
10 #***********************************************************************
11
12 # This file implements tests for CARRAY extension
15 set testdir [file dirname $argv0]
16 source $testdir/tester.tcl
17 set testprefix carray01
19 ifcapable !vtab {
20   finish_test
21   return
23 load_static_extension db carray
25 # Parameter $stmt must be a prepared statement created using
26 # the sqlite3_prepare_v2 command and with parameters fully bound.
27 # This routine simply runs the statement, gathers the result, and
28 # returns a list containing the result.
30 # If the optional second argument is true, then the stmt is finalized
31 # after it is run.
33 proc run_stmt {stmt} {
34   set r {}
35   while {[sqlite3_step $stmt]=="SQLITE_ROW"} {
36     for {set i 0} {$i<[sqlite3_data_count $stmt]} {incr i} {
37       lappend r [sqlite3_column_text $stmt $i]
38     }
39   }
40   sqlite3_reset $stmt
41   return $r
44 do_test 100 {
45   set STMT [sqlite3_prepare_v2 db {SELECT 5 IN carray(?3)} -1]
46   sqlite3_carray_bind $STMT 3 1 2 3 4 5 6 7
47   run_stmt $STMT
48 } {1}
49 do_test 101 {
50   sqlite3_carray_bind -static $STMT 3 1 2 3 4 5 6 7
51   run_stmt $STMT
52 } {1}
53 do_test 102 {
54   set STMT2 [sqlite3_prepare_v2 db {
55        SELECT DISTINCT typeof(value) FROM carray(?3)} -1]
56   sqlite3_carray_bind $STMT2 3 1 2 3 4 5 6 7
57   run_stmt $STMT2
58 } {integer}
59 do_test 110 {
60   sqlite3_carray_bind $STMT 3 1 2 3 4 6 7
61   run_stmt $STMT
62 } {0}
63 do_test 120 {
64   sqlite3_carray_bind -int64 $STMT 3 1 2 3 4 5 6 7
65   run_stmt $STMT
66 } {1}
67 do_test 120b {
68   sqlite3_carray_bind -int64 $STMT2 3 1 2 3 4 5 6 7
69   run_stmt $STMT2
70 } {integer}
71 do_test 121 {
72   sqlite3_carray_bind -int64 -transient $STMT 3 1 2 3 4 5 6 7
73   run_stmt $STMT
74 } {1}
75 do_test 122 {
76   sqlite3_carray_bind -int64 -static $STMT 3 1 2 3 4 5 6 7
77   run_stmt $STMT
78 } {1}
79 do_test 123 {
80   sqlite3_carray_bind -int32 -transient $STMT 3 1 2 3 4 5 6 7
81   run_stmt $STMT
82 } {1}
83 do_test 124 {
84   sqlite3_carray_bind -int32 -static $STMT 3 1 2 3 4 5 6 7
85   run_stmt $STMT
86 } {1}
87 do_test 125 {
88   sqlite3_carray_bind -int32 $STMT 3 1 2 3 4 5 6 7
89   run_stmt $STMT
90 } {1}
91 do_test 130 {
92   sqlite3_carray_bind -int64 $STMT 3 1 2 3 4 6 7
93   run_stmt $STMT
94 } {0}
95 do_test 131 {
96   sqlite3_carray_bind -int64 -transient $STMT 3 1 2 3 4 6 7
97   run_stmt $STMT
98 } {0}
99 do_test 131 {
100   sqlite3_carray_bind -int64 -static $STMT 3 1 2 3 4 6 7
101   run_stmt $STMT
102 } {0}
103 do_test 140 {
104   sqlite3_carray_bind -double $STMT 3 1 2 3 4 5 6 7
105   run_stmt $STMT
106 } {1}
107 do_test 141 {
108   sqlite3_carray_bind -double -transient $STMT 3 1 2 3 4 5 6 7
109   run_stmt $STMT
110 } {1}
111 do_test 142 {
112   sqlite3_carray_bind -double -static $STMT 3 1 2 3 4 5 6 7
113   run_stmt $STMT
114 } {1}
115 do_test 143 {
116   sqlite3_carray_bind -double $STMT2 3 1 2 3 4 5 6 7
117   run_stmt $STMT2
118 } {real}
119 do_test 150 {
120   sqlite3_carray_bind -double $STMT 3 1 2 3 4 6 7
121   run_stmt $STMT
122 } {0}
123 do_test 160 {
124   sqlite3_carray_bind -double $STMT 3 1 2 3 4 5 6 7
125   run_stmt $STMT
126 } {1}
127 do_test 170 {
128   sqlite3_carray_bind -text -static $STMT 3 1 2 3 4 6 7
129   run_stmt $STMT
130 } {0}
131 do_test 171 {
132   sqlite3_carray_bind -text -static $STMT2 3 1 2 3 4 6 7
133   run_stmt $STMT2
134 } {text}
135 do_test 180 {
136   sqlite3_carray_bind -text -transient $STMT 3 1 2 3 4 5 6 7
137   run_stmt $STMT
138 } {0}
139 do_test 190 {
140   sqlite3_carray_bind -blob -static $STMT 3 1 2 3 4 5 6 7
141   run_stmt $STMT
142 } {0}
143 do_test 191 {
144   sqlite3_carray_bind -blob -static $STMT2 3 1 2 3 4 5 6 7
145   run_stmt $STMT2
146 } {blob}
147 do_test 200 {
148   sqlite3_carray_bind -blob -transient $STMT 3 1 2 3 4 5 6 7
149   run_stmt $STMT
150 } {0}
151 do_test 300 {
152   sqlite3_carray_bind $STMT 3
153   run_stmt $STMT
154 } {0}
156 sqlite3_finalize $STMT
157 sqlite3_finalize $STMT2
159 finish_test