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/collate2.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/collate2.test')
-rw-r--r-- | libraries/sqlite/unix/sqlite-3.5.1/test/collate2.test | 664 |
1 files changed, 664 insertions, 0 deletions
diff --git a/libraries/sqlite/unix/sqlite-3.5.1/test/collate2.test b/libraries/sqlite/unix/sqlite-3.5.1/test/collate2.test new file mode 100644 index 0000000..28f4a91 --- /dev/null +++ b/libraries/sqlite/unix/sqlite-3.5.1/test/collate2.test | |||
@@ -0,0 +1,664 @@ | |||
1 | # | ||
2 | # 2001 September 15 | ||
3 | # | ||
4 | # The author disclaims copyright to this source code. In place of | ||
5 | # a legal notice, here is a blessing: | ||
6 | # | ||
7 | # May you do good and not evil. | ||
8 | # May you find forgiveness for yourself and forgive others. | ||
9 | # May you share freely, never taking more than you give. | ||
10 | # | ||
11 | #*********************************************************************** | ||
12 | # This file implements regression tests for SQLite library. The | ||
13 | # focus of this script is page cache subsystem. | ||
14 | # | ||
15 | # $Id: collate2.test,v 1.5 2007/02/01 23:02:46 drh Exp $ | ||
16 | |||
17 | set testdir [file dirname $argv0] | ||
18 | source $testdir/tester.tcl | ||
19 | |||
20 | # | ||
21 | # Tests are organised as follows: | ||
22 | # | ||
23 | # collate2-1.* WHERE <expr> expressions (sqliteExprIfTrue). | ||
24 | # collate2-2.* WHERE NOT <expr> expressions (sqliteExprIfFalse). | ||
25 | # collate2-3.* SELECT <expr> expressions (sqliteExprCode). | ||
26 | # collate2-4.* Precedence of collation/data types in binary comparisons | ||
27 | # collate2-5.* JOIN syntax. | ||
28 | # | ||
29 | |||
30 | # Create a collation type BACKWARDS for use in testing. This collation type | ||
31 | # is similar to the built-in TEXT collation type except the order of | ||
32 | # characters in each string is reversed before the comparison is performed. | ||
33 | db collate BACKWARDS backwards_collate | ||
34 | proc backwards_collate {a b} { | ||
35 | set ra {}; | ||
36 | set rb {} | ||
37 | foreach c [split $a {}] { set ra $c$ra } | ||
38 | foreach c [split $b {}] { set rb $c$rb } | ||
39 | return [string compare $ra $rb] | ||
40 | } | ||
41 | |||
42 | # The following values are used in these tests: | ||
43 | # NULL aa ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB | ||
44 | # | ||
45 | # The collation orders for each of the tested collation types are: | ||
46 | # | ||
47 | # BINARY: NULL AA AB Aa Ab BA BB Ba Bb aA aB aa ab bA bB ba bb | ||
48 | # NOCASE: NULL aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB | ||
49 | # BACKWARDS: NULL AA BA aA bA AB BB aB bB Aa Ba aa ba Ab Bb ab bb | ||
50 | # | ||
51 | # These tests verify that the default collation type for a column is used | ||
52 | # for comparison operators (<, >, <=, >=, =) involving that column and | ||
53 | # an expression that is not a column with a default collation type. | ||
54 | # | ||
55 | # The collation sequences BINARY and NOCASE are built-in, the BACKWARDS | ||
56 | # collation sequence is implemented by the TCL proc backwards_collate | ||
57 | # above. | ||
58 | # | ||
59 | do_test collate2-1.0 { | ||
60 | execsql { | ||
61 | CREATE TABLE collate2t1( | ||
62 | a COLLATE BINARY, | ||
63 | b COLLATE NOCASE, | ||
64 | c COLLATE BACKWARDS | ||
65 | ); | ||
66 | INSERT INTO collate2t1 VALUES( NULL, NULL, NULL ); | ||
67 | |||
68 | INSERT INTO collate2t1 VALUES( 'aa', 'aa', 'aa' ); | ||
69 | INSERT INTO collate2t1 VALUES( 'ab', 'ab', 'ab' ); | ||
70 | INSERT INTO collate2t1 VALUES( 'ba', 'ba', 'ba' ); | ||
71 | INSERT INTO collate2t1 VALUES( 'bb', 'bb', 'bb' ); | ||
72 | |||
73 | INSERT INTO collate2t1 VALUES( 'aA', 'aA', 'aA' ); | ||
74 | INSERT INTO collate2t1 VALUES( 'aB', 'aB', 'aB' ); | ||
75 | INSERT INTO collate2t1 VALUES( 'bA', 'bA', 'bA' ); | ||
76 | INSERT INTO collate2t1 VALUES( 'bB', 'bB', 'bB' ); | ||
77 | |||
78 | INSERT INTO collate2t1 VALUES( 'Aa', 'Aa', 'Aa' ); | ||
79 | INSERT INTO collate2t1 VALUES( 'Ab', 'Ab', 'Ab' ); | ||
80 | INSERT INTO collate2t1 VALUES( 'Ba', 'Ba', 'Ba' ); | ||
81 | INSERT INTO collate2t1 VALUES( 'Bb', 'Bb', 'Bb' ); | ||
82 | |||
83 | INSERT INTO collate2t1 VALUES( 'AA', 'AA', 'AA' ); | ||
84 | INSERT INTO collate2t1 VALUES( 'AB', 'AB', 'AB' ); | ||
85 | INSERT INTO collate2t1 VALUES( 'BA', 'BA', 'BA' ); | ||
86 | INSERT INTO collate2t1 VALUES( 'BB', 'BB', 'BB' ); | ||
87 | } | ||
88 | if {[info exists collate_test_use_index]} { | ||
89 | execsql { | ||
90 | CREATE INDEX collate2t1_i1 ON collate2t1(a); | ||
91 | CREATE INDEX collate2t1_i2 ON collate2t1(b); | ||
92 | CREATE INDEX collate2t1_i3 ON collate2t1(c); | ||
93 | } | ||
94 | } | ||
95 | } {} | ||
96 | do_test collate2-1.1 { | ||
97 | execsql { | ||
98 | SELECT a FROM collate2t1 WHERE a > 'aa' ORDER BY 1; | ||
99 | } | ||
100 | } {ab bA bB ba bb} | ||
101 | do_test collate2-1.1.1 { | ||
102 | execsql { | ||
103 | SELECT a FROM collate2t1 WHERE a COLLATE binary > 'aa' ORDER BY 1; | ||
104 | } | ||
105 | } {ab bA bB ba bb} | ||
106 | do_test collate2-1.1.2 { | ||
107 | execsql { | ||
108 | SELECT a FROM collate2t1 WHERE b COLLATE binary > 'aa' ORDER BY 1; | ||
109 | } | ||
110 | } {ab bA bB ba bb} | ||
111 | do_test collate2-1.1.3 { | ||
112 | execsql { | ||
113 | SELECT a FROM collate2t1 WHERE c COLLATE binary > 'aa' ORDER BY 1; | ||
114 | } | ||
115 | } {ab bA bB ba bb} | ||
116 | do_test collate2-1.2 { | ||
117 | execsql { | ||
118 | SELECT b FROM collate2t1 WHERE b > 'aa' ORDER BY 1, oid; | ||
119 | } | ||
120 | } {ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
121 | do_test collate2-1.2.1 { | ||
122 | execsql { | ||
123 | SELECT b FROM collate2t1 WHERE a COLLATE nocase > 'aa' | ||
124 | ORDER BY 1, oid; | ||
125 | } | ||
126 | } {ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
127 | do_test collate2-1.2.2 { | ||
128 | execsql { | ||
129 | SELECT b FROM collate2t1 WHERE b COLLATE nocase > 'aa' | ||
130 | ORDER BY 1, oid; | ||
131 | } | ||
132 | } {ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
133 | do_test collate2-1.2.3 { | ||
134 | execsql { | ||
135 | SELECT b FROM collate2t1 WHERE c COLLATE nocase > 'aa' | ||
136 | ORDER BY 1, oid; | ||
137 | } | ||
138 | } {ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
139 | do_test collate2-1.3 { | ||
140 | execsql { | ||
141 | SELECT c FROM collate2t1 WHERE c > 'aa' ORDER BY 1; | ||
142 | } | ||
143 | } {ba Ab Bb ab bb} | ||
144 | do_test collate2-1.3.1 { | ||
145 | execsql { | ||
146 | SELECT c FROM collate2t1 WHERE a COLLATE backwards > 'aa' | ||
147 | ORDER BY 1; | ||
148 | } | ||
149 | } {ba Ab Bb ab bb} | ||
150 | do_test collate2-1.3.2 { | ||
151 | execsql { | ||
152 | SELECT c FROM collate2t1 WHERE b COLLATE backwards > 'aa' | ||
153 | ORDER BY 1; | ||
154 | } | ||
155 | } {ba Ab Bb ab bb} | ||
156 | do_test collate2-1.3.3 { | ||
157 | execsql { | ||
158 | SELECT c FROM collate2t1 WHERE c COLLATE backwards > 'aa' | ||
159 | ORDER BY 1; | ||
160 | } | ||
161 | } {ba Ab Bb ab bb} | ||
162 | do_test collate2-1.4 { | ||
163 | execsql { | ||
164 | SELECT a FROM collate2t1 WHERE a < 'aa' ORDER BY 1; | ||
165 | } | ||
166 | } {AA AB Aa Ab BA BB Ba Bb aA aB} | ||
167 | do_test collate2-1.5 { | ||
168 | execsql { | ||
169 | SELECT b FROM collate2t1 WHERE b < 'aa' ORDER BY 1, oid; | ||
170 | } | ||
171 | } {} | ||
172 | do_test collate2-1.6 { | ||
173 | execsql { | ||
174 | SELECT c FROM collate2t1 WHERE c < 'aa' ORDER BY 1; | ||
175 | } | ||
176 | } {AA BA aA bA AB BB aB bB Aa Ba} | ||
177 | do_test collate2-1.7 { | ||
178 | execsql { | ||
179 | SELECT a FROM collate2t1 WHERE a = 'aa'; | ||
180 | } | ||
181 | } {aa} | ||
182 | do_test collate2-1.8 { | ||
183 | execsql { | ||
184 | SELECT b FROM collate2t1 WHERE b = 'aa' ORDER BY oid; | ||
185 | } | ||
186 | } {aa aA Aa AA} | ||
187 | do_test collate2-1.9 { | ||
188 | execsql { | ||
189 | SELECT c FROM collate2t1 WHERE c = 'aa'; | ||
190 | } | ||
191 | } {aa} | ||
192 | do_test collate2-1.10 { | ||
193 | execsql { | ||
194 | SELECT a FROM collate2t1 WHERE a >= 'aa' ORDER BY 1; | ||
195 | } | ||
196 | } {aa ab bA bB ba bb} | ||
197 | do_test collate2-1.11 { | ||
198 | execsql { | ||
199 | SELECT b FROM collate2t1 WHERE b >= 'aa' ORDER BY 1, oid; | ||
200 | } | ||
201 | } {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
202 | do_test collate2-1.12 { | ||
203 | execsql { | ||
204 | SELECT c FROM collate2t1 WHERE c >= 'aa' ORDER BY 1; | ||
205 | } | ||
206 | } {aa ba Ab Bb ab bb} | ||
207 | do_test collate2-1.13 { | ||
208 | execsql { | ||
209 | SELECT a FROM collate2t1 WHERE a <= 'aa' ORDER BY 1; | ||
210 | } | ||
211 | } {AA AB Aa Ab BA BB Ba Bb aA aB aa} | ||
212 | do_test collate2-1.14 { | ||
213 | execsql { | ||
214 | SELECT b FROM collate2t1 WHERE b <= 'aa' ORDER BY 1, oid; | ||
215 | } | ||
216 | } {aa aA Aa AA} | ||
217 | do_test collate2-1.15 { | ||
218 | execsql { | ||
219 | SELECT c FROM collate2t1 WHERE c <= 'aa' ORDER BY 1; | ||
220 | } | ||
221 | } {AA BA aA bA AB BB aB bB Aa Ba aa} | ||
222 | do_test collate2-1.16 { | ||
223 | execsql { | ||
224 | SELECT a FROM collate2t1 WHERE a BETWEEN 'Aa' AND 'Bb' ORDER BY 1; | ||
225 | } | ||
226 | } {Aa Ab BA BB Ba Bb} | ||
227 | do_test collate2-1.17 { | ||
228 | execsql { | ||
229 | SELECT b FROM collate2t1 WHERE b BETWEEN 'Aa' AND 'Bb' ORDER BY 1, oid; | ||
230 | } | ||
231 | } {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
232 | do_test collate2-1.18 { | ||
233 | execsql { | ||
234 | SELECT c FROM collate2t1 WHERE c BETWEEN 'Aa' AND 'Bb' ORDER BY 1; | ||
235 | } | ||
236 | } {Aa Ba aa ba Ab Bb} | ||
237 | do_test collate2-1.19 { | ||
238 | execsql { | ||
239 | SELECT a FROM collate2t1 WHERE | ||
240 | CASE a WHEN 'aa' THEN 1 ELSE 0 END | ||
241 | ORDER BY 1, oid; | ||
242 | } | ||
243 | } {aa} | ||
244 | do_test collate2-1.20 { | ||
245 | execsql { | ||
246 | SELECT b FROM collate2t1 WHERE | ||
247 | CASE b WHEN 'aa' THEN 1 ELSE 0 END | ||
248 | ORDER BY 1, oid; | ||
249 | } | ||
250 | } {aa aA Aa AA} | ||
251 | do_test collate2-1.21 { | ||
252 | execsql { | ||
253 | SELECT c FROM collate2t1 WHERE | ||
254 | CASE c WHEN 'aa' THEN 1 ELSE 0 END | ||
255 | ORDER BY 1, oid; | ||
256 | } | ||
257 | } {aa} | ||
258 | |||
259 | ifcapable subquery { | ||
260 | do_test collate2-1.22 { | ||
261 | execsql { | ||
262 | SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb') ORDER BY 1, oid; | ||
263 | } | ||
264 | } {aa bb} | ||
265 | do_test collate2-1.23 { | ||
266 | execsql { | ||
267 | SELECT b FROM collate2t1 WHERE b IN ('aa', 'bb') ORDER BY 1, oid; | ||
268 | } | ||
269 | } {aa aA Aa AA bb bB Bb BB} | ||
270 | do_test collate2-1.24 { | ||
271 | execsql { | ||
272 | SELECT c FROM collate2t1 WHERE c IN ('aa', 'bb') ORDER BY 1, oid; | ||
273 | } | ||
274 | } {aa bb} | ||
275 | do_test collate2-1.25 { | ||
276 | execsql { | ||
277 | SELECT a FROM collate2t1 | ||
278 | WHERE a IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')); | ||
279 | } | ||
280 | } {aa bb} | ||
281 | do_test collate2-1.26 { | ||
282 | execsql { | ||
283 | SELECT b FROM collate2t1 | ||
284 | WHERE b IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')); | ||
285 | } | ||
286 | } {aa bb aA bB Aa Bb AA BB} | ||
287 | do_test collate2-1.27 { | ||
288 | execsql { | ||
289 | SELECT c FROM collate2t1 | ||
290 | WHERE c IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')); | ||
291 | } | ||
292 | } {aa bb} | ||
293 | } ;# ifcapable subquery | ||
294 | |||
295 | do_test collate2-2.1 { | ||
296 | execsql { | ||
297 | SELECT a FROM collate2t1 WHERE NOT a > 'aa' ORDER BY 1; | ||
298 | } | ||
299 | } {AA AB Aa Ab BA BB Ba Bb aA aB aa} | ||
300 | do_test collate2-2.2 { | ||
301 | execsql { | ||
302 | SELECT b FROM collate2t1 WHERE NOT b > 'aa' ORDER BY 1, oid; | ||
303 | } | ||
304 | } {aa aA Aa AA} | ||
305 | do_test collate2-2.3 { | ||
306 | execsql { | ||
307 | SELECT c FROM collate2t1 WHERE NOT c > 'aa' ORDER BY 1; | ||
308 | } | ||
309 | } {AA BA aA bA AB BB aB bB Aa Ba aa} | ||
310 | do_test collate2-2.4 { | ||
311 | execsql { | ||
312 | SELECT a FROM collate2t1 WHERE NOT a < 'aa' ORDER BY 1; | ||
313 | } | ||
314 | } {aa ab bA bB ba bb} | ||
315 | do_test collate2-2.5 { | ||
316 | execsql { | ||
317 | SELECT b FROM collate2t1 WHERE NOT b < 'aa' ORDER BY 1, oid; | ||
318 | } | ||
319 | } {aa aA Aa AA ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
320 | do_test collate2-2.6 { | ||
321 | execsql { | ||
322 | SELECT c FROM collate2t1 WHERE NOT c < 'aa' ORDER BY 1; | ||
323 | } | ||
324 | } {aa ba Ab Bb ab bb} | ||
325 | do_test collate2-2.7 { | ||
326 | execsql { | ||
327 | SELECT a FROM collate2t1 WHERE NOT a = 'aa'; | ||
328 | } | ||
329 | } {ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
330 | do_test collate2-2.8 { | ||
331 | execsql { | ||
332 | SELECT b FROM collate2t1 WHERE NOT b = 'aa'; | ||
333 | } | ||
334 | } {ab ba bb aB bA bB Ab Ba Bb AB BA BB} | ||
335 | do_test collate2-2.9 { | ||
336 | execsql { | ||
337 | SELECT c FROM collate2t1 WHERE NOT c = 'aa'; | ||
338 | } | ||
339 | } {ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
340 | do_test collate2-2.10 { | ||
341 | execsql { | ||
342 | SELECT a FROM collate2t1 WHERE NOT a >= 'aa' ORDER BY 1; | ||
343 | } | ||
344 | } {AA AB Aa Ab BA BB Ba Bb aA aB} | ||
345 | do_test collate2-2.11 { | ||
346 | execsql { | ||
347 | SELECT b FROM collate2t1 WHERE NOT b >= 'aa' ORDER BY 1, oid; | ||
348 | } | ||
349 | } {} | ||
350 | do_test collate2-2.12 { | ||
351 | execsql { | ||
352 | SELECT c FROM collate2t1 WHERE NOT c >= 'aa' ORDER BY 1; | ||
353 | } | ||
354 | } {AA BA aA bA AB BB aB bB Aa Ba} | ||
355 | do_test collate2-2.13 { | ||
356 | execsql { | ||
357 | SELECT a FROM collate2t1 WHERE NOT a <= 'aa' ORDER BY 1; | ||
358 | } | ||
359 | } {ab bA bB ba bb} | ||
360 | do_test collate2-2.14 { | ||
361 | execsql { | ||
362 | SELECT b FROM collate2t1 WHERE NOT b <= 'aa' ORDER BY 1, oid; | ||
363 | } | ||
364 | } {ab aB Ab AB ba bA Ba BA bb bB Bb BB} | ||
365 | do_test collate2-2.15 { | ||
366 | execsql { | ||
367 | SELECT c FROM collate2t1 WHERE NOT c <= 'aa' ORDER BY 1; | ||
368 | } | ||
369 | } {ba Ab Bb ab bb} | ||
370 | do_test collate2-2.16 { | ||
371 | execsql { | ||
372 | SELECT a FROM collate2t1 WHERE a NOT BETWEEN 'Aa' AND 'Bb' ORDER BY 1; | ||
373 | } | ||
374 | } {AA AB aA aB aa ab bA bB ba bb} | ||
375 | do_test collate2-2.17 { | ||
376 | execsql { | ||
377 | SELECT b FROM collate2t1 WHERE b NOT BETWEEN 'Aa' AND 'Bb' ORDER BY 1, oid; | ||
378 | } | ||
379 | } {} | ||
380 | do_test collate2-2.18 { | ||
381 | execsql { | ||
382 | SELECT c FROM collate2t1 WHERE c NOT BETWEEN 'Aa' AND 'Bb' ORDER BY 1; | ||
383 | } | ||
384 | } {AA BA aA bA AB BB aB bB ab bb} | ||
385 | do_test collate2-2.19 { | ||
386 | execsql { | ||
387 | SELECT a FROM collate2t1 WHERE NOT CASE a WHEN 'aa' THEN 1 ELSE 0 END; | ||
388 | } | ||
389 | } {{} ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
390 | do_test collate2-2.20 { | ||
391 | execsql { | ||
392 | SELECT b FROM collate2t1 WHERE NOT CASE b WHEN 'aa' THEN 1 ELSE 0 END; | ||
393 | } | ||
394 | } {{} ab ba bb aB bA bB Ab Ba Bb AB BA BB} | ||
395 | do_test collate2-2.21 { | ||
396 | execsql { | ||
397 | SELECT c FROM collate2t1 WHERE NOT CASE c WHEN 'aa' THEN 1 ELSE 0 END; | ||
398 | } | ||
399 | } {{} ab ba bb aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
400 | |||
401 | ifcapable subquery { | ||
402 | do_test collate2-2.22 { | ||
403 | execsql { | ||
404 | SELECT a FROM collate2t1 WHERE NOT a IN ('aa', 'bb'); | ||
405 | } | ||
406 | } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
407 | do_test collate2-2.23 { | ||
408 | execsql { | ||
409 | SELECT b FROM collate2t1 WHERE NOT b IN ('aa', 'bb'); | ||
410 | } | ||
411 | } {ab ba aB bA Ab Ba AB BA} | ||
412 | do_test collate2-2.24 { | ||
413 | execsql { | ||
414 | SELECT c FROM collate2t1 WHERE NOT c IN ('aa', 'bb'); | ||
415 | } | ||
416 | } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
417 | do_test collate2-2.25 { | ||
418 | execsql { | ||
419 | SELECT a FROM collate2t1 | ||
420 | WHERE NOT a IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')); | ||
421 | } | ||
422 | } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
423 | do_test collate2-2.26 { | ||
424 | execsql { | ||
425 | SELECT b FROM collate2t1 | ||
426 | WHERE NOT b IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')); | ||
427 | } | ||
428 | } {ab ba aB bA Ab Ba AB BA} | ||
429 | do_test collate2-2.27 { | ||
430 | execsql { | ||
431 | SELECT c FROM collate2t1 | ||
432 | WHERE NOT c IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')); | ||
433 | } | ||
434 | } {ab ba aA aB bA bB Aa Ab Ba Bb AA AB BA BB} | ||
435 | } | ||
436 | |||
437 | do_test collate2-3.1 { | ||
438 | execsql { | ||
439 | SELECT a > 'aa' FROM collate2t1; | ||
440 | } | ||
441 | } {{} 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0} | ||
442 | do_test collate2-3.2 { | ||
443 | execsql { | ||
444 | SELECT b > 'aa' FROM collate2t1; | ||
445 | } | ||
446 | } {{} 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1} | ||
447 | do_test collate2-3.3 { | ||
448 | execsql { | ||
449 | SELECT c > 'aa' FROM collate2t1; | ||
450 | } | ||
451 | } {{} 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0} | ||
452 | do_test collate2-3.4 { | ||
453 | execsql { | ||
454 | SELECT a < 'aa' FROM collate2t1; | ||
455 | } | ||
456 | } {{} 0 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1} | ||
457 | do_test collate2-3.5 { | ||
458 | execsql { | ||
459 | SELECT b < 'aa' FROM collate2t1; | ||
460 | } | ||
461 | } {{} 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} | ||
462 | do_test collate2-3.6 { | ||
463 | execsql { | ||
464 | SELECT c < 'aa' FROM collate2t1; | ||
465 | } | ||
466 | } {{} 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1} | ||
467 | do_test collate2-3.7 { | ||
468 | execsql { | ||
469 | SELECT a = 'aa' FROM collate2t1; | ||
470 | } | ||
471 | } {{} 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} | ||
472 | do_test collate2-3.8 { | ||
473 | execsql { | ||
474 | SELECT b = 'aa' FROM collate2t1; | ||
475 | } | ||
476 | } {{} 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0} | ||
477 | do_test collate2-3.9 { | ||
478 | execsql { | ||
479 | SELECT c = 'aa' FROM collate2t1; | ||
480 | } | ||
481 | } {{} 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} | ||
482 | do_test collate2-3.10 { | ||
483 | execsql { | ||
484 | SELECT a <= 'aa' FROM collate2t1; | ||
485 | } | ||
486 | } {{} 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 1} | ||
487 | do_test collate2-3.11 { | ||
488 | execsql { | ||
489 | SELECT b <= 'aa' FROM collate2t1; | ||
490 | } | ||
491 | } {{} 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0} | ||
492 | do_test collate2-3.12 { | ||
493 | execsql { | ||
494 | SELECT c <= 'aa' FROM collate2t1; | ||
495 | } | ||
496 | } {{} 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1} | ||
497 | do_test collate2-3.13 { | ||
498 | execsql { | ||
499 | SELECT a >= 'aa' FROM collate2t1; | ||
500 | } | ||
501 | } {{} 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0} | ||
502 | do_test collate2-3.14 { | ||
503 | execsql { | ||
504 | SELECT b >= 'aa' FROM collate2t1; | ||
505 | } | ||
506 | } {{} 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1} | ||
507 | do_test collate2-3.15 { | ||
508 | execsql { | ||
509 | SELECT c >= 'aa' FROM collate2t1; | ||
510 | } | ||
511 | } {{} 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0} | ||
512 | do_test collate2-3.16 { | ||
513 | execsql { | ||
514 | SELECT a BETWEEN 'Aa' AND 'Bb' FROM collate2t1; | ||
515 | } | ||
516 | } {{} 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1} | ||
517 | do_test collate2-3.17 { | ||
518 | execsql { | ||
519 | SELECT b BETWEEN 'Aa' AND 'Bb' FROM collate2t1; | ||
520 | } | ||
521 | } {{} 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1} | ||
522 | do_test collate2-3.18 { | ||
523 | execsql { | ||
524 | SELECT c BETWEEN 'Aa' AND 'Bb' FROM collate2t1; | ||
525 | } | ||
526 | } {{} 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0} | ||
527 | do_test collate2-3.19 { | ||
528 | execsql { | ||
529 | SELECT CASE a WHEN 'aa' THEN 1 ELSE 0 END FROM collate2t1; | ||
530 | } | ||
531 | } {0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} | ||
532 | do_test collate2-3.20 { | ||
533 | execsql { | ||
534 | SELECT CASE b WHEN 'aa' THEN 1 ELSE 0 END FROM collate2t1; | ||
535 | } | ||
536 | } {0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0} | ||
537 | do_test collate2-3.21 { | ||
538 | execsql { | ||
539 | SELECT CASE c WHEN 'aa' THEN 1 ELSE 0 END FROM collate2t1; | ||
540 | } | ||
541 | } {0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0} | ||
542 | |||
543 | ifcapable subquery { | ||
544 | do_test collate2-3.22 { | ||
545 | execsql { | ||
546 | SELECT a IN ('aa', 'bb') FROM collate2t1; | ||
547 | } | ||
548 | } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0} | ||
549 | do_test collate2-3.23 { | ||
550 | execsql { | ||
551 | SELECT b IN ('aa', 'bb') FROM collate2t1; | ||
552 | } | ||
553 | } {{} 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1} | ||
554 | do_test collate2-3.24 { | ||
555 | execsql { | ||
556 | SELECT c IN ('aa', 'bb') FROM collate2t1; | ||
557 | } | ||
558 | } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0} | ||
559 | do_test collate2-3.25 { | ||
560 | execsql { | ||
561 | SELECT a IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')) | ||
562 | FROM collate2t1; | ||
563 | } | ||
564 | } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0} | ||
565 | do_test collate2-3.26 { | ||
566 | execsql { | ||
567 | SELECT b IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')) | ||
568 | FROM collate2t1; | ||
569 | } | ||
570 | } {{} 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1} | ||
571 | do_test collate2-3.27 { | ||
572 | execsql { | ||
573 | SELECT c IN (SELECT a FROM collate2t1 WHERE a IN ('aa', 'bb')) | ||
574 | FROM collate2t1; | ||
575 | } | ||
576 | } {{} 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0} | ||
577 | } | ||
578 | |||
579 | do_test collate2-4.0 { | ||
580 | execsql { | ||
581 | CREATE TABLE collate2t2(b COLLATE binary); | ||
582 | CREATE TABLE collate2t3(b text); | ||
583 | INSERT INTO collate2t2 VALUES('aa'); | ||
584 | INSERT INTO collate2t3 VALUES('aa'); | ||
585 | } | ||
586 | } {} | ||
587 | |||
588 | # Test that when both sides of a binary comparison operator have | ||
589 | # default collation types, the collate type for the leftmost term | ||
590 | # is used. | ||
591 | do_test collate2-4.1 { | ||
592 | execsql { | ||
593 | SELECT collate2t1.a FROM collate2t1, collate2t2 | ||
594 | WHERE collate2t1.b = collate2t2.b; | ||
595 | } | ||
596 | } {aa aA Aa AA} | ||
597 | do_test collate2-4.2 { | ||
598 | execsql { | ||
599 | SELECT collate2t1.a FROM collate2t1, collate2t2 | ||
600 | WHERE collate2t2.b = collate2t1.b; | ||
601 | } | ||
602 | } {aa} | ||
603 | |||
604 | # Test that when one side has a default collation type and the other | ||
605 | # does not, the collation type is used. | ||
606 | do_test collate2-4.3 { | ||
607 | execsql { | ||
608 | SELECT collate2t1.a FROM collate2t1, collate2t3 | ||
609 | WHERE collate2t1.b = collate2t3.b||''; | ||
610 | } | ||
611 | } {aa aA Aa AA} | ||
612 | do_test collate2-4.4 { | ||
613 | execsql { | ||
614 | SELECT collate2t1.a FROM collate2t1, collate2t3 | ||
615 | WHERE collate2t3.b||'' = collate2t1.b; | ||
616 | } | ||
617 | } {aa aA Aa AA} | ||
618 | |||
619 | do_test collate2-4.5 { | ||
620 | execsql { | ||
621 | DROP TABLE collate2t3; | ||
622 | } | ||
623 | } {} | ||
624 | |||
625 | # | ||
626 | # Test that the default collation types are used when the JOIN syntax | ||
627 | # is used in place of a WHERE clause. | ||
628 | # | ||
629 | # SQLite transforms the JOIN syntax into a WHERE clause internally, so | ||
630 | # the focus of these tests is to ensure that the table on the left-hand-side | ||
631 | # of the join determines the collation type used. | ||
632 | # | ||
633 | do_test collate2-5.0 { | ||
634 | execsql { | ||
635 | SELECT collate2t1.b FROM collate2t1 JOIN collate2t2 USING (b); | ||
636 | } | ||
637 | } {aa aA Aa AA} | ||
638 | do_test collate2-5.1 { | ||
639 | execsql { | ||
640 | SELECT collate2t1.b FROM collate2t2 JOIN collate2t1 USING (b); | ||
641 | } | ||
642 | } {aa} | ||
643 | do_test collate2-5.2 { | ||
644 | execsql { | ||
645 | SELECT collate2t1.b FROM collate2t1 NATURAL JOIN collate2t2; | ||
646 | } | ||
647 | } {aa aA Aa AA} | ||
648 | do_test collate2-5.3 { | ||
649 | execsql { | ||
650 | SELECT collate2t1.b FROM collate2t2 NATURAL JOIN collate2t1; | ||
651 | } | ||
652 | } {aa} | ||
653 | do_test collate2-5.4 { | ||
654 | execsql { | ||
655 | SELECT collate2t2.b FROM collate2t1 LEFT OUTER JOIN collate2t2 USING (b) order by collate2t1.oid; | ||
656 | } | ||
657 | } {{} aa {} {} {} aa {} {} {} aa {} {} {} aa {} {} {}} | ||
658 | do_test collate2-5.5 { | ||
659 | execsql { | ||
660 | SELECT collate2t1.b, collate2t2.b FROM collate2t2 LEFT OUTER JOIN collate2t1 USING (b); | ||
661 | } | ||
662 | } {aa aa} | ||
663 | |||
664 | finish_test | ||