diff options
author | dan miller | 2007-10-20 02:49:29 +0000 |
---|---|---|
committer | dan miller | 2007-10-20 02:49:29 +0000 |
commit | e36d23a85ebff914d74bb541558c2b6082b78edb (patch) | |
tree | 54b58fdf162e78af64055282a6035c8d2443389d /libraries/sqlite/unix/sqlite-3.5.1/test/descidx1.test | |
parent | * Fixed an issue whereby avatar chat distances were being calculated against ... (diff) | |
download | opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.zip opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.tar.gz opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.tar.bz2 opensim-SC-e36d23a85ebff914d74bb541558c2b6082b78edb.tar.xz |
sqlite source (unix build) added to libraries
Diffstat (limited to 'libraries/sqlite/unix/sqlite-3.5.1/test/descidx1.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/descidx1.test | 337 |
1 files changed, 337 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/descidx1.test b/libraries/sqlite/unix/sqlite-3.5.1/test/descidx1.test new file mode 100644 index 0000000..9c26b7f --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/descidx1.test | |||
@@ -0,0 +1,337 @@ | |||
1 | # 2005 December 21 | ||
2 | # | ||
3 | # The author disclaims copyright to this source code. In place of | ||
4 | # a legal notice, here is a blessing: | ||
5 | # | ||
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. | ||
9 | # | ||
10 | #************************************************************************* | ||
11 | # This file implements regression tests for SQLite library. The | ||
12 | # focus of this script is descending indices. | ||
13 | # | ||
14 | # $Id: descidx1.test,v 1.7 2006/07/11 14:17:52 drh Exp $ | ||
15 | # | ||
16 | |||
17 | set testdir [file dirname $argv0] | ||
18 | source $testdir/tester.tcl | ||
19 | |||
20 | db eval {PRAGMA legacy_file_format=OFF} | ||
21 | |||
22 | # This procedure sets the value of the file-format in file 'test.db' | ||
23 | # to $newval. Also, the schema cookie is incremented. | ||
24 | # | ||
25 | proc set_file_format {newval} { | ||
26 | set bt [btree_open test.db 10 0] | ||
27 | btree_begin_transaction $bt | ||
28 | set meta [btree_get_meta $bt] | ||
29 | lset meta 2 $newval ;# File format | ||
30 | lset meta 1 [expr [lindex $meta 1]+1] ;# Schema cookie | ||
31 | eval "btree_update_meta $bt $meta" | ||
32 | btree_commit $bt | ||
33 | btree_close $bt | ||
34 | } | ||
35 | |||
36 | # This procedure returns the value of the file-format in file 'test.db'. | ||
37 | # | ||
38 | proc get_file_format {{fname test.db}} { | ||
39 | set bt [btree_open $fname 10 0] | ||
40 | set meta [btree_get_meta $bt] | ||
41 | btree_close $bt | ||
42 | lindex $meta 2 | ||
43 | } | ||
44 | |||
45 | # Verify that the file format starts as 4. | ||
46 | # | ||
47 | do_test descidx1-1.1 { | ||
48 | execsql { | ||
49 | CREATE TABLE t1(a,b); | ||
50 | CREATE INDEX i1 ON t1(b ASC); | ||
51 | } | ||
52 | get_file_format | ||
53 | } {4} | ||
54 | do_test descidx1-1.2 { | ||
55 | execsql { | ||
56 | CREATE INDEX i2 ON t1(a DESC); | ||
57 | } | ||
58 | get_file_format | ||
59 | } {4} | ||
60 | |||
61 | # Put some information in the table and verify that the descending | ||
62 | # index actually works. | ||
63 | # | ||
64 | do_test descidx1-2.1 { | ||
65 | execsql { | ||
66 | INSERT INTO t1 VALUES(1,1); | ||
67 | INSERT INTO t1 VALUES(2,2); | ||
68 | INSERT INTO t1 SELECT a+2, a+2 FROM t1; | ||
69 | INSERT INTO t1 SELECT a+4, a+4 FROM t1; | ||
70 | SELECT b FROM t1 WHERE a>3 AND a<7; | ||
71 | } | ||
72 | } {6 5 4} | ||
73 | do_test descidx1-2.2 { | ||
74 | execsql { | ||
75 | SELECT a FROM t1 WHERE b>3 AND b<7; | ||
76 | } | ||
77 | } {4 5 6} | ||
78 | do_test descidx1-2.3 { | ||
79 | execsql { | ||
80 | SELECT b FROM t1 WHERE a>=3 AND a<7; | ||
81 | } | ||
82 | } {6 5 4 3} | ||
83 | do_test descidx1-2.4 { | ||
84 | execsql { | ||
85 | SELECT b FROM t1 WHERE a>3 AND a<=7; | ||
86 | } | ||
87 | } {7 6 5 4} | ||
88 | do_test descidx1-2.5 { | ||
89 | execsql { | ||
90 | SELECT b FROM t1 WHERE a>=3 AND a<=7; | ||
91 | } | ||
92 | } {7 6 5 4 3} | ||
93 | do_test descidx1-2.6 { | ||
94 | execsql { | ||
95 | SELECT a FROM t1 WHERE b>=3 AND b<=7; | ||
96 | } | ||
97 | } {3 4 5 6 7} | ||
98 | |||
99 | # This procedure executes the SQL. Then it checks to see if the OP_Sort | ||
100 | # opcode was executed. If an OP_Sort did occur, then "sort" is appended | ||
101 | # to the result. If no OP_Sort happened, then "nosort" is appended. | ||
102 | # | ||
103 | # This procedure is used to check to make sure sorting is or is not | ||
104 | # occurring as expected. | ||
105 | # | ||
106 | proc cksort {sql} { | ||
107 | set ::sqlite_sort_count 0 | ||
108 | set data [execsql $sql] | ||
109 | if {$::sqlite_sort_count} {set x sort} {set x nosort} | ||
110 | lappend data $x | ||
111 | return $data | ||
112 | } | ||
113 | |||
114 | # Test sorting using a descending index. | ||
115 | # | ||
116 | do_test descidx1-3.1 { | ||
117 | cksort {SELECT a FROM t1 ORDER BY a} | ||
118 | } {1 2 3 4 5 6 7 8 nosort} | ||
119 | do_test descidx1-3.2 { | ||
120 | cksort {SELECT a FROM t1 ORDER BY a ASC} | ||
121 | } {1 2 3 4 5 6 7 8 nosort} | ||
122 | do_test descidx1-3.3 { | ||
123 | cksort {SELECT a FROM t1 ORDER BY a DESC} | ||
124 | } {8 7 6 5 4 3 2 1 nosort} | ||
125 | do_test descidx1-3.4 { | ||
126 | cksort {SELECT b FROM t1 ORDER BY a} | ||
127 | } {1 2 3 4 5 6 7 8 nosort} | ||
128 | do_test descidx1-3.5 { | ||
129 | cksort {SELECT b FROM t1 ORDER BY a ASC} | ||
130 | } {1 2 3 4 5 6 7 8 nosort} | ||
131 | do_test descidx1-3.6 { | ||
132 | cksort {SELECT b FROM t1 ORDER BY a DESC} | ||
133 | } {8 7 6 5 4 3 2 1 nosort} | ||
134 | do_test descidx1-3.7 { | ||
135 | cksort {SELECT a FROM t1 ORDER BY b} | ||
136 | } {1 2 3 4 5 6 7 8 nosort} | ||
137 | do_test descidx1-3.8 { | ||
138 | cksort {SELECT a FROM t1 ORDER BY b ASC} | ||
139 | } {1 2 3 4 5 6 7 8 nosort} | ||
140 | do_test descidx1-3.9 { | ||
141 | cksort {SELECT a FROM t1 ORDER BY b DESC} | ||
142 | } {8 7 6 5 4 3 2 1 nosort} | ||
143 | do_test descidx1-3.10 { | ||
144 | cksort {SELECT b FROM t1 ORDER BY b} | ||
145 | } {1 2 3 4 5 6 7 8 nosort} | ||
146 | do_test descidx1-3.11 { | ||
147 | cksort {SELECT b FROM t1 ORDER BY b ASC} | ||
148 | } {1 2 3 4 5 6 7 8 nosort} | ||
149 | do_test descidx1-3.12 { | ||
150 | cksort {SELECT b FROM t1 ORDER BY b DESC} | ||
151 | } {8 7 6 5 4 3 2 1 nosort} | ||
152 | |||
153 | do_test descidx1-3.21 { | ||
154 | cksort {SELECT a FROM t1 WHERE a>3 AND a<8 ORDER BY a} | ||
155 | } {4 5 6 7 nosort} | ||
156 | do_test descidx1-3.22 { | ||
157 | cksort {SELECT a FROM t1 WHERE a>3 AND a<8 ORDER BY a ASC} | ||
158 | } {4 5 6 7 nosort} | ||
159 | do_test descidx1-3.23 { | ||
160 | cksort {SELECT a FROM t1 WHERE a>3 AND a<8 ORDER BY a DESC} | ||
161 | } {7 6 5 4 nosort} | ||
162 | do_test descidx1-3.24 { | ||
163 | cksort {SELECT b FROM t1 WHERE a>3 AND a<8 ORDER BY a} | ||
164 | } {4 5 6 7 nosort} | ||
165 | do_test descidx1-3.25 { | ||
166 | cksort {SELECT b FROM t1 WHERE a>3 AND a<8 ORDER BY a ASC} | ||
167 | } {4 5 6 7 nosort} | ||
168 | do_test descidx1-3.26 { | ||
169 | cksort {SELECT b FROM t1 WHERE a>3 AND a<8 ORDER BY a DESC} | ||
170 | } {7 6 5 4 nosort} | ||
171 | |||
172 | # Create a table with indices that are descending on some terms and | ||
173 | # ascending on others. | ||
174 | # | ||
175 | ifcapable bloblit { | ||
176 | do_test descidx1-4.1 { | ||
177 | execsql { | ||
178 | CREATE TABLE t2(a INT, b TEXT, c BLOB, d REAL); | ||
179 | CREATE INDEX i3 ON t2(a ASC, b DESC, c ASC); | ||
180 | CREATE INDEX i4 ON t2(b DESC, a ASC, d DESC); | ||
181 | INSERT INTO t2 VALUES(1,'one',x'31',1.0); | ||
182 | INSERT INTO t2 VALUES(2,'two',x'3232',2.0); | ||
183 | INSERT INTO t2 VALUES(3,'three',x'333333',3.0); | ||
184 | INSERT INTO t2 VALUES(4,'four',x'34343434',4.0); | ||
185 | INSERT INTO t2 VALUES(5,'five',x'3535353535',5.0); | ||
186 | INSERT INTO t2 VALUES(6,'six',x'363636363636',6.0); | ||
187 | INSERT INTO t2 VALUES(2,'two',x'323232',2.1); | ||
188 | INSERT INTO t2 VALUES(2,'zwei',x'3232',2.2); | ||
189 | INSERT INTO t2 VALUES(2,NULL,NULL,2.3); | ||
190 | SELECT count(*) FROM t2; | ||
191 | } | ||
192 | } {9} | ||
193 | do_test descidx1-4.2 { | ||
194 | execsql { | ||
195 | SELECT d FROM t2 ORDER BY a; | ||
196 | } | ||
197 | } {1.0 2.2 2.0 2.1 2.3 3.0 4.0 5.0 6.0} | ||
198 | do_test descidx1-4.3 { | ||
199 | execsql { | ||
200 | SELECT d FROM t2 WHERE a>=2; | ||
201 | } | ||
202 | } {2.2 2.0 2.1 2.3 3.0 4.0 5.0 6.0} | ||
203 | do_test descidx1-4.4 { | ||
204 | execsql { | ||
205 | SELECT d FROM t2 WHERE a>2; | ||
206 | } | ||
207 | } {3.0 4.0 5.0 6.0} | ||
208 | do_test descidx1-4.5 { | ||
209 | execsql { | ||
210 | SELECT d FROM t2 WHERE a=2 AND b>'two'; | ||
211 | } | ||
212 | } {2.2} | ||
213 | do_test descidx1-4.6 { | ||
214 | execsql { | ||
215 | SELECT d FROM t2 WHERE a=2 AND b>='two'; | ||
216 | } | ||
217 | } {2.2 2.0 2.1} | ||
218 | do_test descidx1-4.7 { | ||
219 | execsql { | ||
220 | SELECT d FROM t2 WHERE a=2 AND b<'two'; | ||
221 | } | ||
222 | } {} | ||
223 | do_test descidx1-4.8 { | ||
224 | execsql { | ||
225 | SELECT d FROM t2 WHERE a=2 AND b<='two'; | ||
226 | } | ||
227 | } {2.0 2.1} | ||
228 | } | ||
229 | |||
230 | do_test descidx1-5.1 { | ||
231 | execsql { | ||
232 | CREATE TABLE t3(a,b,c,d); | ||
233 | CREATE INDEX t3i1 ON t3(a DESC, b ASC, c DESC, d ASC); | ||
234 | INSERT INTO t3 VALUES(0,0,0,0); | ||
235 | INSERT INTO t3 VALUES(0,0,0,1); | ||
236 | INSERT INTO t3 VALUES(0,0,1,0); | ||
237 | INSERT INTO t3 VALUES(0,0,1,1); | ||
238 | INSERT INTO t3 VALUES(0,1,0,0); | ||
239 | INSERT INTO t3 VALUES(0,1,0,1); | ||
240 | INSERT INTO t3 VALUES(0,1,1,0); | ||
241 | INSERT INTO t3 VALUES(0,1,1,1); | ||
242 | INSERT INTO t3 VALUES(1,0,0,0); | ||
243 | INSERT INTO t3 VALUES(1,0,0,1); | ||
244 | INSERT INTO t3 VALUES(1,0,1,0); | ||
245 | INSERT INTO t3 VALUES(1,0,1,1); | ||
246 | INSERT INTO t3 VALUES(1,1,0,0); | ||
247 | INSERT INTO t3 VALUES(1,1,0,1); | ||
248 | INSERT INTO t3 VALUES(1,1,1,0); | ||
249 | INSERT INTO t3 VALUES(1,1,1,1); | ||
250 | SELECT count(*) FROM t3; | ||
251 | } | ||
252 | } {16} | ||
253 | do_test descidx1-5.2 { | ||
254 | cksort { | ||
255 | SELECT a||b||c||d FROM t3 ORDER BY a,b,c,d; | ||
256 | } | ||
257 | } {0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 sort} | ||
258 | do_test descidx1-5.3 { | ||
259 | cksort { | ||
260 | SELECT a||b||c||d FROM t3 ORDER BY a DESC, b ASC, c DESC, d ASC; | ||
261 | } | ||
262 | } {1010 1011 1000 1001 1110 1111 1100 1101 0010 0011 0000 0001 0110 0111 0100 0101 nosort} | ||
263 | do_test descidx1-5.4 { | ||
264 | cksort { | ||
265 | SELECT a||b||c||d FROM t3 ORDER BY a ASC, b DESC, c ASC, d DESC; | ||
266 | } | ||
267 | } {0101 0100 0111 0110 0001 0000 0011 0010 1101 1100 1111 1110 1001 1000 1011 1010 nosort} | ||
268 | do_test descidx1-5.5 { | ||
269 | cksort { | ||
270 | SELECT a||b||c FROM t3 WHERE d=0 ORDER BY a DESC, b ASC, c DESC | ||
271 | } | ||
272 | } {101 100 111 110 001 000 011 010 nosort} | ||
273 | do_test descidx1-5.6 { | ||
274 | cksort { | ||
275 | SELECT a||b||c FROM t3 WHERE d=0 ORDER BY a ASC, b DESC, c ASC | ||
276 | } | ||
277 | } {010 011 000 001 110 111 100 101 nosort} | ||
278 | do_test descidx1-5.7 { | ||
279 | cksort { | ||
280 | SELECT a||b||c FROM t3 WHERE d=0 ORDER BY a ASC, b DESC, c DESC | ||
281 | } | ||
282 | } {011 010 001 000 111 110 101 100 sort} | ||
283 | do_test descidx1-5.8 { | ||
284 | cksort { | ||
285 | SELECT a||b||c FROM t3 WHERE d=0 ORDER BY a ASC, b ASC, c ASC | ||
286 | } | ||
287 | } {000 001 010 011 100 101 110 111 sort} | ||
288 | do_test descidx1-5.9 { | ||
289 | cksort { | ||
290 | SELECT a||b||c FROM t3 WHERE d=0 ORDER BY a DESC, b DESC, c ASC | ||
291 | } | ||
292 | } {110 111 100 101 010 011 000 001 sort} | ||
293 | |||
294 | # Test the legacy_file_format pragma here because we have access to | ||
295 | # the get_file_format command. | ||
296 | # | ||
297 | ifcapable legacyformat { | ||
298 | do_test descidx1-6.1 { | ||
299 | db close | ||
300 | file delete -force test.db test.db-journal | ||
301 | sqlite3 db test.db | ||
302 | execsql {PRAGMA legacy_file_format} | ||
303 | } {1} | ||
304 | } else { | ||
305 | do_test descidx1-6.1 { | ||
306 | db close | ||
307 | file delete -force test.db test.db-journal | ||
308 | sqlite3 db test.db | ||
309 | execsql {PRAGMA legacy_file_format} | ||
310 | } {0} | ||
311 | } | ||
312 | do_test descidx1-6.2 { | ||
313 | execsql {PRAGMA legacy_file_format=YES} | ||
314 | execsql {PRAGMA legacy_file_format} | ||
315 | } {1} | ||
316 | do_test descidx1-6.3 { | ||
317 | execsql { | ||
318 | CREATE TABLE t1(a,b,c); | ||
319 | } | ||
320 | get_file_format | ||
321 | } {1} | ||
322 | do_test descidx1-6.4 { | ||
323 | db close | ||
324 | file delete -force test.db test.db-journal | ||
325 | sqlite3 db test.db | ||
326 | execsql {PRAGMA legacy_file_format=NO} | ||
327 | execsql {PRAGMA legacy_file_format} | ||
328 | } {0} | ||
329 | do_test descidx1-6.5 { | ||
330 | execsql { | ||
331 | CREATE TABLE t1(a,b,c); | ||
332 | } | ||
333 | get_file_format | ||
334 | } {4} | ||
335 | |||
336 | |||
337 | finish_test | ||