Fix an adverse interaction between the IS NOT NULL optimization (available

only with SQLITE_ENABLE_STAT3) and the transitive constraint processing.
Fix for ticket [d805526eae253]

FossilOrigin-Name: 3b30b75b342bb6b424ad2bf7cd841b2c88bdad44
This commit is contained in:
drh
2013-07-08 21:12:57 +00:00
parent d4b473b2cf
commit b5246e518b
4 changed files with 72 additions and 10 deletions
+55
View File
@@ -47,4 +47,59 @@ do_execsql_test transitive1-220 {
SELECT * FROM t2 WHERE a=b AND c=b AND c<=20 ORDER BY +a;
} {20 20 20 100 100 100}
# Test cases for ticket [[d805526eae253103] 2013-07-08
# "Incorrect join result or assertion fault due to transitive constraints"
#
do_execsql_test transitive1-300 {
CREATE TABLE t301(w INTEGER PRIMARY KEY, x);
CREATE TABLE t302(y INTEGER UNIQUE, z);
INSERT INTO t301 VALUES(1,2),(3,4),(5,6);
INSERT INTO t302 VALUES(1,3),(3,6),(5,7);
SELECT *
FROM t301 CROSS JOIN t302
WHERE w=y AND y IS NOT NULL
ORDER BY +w;
} {1 2 1 3 3 4 3 6 5 6 5 7}
do_execsql_test transitive1-301 {
SELECT *
FROM t301 CROSS JOIN t302
WHERE w=y AND y IS NOT NULL
ORDER BY w;
} {1 2 1 3 3 4 3 6 5 6 5 7}
do_execsql_test transitive1-310 {
SELECT *
FROM t301 CROSS JOIN t302 ON w=y
WHERE y>1
ORDER BY +w
} {3 4 3 6 5 6 5 7}
do_execsql_test transitive1-311 {
SELECT *
FROM t301 CROSS JOIN t302 ON w=y
WHERE y>1
ORDER BY w
} {3 4 3 6 5 6 5 7}
do_execsql_test transitive1-312 {
SELECT *
FROM t301 CROSS JOIN t302 ON w=y
WHERE y>1
ORDER BY w DESC
} {5 6 5 7 3 4 3 6}
do_execsql_test transitive1-320 {
SELECT *
FROM t301 CROSS JOIN t302 ON w=y
WHERE y BETWEEN 2 AND 4;
} {3 4 3 6}
do_execsql_test transitive1-331 {
SELECT *
FROM t301 CROSS JOIN t302 ON w=y
WHERE y BETWEEN 1 AND 4
ORDER BY w;
} {1 2 1 3 3 4 3 6}
do_execsql_test transitive1-332 {
SELECT *
FROM t301 CROSS JOIN t302 ON w=y
WHERE y BETWEEN 1 AND 4
ORDER BY w DESC;
} {3 4 3 6 1 2 1 3}
finish_test