1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Fix faulty asserts in the code generator.

Ticket [c52b09c7f38903b1]

FossilOrigin-Name: 01cdc590f7894ea23ee0d674747d7ebf8196efbef3c87d47e72dbc1ab6ae2883
This commit is contained in:
drh
2019-07-24 23:15:19 +00:00
parent 9443dbc493
commit 00c12a51e3
4 changed files with 84 additions and 12 deletions

View File

@ -1100,4 +1100,69 @@ do_execsql_test select1-17.3 {
UNION ALL SELECT * FROM t2 WHERE y=3 ORDER BY y,z LIMIT 4);
} {1 2 3}
# 2019-07-24 Ticket https://sqlite.org/src/tktview/c52b09c7f38903b1311
#
do_execsql_test select1-18.1 {
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1(c);
CREATE TABLE t2(x PRIMARY KEY, y);
INSERT INTO t1(c) VALUES(123);
INSERT INTO t2(x) VALUES(123);
SELECT x FROM t2, t1 WHERE x BETWEEN c AND null OR x AND
x IN ((SELECT x FROM (SELECT x FROM t2, t1
WHERE x BETWEEN (SELECT x FROM (SELECT x COLLATE rtrim
FROM t2, t1 WHERE x BETWEEN c AND null
OR x AND x IN (c)), t1 WHERE x BETWEEN c AND null
OR x AND x IN (c)) AND null
OR NOT EXISTS(SELECT -4.81 FROM t1, t2 WHERE x BETWEEN c AND null
OR x AND x IN ((SELECT x FROM (SELECT x FROM t2, t1
WHERE x BETWEEN (SELECT x FROM (SELECT x BETWEEN c AND null
OR x AND x IN (c)), t1 WHERE x BETWEEN c AND null
OR x AND x IN (c)) AND null
OR x AND x IN (c)), t1 WHERE x BETWEEN c AND null
OR x AND x IN (c)))) AND x IN (c)
), t1 WHERE x BETWEEN c AND null
OR x AND x IN (c)));
} {}
do_execsql_test select1-18.2 {
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1(c);
CREATE TABLE t2(x PRIMARY KEY, y);
INSERT INTO t1(c) VALUES(123);
INSERT INTO t2(x) VALUES(123);
SELECT x FROM t2, t1 WHERE x BETWEEN c AND (c+1) OR x AND
x IN ((SELECT x FROM (SELECT x FROM t2, t1
WHERE x BETWEEN (SELECT x FROM (SELECT x COLLATE rtrim
FROM t2, t1 WHERE x BETWEEN c AND (c+1)
OR x AND x IN (c)), t1 WHERE x BETWEEN c AND (c+1)
OR x AND x IN (c)) AND (c+1)
OR NOT EXISTS(SELECT -4.81 FROM t1, t2 WHERE x BETWEEN c AND (c+1)
OR x AND x IN ((SELECT x FROM (SELECT x FROM t2, t1
WHERE x BETWEEN (SELECT x FROM (SELECT x BETWEEN c AND (c+1)
OR x AND x IN (c)), t1 WHERE x BETWEEN c AND (c+1)
OR x AND x IN (c)) AND (c+1)
OR x AND x IN (c)), t1 WHERE x BETWEEN c AND (c+1)
OR x AND x IN (c)))) AND x IN (c)
), t1 WHERE x BETWEEN c AND (c+1)
OR x AND x IN (c)));
} {123}
do_execsql_test select1-18.3 {
SELECT 1 FROM t1 WHERE (
SELECT 2 FROM t2 WHERE (
SELECT 3 FROM (
SELECT x FROM t2 WHERE x=c OR x=(SELECT x FROM (VALUES(0)))
) WHERE x>c OR x=c
)
);
} {1}
do_execsql_test select1-18.4 {
SELECT 1 FROM t1, t2 WHERE (
SELECT 3 FROM (
SELECT x FROM t2 WHERE x=c OR x=(SELECT x FROM (VALUES(0)))
) WHERE x>c OR x=c
);
} {1}
finish_test