OLD | NEW |
1 # 2008 June 24 | 1 # 2008 June 24 |
2 # | 2 # |
3 # The author disclaims copyright to this source code. In place of | 3 # The author disclaims copyright to this source code. In place of |
4 # a legal notice, here is a blessing: | 4 # a legal notice, here is a blessing: |
5 # | 5 # |
6 # May you do good and not evil. | 6 # May you do good and not evil. |
7 # May you find forgiveness for yourself and forgive others. | 7 # May you find forgiveness for yourself and forgive others. |
8 # May you share freely, never taking more than you give. | 8 # May you share freely, never taking more than you give. |
9 # | 9 # |
10 #*********************************************************************** | 10 #*********************************************************************** |
11 # This file implements regression tests for SQLite library. | 11 # This file implements regression tests for SQLite library. |
12 # | 12 # |
13 # The focus of this file is testing the compound-SELECT merge | 13 # The focus of this file is testing the compound-SELECT merge |
14 # optimization. Or, in other words, making sure that all | 14 # optimization. Or, in other words, making sure that all |
15 # possible combinations of UNION, UNION ALL, EXCEPT, and | 15 # possible combinations of UNION, UNION ALL, EXCEPT, and |
16 # INTERSECT work together with an ORDER BY clause (with or w/o | 16 # INTERSECT work together with an ORDER BY clause (with or w/o |
17 # explicit sort order and explicit collating secquites) and | 17 # explicit sort order and explicit collating secquites) and |
18 # with and without optional LIMIT and OFFSET clauses. | 18 # with and without optional LIMIT and OFFSET clauses. |
19 # | 19 # |
20 # $Id: selectA.test,v 1.6 2008/08/21 14:24:29 drh Exp $ | 20 # $Id: selectA.test,v 1.6 2008/08/21 14:24:29 drh Exp $ |
21 | 21 |
22 set testdir [file dirname $argv0] | 22 set testdir [file dirname $argv0] |
23 source $testdir/tester.tcl | 23 source $testdir/tester.tcl |
| 24 set testprefix selectA |
24 | 25 |
25 ifcapable !compound { | 26 ifcapable !compound { |
26 finish_test | 27 finish_test |
27 return | 28 return |
28 } | 29 } |
29 | 30 |
30 do_test selectA-1.0 { | 31 do_test selectA-1.0 { |
31 execsql { | 32 execsql { |
32 CREATE TABLE t1(a,b,c COLLATE NOCASE); | 33 CREATE TABLE t1(a,b,c COLLATE NOCASE); |
33 INSERT INTO t1 VALUES(1,'a','a'); | 34 INSERT INTO t1 VALUES(1,'a','a'); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} | 275 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} |
275 do_test selectA-2.34 { | 276 do_test selectA-2.34 { |
276 execsql { | 277 execsql { |
277 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 278 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
278 ORDER BY b,a,c | 279 ORDER BY b,a,c |
279 } | 280 } |
280 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} | 281 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} |
281 do_test selectA-2.35 { | 282 do_test selectA-2.35 { |
282 execsql { | 283 execsql { |
283 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 284 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
284 ORDER BY b COLLATE NOCASE,a,c | 285 ORDER BY y COLLATE NOCASE,x,z |
285 } | 286 } |
286 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 287 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
287 do_test selectA-2.36 { | 288 do_test selectA-2.36 { |
288 execsql { | 289 execsql { |
289 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 290 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
290 ORDER BY b COLLATE NOCASE DESC,a,c | 291 ORDER BY y COLLATE NOCASE DESC,x,z |
291 } | 292 } |
292 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 293 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
293 do_test selectA-2.37 { | 294 do_test selectA-2.37 { |
294 execsql { | 295 execsql { |
295 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 296 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
296 ORDER BY c,b,a | 297 ORDER BY c,b,a |
297 } | 298 } |
298 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 299 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
299 do_test selectA-2.38 { | 300 do_test selectA-2.38 { |
300 execsql { | 301 execsql { |
301 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 302 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
302 ORDER BY c,a,b | 303 ORDER BY c,a,b |
303 } | 304 } |
304 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 305 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
305 do_test selectA-2.39 { | 306 do_test selectA-2.39 { |
306 execsql { | 307 execsql { |
307 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 308 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
308 ORDER BY c DESC,a,b | 309 ORDER BY c DESC,a,b |
309 } | 310 } |
310 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 311 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
311 do_test selectA-2.40 { | 312 do_test selectA-2.40 { |
312 execsql { | 313 execsql { |
313 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 314 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
314 ORDER BY c COLLATE BINARY DESC,a,b | 315 ORDER BY z COLLATE BINARY DESC,x,y |
315 } | 316 } |
316 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} | 317 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} |
317 do_test selectA-2.41 { | 318 do_test selectA-2.41 { |
318 execsql { | 319 execsql { |
319 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' | 320 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' |
320 ORDER BY a,b,c | 321 ORDER BY a,b,c |
321 } | 322 } |
322 } {{} C c 1 a a 9.9 b B} | 323 } {{} C c 1 a a 9.9 b B} |
323 do_test selectA-2.42 { | 324 do_test selectA-2.42 { |
324 execsql { | 325 execsql { |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} | 596 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} |
596 do_test selectA-2.85 { | 597 do_test selectA-2.85 { |
597 execsql { | 598 execsql { |
598 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 599 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
599 ORDER BY b,a,c | 600 ORDER BY b,a,c |
600 } | 601 } |
601 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} | 602 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} |
602 do_test selectA-2.86 { | 603 do_test selectA-2.86 { |
603 execsql { | 604 execsql { |
604 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 605 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
605 ORDER BY b COLLATE NOCASE,a,c | 606 ORDER BY y COLLATE NOCASE,x,z |
606 } | 607 } |
607 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 608 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
608 do_test selectA-2.87 { | 609 do_test selectA-2.87 { |
609 execsql { | 610 execsql { |
610 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 611 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
611 ORDER BY y COLLATE NOCASE DESC,x,z | 612 ORDER BY y COLLATE NOCASE DESC,x,z |
612 } | 613 } |
613 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 614 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
614 do_test selectA-2.88 { | 615 do_test selectA-2.88 { |
615 execsql { | 616 execsql { |
616 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 617 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
617 ORDER BY c,b,a | 618 ORDER BY c,b,a |
618 } | 619 } |
619 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 620 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
620 do_test selectA-2.89 { | 621 do_test selectA-2.89 { |
621 execsql { | 622 execsql { |
622 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 623 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
623 ORDER BY c,a,b | 624 ORDER BY c,a,b |
624 } | 625 } |
625 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 626 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
626 do_test selectA-2.90 { | 627 do_test selectA-2.90 { |
627 execsql { | 628 execsql { |
628 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 629 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
629 ORDER BY c DESC,a,b | 630 ORDER BY c DESC,a,b |
630 } | 631 } |
631 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 632 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
632 do_test selectA-2.91 { | 633 do_test selectA-2.91 { |
633 execsql { | 634 execsql { |
634 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 635 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
635 ORDER BY c COLLATE BINARY DESC,a,b | 636 ORDER BY z COLLATE BINARY DESC,x,y |
636 } | 637 } |
637 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} | 638 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} |
638 do_test selectA-2.92 { | 639 do_test selectA-2.92 { |
639 execsql { | 640 execsql { |
640 SELECT x,y,z FROM t2 | 641 SELECT x,y,z FROM t2 |
641 INTERSECT SELECT a,b,c FROM t3 | 642 INTERSECT SELECT a,b,c FROM t3 |
642 EXCEPT SELECT c,b,a FROM t1 | 643 EXCEPT SELECT c,b,a FROM t1 |
643 UNION SELECT a,b,c FROM t3 | 644 UNION SELECT a,b,c FROM t3 |
644 INTERSECT SELECT a,b,c FROM t3 | 645 INTERSECT SELECT a,b,c FROM t3 |
645 EXCEPT SELECT c,b,a FROM t1 | 646 EXCEPT SELECT c,b,a FROM t1 |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
886 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} | 887 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} |
887 do_test selectA-3.34 { | 888 do_test selectA-3.34 { |
888 execsql { | 889 execsql { |
889 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 890 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
890 ORDER BY b,a,c | 891 ORDER BY b,a,c |
891 } | 892 } |
892 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} | 893 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} |
893 do_test selectA-3.35 { | 894 do_test selectA-3.35 { |
894 execsql { | 895 execsql { |
895 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 896 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
896 ORDER BY b COLLATE NOCASE,a,c | 897 ORDER BY y COLLATE NOCASE,x,z |
897 } | 898 } |
898 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 899 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
899 do_test selectA-3.36 { | 900 do_test selectA-3.36 { |
900 execsql { | 901 execsql { |
901 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 902 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
902 ORDER BY b COLLATE NOCASE DESC,a,c | 903 ORDER BY y COLLATE NOCASE DESC,x,z |
903 } | 904 } |
904 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 905 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
905 do_test selectA-3.37 { | 906 do_test selectA-3.37 { |
906 execsql { | 907 execsql { |
907 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 908 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
908 ORDER BY c,b,a | 909 ORDER BY c,b,a |
909 } | 910 } |
910 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 911 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
911 do_test selectA-3.38 { | 912 do_test selectA-3.38 { |
912 execsql { | 913 execsql { |
913 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 914 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
914 ORDER BY c,a,b | 915 ORDER BY c,a,b |
915 } | 916 } |
916 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 917 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
917 do_test selectA-3.39 { | 918 do_test selectA-3.39 { |
918 execsql { | 919 execsql { |
919 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 920 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
920 ORDER BY c DESC,a,b | 921 ORDER BY c DESC,a,b |
921 } | 922 } |
922 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 923 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
923 do_test selectA-3.40 { | 924 do_test selectA-3.40 { |
924 execsql { | 925 execsql { |
925 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 | 926 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t1 |
926 ORDER BY c COLLATE BINARY DESC,a,b | 927 ORDER BY z COLLATE BINARY DESC,x,y |
927 } | 928 } |
928 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} | 929 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} |
929 do_test selectA-3.41 { | 930 do_test selectA-3.41 { |
930 execsql { | 931 execsql { |
931 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' | 932 SELECT a,b,c FROM t1 EXCEPT SELECT a,b,c FROM t1 WHERE b>='d' |
932 ORDER BY a,b,c | 933 ORDER BY a,b,c |
933 } | 934 } |
934 } {{} C c 1 a a 9.9 b B} | 935 } {{} C c 1 a a 9.9 b B} |
935 do_test selectA-3.42 { | 936 do_test selectA-3.42 { |
936 execsql { | 937 execsql { |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1207 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} | 1208 } {{} C c {} U u -23 Y y 1 a a 9.9 b B 5200000.0 X x hello d D mad Z z abc e e h
are m M} |
1208 do_test selectA-3.85 { | 1209 do_test selectA-3.85 { |
1209 execsql { | 1210 execsql { |
1210 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1211 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1211 ORDER BY b,a,c | 1212 ORDER BY b,a,c |
1212 } | 1213 } |
1213 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} | 1214 } {{} C c {} U u 5200000.0 X x -23 Y y mad Z z 1 a a 9.9 b B hello d D abc e e h
are m M} |
1214 do_test selectA-3.86 { | 1215 do_test selectA-3.86 { |
1215 execsql { | 1216 execsql { |
1216 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1217 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1217 ORDER BY b COLLATE NOCASE,a,c | 1218 ORDER BY y COLLATE NOCASE,x,z |
1218 } | 1219 } |
1219 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 1220 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
1220 do_test selectA-3.87 { | 1221 do_test selectA-3.87 { |
1221 execsql { | 1222 execsql { |
1222 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1223 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1223 ORDER BY y COLLATE NOCASE DESC,x,z | 1224 ORDER BY y COLLATE NOCASE DESC,x,z |
1224 } | 1225 } |
1225 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 1226 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
1226 do_test selectA-3.88 { | 1227 do_test selectA-3.88 { |
1227 execsql { | 1228 execsql { |
1228 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1229 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1229 ORDER BY c,b,a | 1230 ORDER BY c,b,a |
1230 } | 1231 } |
1231 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 1232 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
1232 do_test selectA-3.89 { | 1233 do_test selectA-3.89 { |
1233 execsql { | 1234 execsql { |
1234 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1235 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1235 ORDER BY c,a,b | 1236 ORDER BY c,a,b |
1236 } | 1237 } |
1237 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} | 1238 } {1 a a 9.9 b B {} C c hello d D abc e e hare m M {} U u 5200000.0 X x -23 Y y
mad Z z} |
1238 do_test selectA-3.90 { | 1239 do_test selectA-3.90 { |
1239 execsql { | 1240 execsql { |
1240 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1241 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1241 ORDER BY c DESC,a,b | 1242 ORDER BY c DESC,a,b |
1242 } | 1243 } |
1243 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} | 1244 } {mad Z z -23 Y y 5200000.0 X x {} U u hare m M abc e e hello d D {} C c 9.9 b
B 1 a a} |
1244 do_test selectA-3.91 { | 1245 do_test selectA-3.91 { |
1245 execsql { | 1246 execsql { |
1246 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 | 1247 SELECT x,y,z FROM t2 UNION SELECT a,b,c FROM t3 |
1247 ORDER BY c COLLATE BINARY DESC,a,b | 1248 ORDER BY z COLLATE BINARY DESC,x,y |
1248 } | 1249 } |
1249 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} | 1250 } {mad Z z -23 Y y 5200000.0 X x {} U u abc e e {} C c 1 a a hare m M hello d D
9.9 b B} |
1250 do_test selectA-3.92 { | 1251 do_test selectA-3.92 { |
1251 execsql { | 1252 execsql { |
1252 SELECT x,y,z FROM t2 | 1253 SELECT x,y,z FROM t2 |
1253 INTERSECT SELECT a,b,c FROM t3 | 1254 INTERSECT SELECT a,b,c FROM t3 |
1254 EXCEPT SELECT c,b,a FROM t1 | 1255 EXCEPT SELECT c,b,a FROM t1 |
1255 UNION SELECT a,b,c FROM t3 | 1256 UNION SELECT a,b,c FROM t3 |
1256 INTERSECT SELECT a,b,c FROM t3 | 1257 INTERSECT SELECT a,b,c FROM t3 |
1257 EXCEPT SELECT c,b,a FROM t1 | 1258 EXCEPT SELECT c,b,a FROM t1 |
(...skipping 27 matching lines...) Expand all Loading... |
1285 SELECT x,y,z FROM t2 | 1286 SELECT x,y,z FROM t2 |
1286 INTERSECT SELECT a,b,c FROM t3 | 1287 INTERSECT SELECT a,b,c FROM t3 |
1287 EXCEPT SELECT c,b,a FROM t1 | 1288 EXCEPT SELECT c,b,a FROM t1 |
1288 UNION SELECT a,b,c FROM t3 | 1289 UNION SELECT a,b,c FROM t3 |
1289 INTERSECT SELECT a,b,c FROM t3 | 1290 INTERSECT SELECT a,b,c FROM t3 |
1290 EXCEPT SELECT c,b,a FROM t1 | 1291 EXCEPT SELECT c,b,a FROM t1 |
1291 UNION SELECT a,b,c FROM t3 | 1292 UNION SELECT a,b,c FROM t3 |
1292 ORDER BY y COLLATE NOCASE DESC,x,z))) | 1293 ORDER BY y COLLATE NOCASE DESC,x,z))) |
1293 } | 1294 } |
1294 } {MAD} | 1295 } {MAD} |
| 1296 do_execsql_test selectA-3.98 { |
| 1297 WITH RECURSIVE |
| 1298 xyz(n) AS ( |
| 1299 SELECT upper((SELECT x FROM ( |
| 1300 SELECT x,y,z FROM t2 |
| 1301 INTERSECT SELECT a,b,c FROM t3 |
| 1302 EXCEPT SELECT c,b,a FROM t1 |
| 1303 UNION SELECT a,b,c FROM t3 |
| 1304 INTERSECT SELECT a,b,c FROM t3 |
| 1305 EXCEPT SELECT c,b,a FROM t1 |
| 1306 UNION SELECT a,b,c FROM t3 |
| 1307 ORDER BY y COLLATE NOCASE DESC,x,z))) |
| 1308 UNION ALL |
| 1309 SELECT n || '+' FROM xyz WHERE length(n)<5 |
| 1310 ) |
| 1311 SELECT n FROM xyz ORDER BY +n; |
| 1312 } {MAD MAD+ MAD++} |
| 1313 |
| 1314 #------------------------------------------------------------------------- |
| 1315 # At one point the following code exposed a temp register reuse problem. |
| 1316 # |
| 1317 proc f {args} { return 1 } |
| 1318 db func f f |
| 1319 |
| 1320 do_execsql_test 4.1.1 { |
| 1321 CREATE TABLE t4(a, b); |
| 1322 CREATE TABLE t5(c, d); |
| 1323 |
| 1324 INSERT INTO t5 VALUES(1, 'x'); |
| 1325 INSERT INTO t5 VALUES(2, 'x'); |
| 1326 INSERT INTO t4 VALUES(3, 'x'); |
| 1327 INSERT INTO t4 VALUES(4, 'x'); |
| 1328 |
| 1329 CREATE INDEX i1 ON t4(a); |
| 1330 CREATE INDEX i2 ON t5(c); |
| 1331 } |
| 1332 |
| 1333 do_eqp_test 4.1.2 { |
| 1334 SELECT c, d FROM t5 |
| 1335 UNION ALL |
| 1336 SELECT a, b FROM t4 WHERE f()==f() |
| 1337 ORDER BY 1,2 |
| 1338 } { |
| 1339 1 0 0 {SCAN TABLE t5 USING INDEX i2} |
| 1340 1 0 0 {USE TEMP B-TREE FOR RIGHT PART OF ORDER BY} |
| 1341 2 0 0 {SCAN TABLE t4 USING INDEX i1} |
| 1342 2 0 0 {USE TEMP B-TREE FOR RIGHT PART OF ORDER BY} |
| 1343 0 0 0 {COMPOUND SUBQUERIES 1 AND 2 (UNION ALL)} |
| 1344 } |
| 1345 |
| 1346 do_execsql_test 4.1.3 { |
| 1347 SELECT c, d FROM t5 |
| 1348 UNION ALL |
| 1349 SELECT a, b FROM t4 WHERE f()==f() |
| 1350 ORDER BY 1,2 |
| 1351 } { |
| 1352 1 x 2 x 3 x 4 x |
| 1353 } |
| 1354 |
| 1355 do_execsql_test 4.2.1 { |
| 1356 CREATE TABLE t6(a, b); |
| 1357 CREATE TABLE t7(c, d); |
| 1358 |
| 1359 INSERT INTO t7 VALUES(2, 9); |
| 1360 INSERT INTO t6 VALUES(3, 0); |
| 1361 INSERT INTO t6 VALUES(4, 1); |
| 1362 INSERT INTO t7 VALUES(5, 6); |
| 1363 INSERT INTO t6 VALUES(6, 0); |
| 1364 INSERT INTO t7 VALUES(7, 6); |
| 1365 |
| 1366 CREATE INDEX i6 ON t6(a); |
| 1367 CREATE INDEX i7 ON t7(c); |
| 1368 } |
| 1369 |
| 1370 do_execsql_test 4.2.2 { |
| 1371 SELECT c, f(d,c,d,c,d) FROM t7 |
| 1372 UNION ALL |
| 1373 SELECT a, b FROM t6 |
| 1374 ORDER BY 1,2 |
| 1375 } {/2 . 3 . 4 . 5 . 6 . 7 ./} |
| 1376 |
1295 | 1377 |
1296 finish_test | 1378 finish_test |
OLD | NEW |