| Index: third_party/sqlite/src/test/where.test
|
| diff --git a/third_party/sqlite/src/test/where.test b/third_party/sqlite/src/test/where.test
|
| index 9145bcc7535ef6882f5ab60fbc40f096f1a6236a..f560708cca0e92165d245af23e55cfad92811665 100644
|
| --- a/third_party/sqlite/src/test/where.test
|
| +++ b/third_party/sqlite/src/test/where.test
|
| @@ -65,9 +65,9 @@ proc count sql {
|
| do_test where-1.1.1 {
|
| count {SELECT x, y, w FROM t1 WHERE w=10}
|
| } {3 121 10 3}
|
| -do_test where-1.1.2 {
|
| - set sqlite_query_plan
|
| -} {t1 i1w}
|
| +do_eqp_test where-1.1.2 {
|
| + SELECT x, y, w FROM t1 WHERE w=10
|
| +} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
|
| do_test where-1.1.3 {
|
| db status step
|
| } {0}
|
| @@ -77,15 +77,15 @@ do_test where-1.1.4 {
|
| do_test where-1.1.5 {
|
| db status step
|
| } {99}
|
| -do_test where-1.1.6 {
|
| - set sqlite_query_plan
|
| -} {t1 {}}
|
| +do_eqp_test where-1.1.6 {
|
| + SELECT x, y, w FROM t1 WHERE +w=10
|
| +} {*SCAN TABLE t1*}
|
| do_test where-1.1.7 {
|
| count {SELECT x, y, w AS abc FROM t1 WHERE abc=10}
|
| } {3 121 10 3}
|
| -do_test where-1.1.8 {
|
| - set sqlite_query_plan
|
| -} {t1 i1w}
|
| +do_eqp_test where-1.1.8 {
|
| + SELECT x, y, w AS abc FROM t1 WHERE abc=10
|
| +} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
|
| do_test where-1.1.9 {
|
| db status step
|
| } {0}
|
| @@ -104,21 +104,21 @@ do_test where-1.3.2 {
|
| do_test where-1.4.1 {
|
| count {SELECT w, x, y FROM t1 WHERE 11=w AND x>2}
|
| } {11 3 144 3}
|
| -do_test where-1.4.2 {
|
| - set sqlite_query_plan
|
| -} {t1 i1w}
|
| +do_eqp_test where-1.4.2 {
|
| + SELECT w, x, y FROM t1 WHERE 11=w AND x>2
|
| +} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
|
| do_test where-1.4.3 {
|
| count {SELECT w AS a, x AS b, y FROM t1 WHERE 11=a AND b>2}
|
| } {11 3 144 3}
|
| -do_test where-1.4.4 {
|
| - set sqlite_query_plan
|
| -} {t1 i1w}
|
| +do_eqp_test where-1.4.4 {
|
| + SELECT w AS a, x AS b, y FROM t1 WHERE 11=a AND b>2
|
| +} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
|
| do_test where-1.5 {
|
| count {SELECT x, y FROM t1 WHERE y<200 AND w=11 AND x>2}
|
| } {3 144 3}
|
| -do_test where-1.5.2 {
|
| - set sqlite_query_plan
|
| -} {t1 i1w}
|
| +do_eqp_test where-1.5.2 {
|
| + SELECT x, y FROM t1 WHERE y<200 AND w=11 AND x>2
|
| +} {*SEARCH TABLE t1 USING INDEX i1w (w=?)*}
|
| do_test where-1.6 {
|
| count {SELECT x, y FROM t1 WHERE y<200 AND x>2 AND w=11}
|
| } {3 144 3}
|
| @@ -128,13 +128,12 @@ do_test where-1.7 {
|
| do_test where-1.8 {
|
| count {SELECT x, y FROM t1 WHERE w>10 AND y=144 AND x=3}
|
| } {3 144 3}
|
| -do_test where-1.8.2 {
|
| - set sqlite_query_plan
|
| -} {t1 i1xy}
|
| -do_test where-1.8.3 {
|
| - count {SELECT x, y FROM t1 WHERE y=144 AND x=3}
|
| - set sqlite_query_plan
|
| -} {{} i1xy}
|
| +do_eqp_test where-1.8.2 {
|
| + SELECT x, y FROM t1 WHERE w>10 AND y=144 AND x=3
|
| +} {*SEARCH TABLE t1 USING INDEX i1xy (x=? AND y=?)*}
|
| +do_eqp_test where-1.8.3 {
|
| + SELECT x, y FROM t1 WHERE y=144 AND x=3
|
| +} {*SEARCH TABLE t1 USING COVERING INDEX i1xy (x=? AND y=?)*}
|
| do_test where-1.9 {
|
| count {SELECT x, y FROM t1 WHERE y=144 AND w>10 AND x=3}
|
| } {3 144 3}
|
| @@ -238,10 +237,10 @@ do_test where-1.34 {
|
| } {97 99}
|
| do_test where-1.35 {
|
| count {SELECT w FROM t1 WHERE w<3}
|
| -} {1 2 2}
|
| +} {1 2 3}
|
| do_test where-1.36 {
|
| count {SELECT w FROM t1 WHERE w<=3}
|
| -} {1 2 3 3}
|
| +} {1 2 3 4}
|
| do_test where-1.37 {
|
| count {SELECT w FROM t1 WHERE w+1<=4 ORDER BY w}
|
| } {1 2 3 99}
|
| @@ -379,11 +378,26 @@ ifcapable subquery {
|
| SELECT * FROM t1 WHERE rowid+0 IN (1,2,3,1234) order by 1;
|
| }
|
| } {1 0 4 2 1 9 3 1 16 102}
|
| - do_test where-5.3 {
|
| + do_test where-5.3a {
|
| count {
|
| SELECT * FROM t1 WHERE w IN (-1,1,2,3) order by 1;
|
| }
|
| - } {1 0 4 2 1 9 3 1 16 14}
|
| + } {1 0 4 2 1 9 3 1 16 13}
|
| + do_test where-5.3b {
|
| + count {
|
| + SELECT * FROM t1 WHERE w IN (3,-1,1,2) order by 1;
|
| + }
|
| + } {1 0 4 2 1 9 3 1 16 13}
|
| + do_test where-5.3c {
|
| + count {
|
| + SELECT * FROM t1 WHERE w IN (3,2,-1,1,2) order by 1;
|
| + }
|
| + } {1 0 4 2 1 9 3 1 16 13}
|
| + do_test where-5.3d {
|
| + count {
|
| + SELECT * FROM t1 WHERE w IN (-1,1,2,3) order by 1 DESC;
|
| + }
|
| + } {3 1 16 2 1 9 1 0 4 12}
|
| do_test where-5.4 {
|
| count {
|
| SELECT * FROM t1 WHERE w+0 IN (-1,1,2,3) order by 1;
|
| @@ -452,6 +466,30 @@ ifcapable subquery {
|
| SELECT * FROM t1 WHERE x IN (1,7) AND y IN (9,16) ORDER BY 1;
|
| }
|
| } {2 1 9 3 1 16 11}
|
| + do_test where-5.100 {
|
| + db eval {
|
| + SELECT w, x, y FROM t1 WHERE x IN (1,5) AND y IN (9,8,3025,1000,3969)
|
| + ORDER BY x, y
|
| + }
|
| + } {2 1 9 54 5 3025 62 5 3969}
|
| + do_test where-5.101 {
|
| + db eval {
|
| + SELECT w, x, y FROM t1 WHERE x IN (1,5) AND y IN (9,8,3025,1000,3969)
|
| + ORDER BY x DESC, y DESC
|
| + }
|
| + } {62 5 3969 54 5 3025 2 1 9}
|
| + do_test where-5.102 {
|
| + db eval {
|
| + SELECT w, x, y FROM t1 WHERE x IN (1,5) AND y IN (9,8,3025,1000,3969)
|
| + ORDER BY x DESC, y
|
| + }
|
| + } {54 5 3025 62 5 3969 2 1 9}
|
| + do_test where-5.103 {
|
| + db eval {
|
| + SELECT w, x, y FROM t1 WHERE x IN (1,5) AND y IN (9,8,3025,1000,3969)
|
| + ORDER BY x, y DESC
|
| + }
|
| + } {2 1 9 62 5 3969 54 5 3025}
|
| }
|
|
|
| # This procedure executes the SQL. Then it checks to see if the OP_Sort
|
| @@ -511,11 +549,16 @@ do_test where-6.7 {
|
| }
|
| } {1 100 4 2 99 9 3 98 16 nosort}
|
| ifcapable subquery {
|
| - do_test where-6.8 {
|
| + do_test where-6.8a {
|
| cksort {
|
| SELECT * FROM t3 WHERE a IN (3,5,7,1,9,4,2) ORDER BY a LIMIT 3
|
| }
|
| - } {1 100 4 2 99 9 3 98 16 sort}
|
| + } {1 100 4 2 99 9 3 98 16 nosort}
|
| + do_test where-6.8b {
|
| + cksort {
|
| + SELECT * FROM t3 WHERE a IN (3,5,7,1,9,4,2) ORDER BY a DESC LIMIT 3
|
| + }
|
| + } {9 92 100 7 94 64 5 96 36 nosort}
|
| }
|
| do_test where-6.9.1 {
|
| cksort {
|
| @@ -561,7 +604,7 @@ do_test where-6.9.7 {
|
| cksort {
|
| SELECT * FROM t3 WHERE a=1 AND c>0 ORDER BY c,a LIMIT 3
|
| }
|
| -} {1 100 4 sort}
|
| +} {1 100 4 nosort}
|
| do_test where-6.9.8 {
|
| cksort {
|
| SELECT * FROM t3 WHERE a=1 AND c>0 ORDER BY a DESC, c ASC LIMIT 3
|
| @@ -1079,41 +1122,44 @@ do_test where-13.12 {
|
| # When optimizing out ORDER BY clauses, make sure that trailing terms
|
| # of the ORDER BY clause do not reference other tables in a join.
|
| #
|
| +if {[permutation] != "no_optimization"} {
|
| do_test where-14.1 {
|
| execsql {
|
| - CREATE TABLE t8(a INTEGER PRIMARY KEY, b TEXT UNIQUE);
|
| - INSERT INTO t8 VALUES(1,'one');
|
| - INSERT INTO t8 VALUES(4,'four');
|
| + CREATE TABLE t8(a INTEGER PRIMARY KEY, b TEXT UNIQUE, c CHAR(100));
|
| + INSERT INTO t8(a,b) VALUES(1,'one');
|
| + INSERT INTO t8(a,b) VALUES(4,'four');
|
| }
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.a, y.b
|
| }
|
| -} {1/4 1/1 4/4 4/1 sort}
|
| +} {1/4 1/1 4/4 4/1 nosort}
|
| do_test where-14.2 {
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.a, y.b DESC
|
| }
|
| -} {1/1 1/4 4/1 4/4 sort}
|
| +} {1/1 1/4 4/1 4/4 nosort}
|
| do_test where-14.3 {
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.a, x.b
|
| }
|
| -} {1/1 1/4 4/1 4/4 nosort}
|
| +} {1/4 1/1 4/4 4/1 nosort}
|
| do_test where-14.4 {
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.a, x.b DESC
|
| }
|
| -} {1/1 1/4 4/1 4/4 nosort}
|
| +} {1/4 1/1 4/4 4/1 nosort}
|
| do_test where-14.5 {
|
| + # This test case changed from "nosort" to "sort". See ticket 2a5629202f.
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, x.a||x.b
|
| }
|
| -} {4/1 4/4 1/1 1/4 nosort}
|
| +} {/4/[14] 4/[14] 1/[14] 1/[14] sort/}
|
| do_test where-14.6 {
|
| + # This test case changed from "nosort" to "sort". See ticket 2a5629202f.
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, x.a||x.b DESC
|
| }
|
| -} {4/1 4/4 1/1 1/4 nosort}
|
| +} {/4/[14] 4/[14] 1/[14] 1/[14] sort/}
|
| do_test where-14.7 {
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, y.a||y.b
|
| @@ -1128,7 +1174,7 @@ do_test where-14.7.2 {
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, x.a, x.a||x.b
|
| }
|
| -} {4/1 4/4 1/1 1/4 nosort}
|
| +} {4/4 4/1 1/4 1/1 nosort}
|
| do_test where-14.8 {
|
| cksort {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, y.a||y.b DESC
|
| @@ -1154,6 +1200,7 @@ do_test where-14.12 {
|
| SELECT x.a || '/' || y.a FROM t8 x, t8 y ORDER BY x.b, y.a||x.b DESC
|
| }
|
| } {4/4 4/1 1/4 1/1 sort}
|
| +} ;# {permutation != "no_optimization"}
|
|
|
| # Ticket #2445.
|
| #
|
| @@ -1257,4 +1304,33 @@ do_test where-17.5 {
|
| }
|
| } {42 1 43 1}
|
|
|
| +# Ticket [be84e357c035d068135f20bcfe82761bbf95006b] 2013-09-03
|
| +# Segfault during query involving LEFT JOIN column in the ORDER BY clause.
|
| +#
|
| +do_execsql_test where-18.1 {
|
| + CREATE TABLE t181(a);
|
| + CREATE TABLE t182(b,c);
|
| + INSERT INTO t181 VALUES(1);
|
| + SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY c IS NULL;
|
| +} {1}
|
| +do_execsql_test where-18.2 {
|
| + SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY +c;
|
| +} {1}
|
| +do_execsql_test where-18.3 {
|
| + SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY c;
|
| +} {1}
|
| +do_execsql_test where-18.4 {
|
| + INSERT INTO t181 VALUES(1),(1),(1),(1);
|
| + SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY +c;
|
| +} {1}
|
| +do_execsql_test where-18.5 {
|
| + INSERT INTO t181 VALUES(2);
|
| + SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY c IS NULL, +a;
|
| +} {1 2}
|
| +do_execsql_test where-18.6 {
|
| + INSERT INTO t181 VALUES(2);
|
| + SELECT DISTINCT a FROM t181 LEFT JOIN t182 ON a=b ORDER BY +a, +c IS NULL;
|
| +} {1 2}
|
| +
|
| +
|
| finish_test
|
|
|