| 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 |