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:
@ -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
|
||||
|
Reference in New Issue
Block a user