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

New test cases for cursor renumbering in the UNION ALL query flattener.

FossilOrigin-Name: 270babf259750f3d6c490a08df608a101b24b3c06b9e8a938a0e09a854af6a20
This commit is contained in:
drh
2020-12-30 13:10:57 +00:00
parent a06eafc8fc
commit c4403ca61a
3 changed files with 50 additions and 7 deletions

View File

@ -283,4 +283,47 @@ do_execsql_test 4.3 {
123 t1_a 456 t3_a 123 t1_a {} {}
}
# 2020-12-30: dbsqlfuzz find
reset_db
do_execsql_test 5.1 {
CREATE TABLE t1_a(a INTEGER PRIMARY KEY, b TEXT);
INSERT INTO t1_a VALUES(1,'one');
INSERT INTO t1_a VALUES(0,NULL);
CREATE TABLE t1_b(c INTEGER PRIMARY KEY, d TEXT);
INSERT INTO t1_b VALUES(2,'two');
INSERT INTO t1_b VALUES(5,'five');
CREATE TABLE t1_c(e INTEGER PRIMARY KEY, f TEXT);
INSERT INTO t1_c VALUES(3,'three');
INSERT INTO t1_c VALUES(6,'six');
CREATE TABLE t2(k,v);
INSERT INTO t2 VALUES(5,'v');
INSERT INTO t2 VALUES(4,'iv');
INSERT INTO t2 VALUES(3,'iii');
INSERT INTO t2 VALUES(2,'ii');
CREATE TABLE t3_a(k INTEGER PRIMARY KEY, v TEXT);
INSERT INTO t3_a VALUES(2,'ii');
INSERT INTO t3_a VALUES(4,'iv');
CREATE TABLE t3_b(k INTEG5R PRIMARY KEY, v TEXT);
INSERT INTO t3_b VALUES(NULL,'iii');
INSERT INTO t3_b VALUES(NULL,'v');
CREATE VIEW t1 AS
SELECT a, b FROM t1_a UNION ALL
SELECT c, d FROM t1_b UNION ALL
SELECT e, f FROM t1_c;
CREATE VIEW t3 AS
SELECT * FROM t3_a
UNION ALL
SELECT * FROM t3_b;
CREATE TRIGGER t3_insert INSTEAD OF INSERT ON t3 BEGIN
INSERT INTO t3_a SELECT new.k, new.v WHERE (new.k%2)==0;
INSERT INTO t3_b SELECT new.k, new.v WHERE (new.k%2)==1;
END;
} {}
do_execsql_test 5.10 {
SELECT *, '+' FROM t1 LEFT JOIN t2 ON (a NOT IN(SELECT v FROM t1, t3 WHERE a=k)=NOT EXISTS(SELECT 1 FROM t1 LEFT JOIN t3 ON (a=k)));
} {0 {} {} {} + 1 one {} {} + 2 two {} {} + 5 five {} {} + 3 three {} {} + 6 six {} {} +}
do_execsql_test 5.20 {
SELECT *, '+' FROM t1 LEFT JOIN t3 ON (a NOT IN(SELECT v FROM t1 LEFT JOIN t2 ON (a=k))=k);
} {0 {} {} {} + 1 one {} {} + 2 two {} {} + 5 five {} {} + 3 three {} {} + 6 six {} {} +}
finish_test