sl@0: # 2005 September 19 sl@0: # sl@0: # The author disclaims copyright to this source code. In place of sl@0: # a legal notice, here is a blessing: sl@0: # sl@0: # May you do good and not evil. sl@0: # May you find forgiveness for yourself and forgive others. sl@0: # May you share freely, never taking more than you give. sl@0: # sl@0: #*********************************************************************** sl@0: # This file implements regression tests for SQLite library. sl@0: # sl@0: # This file implements tests to verify that ticket #1473 has been sl@0: # fixed. sl@0: # sl@0: sl@0: set testdir [file dirname $argv0] sl@0: source $testdir/tester.tcl sl@0: sl@0: ifcapable !compound { sl@0: finish_test sl@0: return sl@0: } sl@0: sl@0: do_test tkt1473-1.1 { sl@0: execsql { sl@0: CREATE TABLE t1(a,b); sl@0: INSERT INTO t1 VALUES(1,2); sl@0: INSERT INTO t1 VALUES(3,4); sl@0: SELECT * FROM t1 sl@0: } sl@0: } {1 2 3 4} sl@0: sl@0: do_test tkt1473-1.2 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=1 UNION ALL SELECT 2 FROM t1 WHERE b=0 sl@0: } sl@0: } {1} sl@0: do_test tkt1473-1.3 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=1 UNION SELECT 2 FROM t1 WHERE b=0 sl@0: } sl@0: } {1} sl@0: do_test tkt1473-1.4 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=1 UNION ALL SELECT 2 FROM t1 WHERE b=4 sl@0: } sl@0: } {1 2} sl@0: do_test tkt1473-1.5 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=1 UNION SELECT 2 FROM t1 WHERE b=4 sl@0: } sl@0: } {1 2} sl@0: do_test tkt1473-1.6 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=0 UNION ALL SELECT 2 FROM t1 WHERE b=4 sl@0: } sl@0: } {2} sl@0: do_test tkt1473-1.7 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=0 UNION SELECT 2 FROM t1 WHERE b=4 sl@0: } sl@0: } {2} sl@0: do_test tkt1473-1.8 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=0 UNION ALL SELECT 2 FROM t1 WHERE b=0 sl@0: } sl@0: } {} sl@0: do_test tkt1473-1.9 { sl@0: execsql { sl@0: SELECT 1 FROM t1 WHERE a=0 UNION SELECT 2 FROM t1 WHERE b=0 sl@0: } sl@0: } {} sl@0: sl@0: # Everything from this point on depends on sub-queries. So skip it sl@0: # if sub-queries are not available. sl@0: ifcapable !subquery { sl@0: finish_test sl@0: return sl@0: } sl@0: sl@0: do_test tkt1473-2.2 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=1 UNION ALL SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-2.3 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=1 UNION SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-2.4 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=1 UNION ALL SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-2.5 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=1 UNION SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-2.6 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=0 UNION ALL SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {2} sl@0: do_test tkt1473-2.7 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=0 UNION SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {2} sl@0: do_test tkt1473-2.8 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=0 UNION ALL SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {{}} sl@0: do_test tkt1473-2.9 { sl@0: execsql { sl@0: SELECT (SELECT 1 FROM t1 WHERE a=0 UNION SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {{}} sl@0: sl@0: do_test tkt1473-3.2 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=1 UNION ALL SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-3.3 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=1 UNION SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-3.4 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=1 UNION ALL SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-3.5 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=1 UNION SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-3.6 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=0 UNION ALL SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-3.7 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=0 UNION SELECT 2 FROM t1 WHERE b=4) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-3.8 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=0 UNION ALL SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {0} sl@0: do_test tkt1473-3.9 { sl@0: execsql { sl@0: SELECT EXISTS sl@0: (SELECT 1 FROM t1 WHERE a=0 UNION SELECT 2 FROM t1 WHERE b=0) sl@0: } sl@0: } {0} sl@0: sl@0: do_test tkt1473-4.1 { sl@0: execsql { sl@0: CREATE TABLE t2(x,y); sl@0: INSERT INTO t2 VALUES(1,2); sl@0: INSERT INTO t2 SELECT x+2, y+2 FROM t2; sl@0: INSERT INTO t2 SELECT x+4, y+4 FROM t2; sl@0: INSERT INTO t2 SELECT x+8, y+8 FROM t2; sl@0: INSERT INTO t2 SELECT x+16, y+16 FROM t2; sl@0: INSERT INTO t2 SELECT x+32, y+32 FROM t2; sl@0: INSERT INTO t2 SELECT x+64, y+64 FROM t2; sl@0: SELECT count(*), sum(x), sum(y) FROM t2; sl@0: } sl@0: } {64 4096 4160} sl@0: do_test tkt1473-4.2 { sl@0: execsql { sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: } sl@0: } {2 4 8 10} sl@0: do_test tkt1473-4.3 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {2} sl@0: do_test tkt1473-4.4 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {4} sl@0: do_test tkt1473-4.5 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {8} sl@0: do_test tkt1473-4.6 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {10} sl@0: do_test tkt1473-4.7 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {{}} sl@0: sl@0: do_test tkt1473-5.3 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-5.4 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: sl@0: do_test tkt1473-5.5 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-5.6 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-5.7 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION ALL sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION ALL sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION ALL sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION ALL sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION ALL sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION ALL sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION ALL sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION ALL sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {0} sl@0: sl@0: do_test tkt1473-6.3 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-6.4 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=3 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: sl@0: do_test tkt1473-6.5 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=2 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-6.6 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-6.7 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {0} sl@0: do_test tkt1473-6.8 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=4 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-6.9 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 sl@0: UNION sl@0: SELECT 2 FROM t2 WHERE x=-1 sl@0: UNION sl@0: SELECT 3 FROM t2 WHERE x=2 sl@0: UNION sl@0: SELECT 4 FROM t2 WHERE x=-2 sl@0: UNION sl@0: SELECT 5 FROM t2 WHERE x=4 sl@0: UNION ALL sl@0: SELECT 6 FROM t2 WHERE y=0 sl@0: UNION sl@0: SELECT 7 FROM t2 WHERE y=1 sl@0: UNION sl@0: SELECT 8 FROM t2 WHERE y=-3 sl@0: UNION sl@0: SELECT 9 FROM t2 WHERE y=3 sl@0: UNION sl@0: SELECT 10 FROM t2 WHERE y=-4 sl@0: ) sl@0: } sl@0: } {0} sl@0: sl@0: do_test tkt1473-7.1 { sl@0: execsql { sl@0: SELECT 1 FROM t2 WHERE x=1 EXCEPT SELECT 2 FROM t2 WHERE y=2 sl@0: } sl@0: } {1} sl@0: do_test tkt1473-7.2 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=1 EXCEPT SELECT 2 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-7.3 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=1 EXCEPT SELECT 2 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-7.4 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 EXCEPT SELECT 2 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {{}} sl@0: do_test tkt1473-7.5 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=0 EXCEPT SELECT 2 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {0} sl@0: sl@0: do_test tkt1473-8.1 { sl@0: execsql { sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 2 FROM t2 WHERE y=2 sl@0: } sl@0: } {} sl@0: do_test tkt1473-8.1 { sl@0: execsql { sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 1 FROM t2 WHERE y=2 sl@0: } sl@0: } {1} sl@0: do_test tkt1473-8.3 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 2 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {{}} sl@0: do_test tkt1473-8.4 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 1 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-8.5 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 2 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {0} sl@0: do_test tkt1473-8.6 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 1 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {1} sl@0: do_test tkt1473-8.7 { sl@0: execsql { sl@0: SELECT ( sl@0: SELECT 1 FROM t2 WHERE x=0 INTERSECT SELECT 1 FROM t2 WHERE y=2 sl@0: ) sl@0: } sl@0: } {{}} sl@0: do_test tkt1473-8.8 { sl@0: execsql { sl@0: SELECT EXISTS ( sl@0: SELECT 1 FROM t2 WHERE x=1 INTERSECT SELECT 1 FROM t2 WHERE y=0 sl@0: ) sl@0: } sl@0: } {0} sl@0: sl@0: sl@0: sl@0: sl@0: finish_test