mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix the query flattener so that it refuses a flattening that might leave both
an inner-join and outer-join ON-clause constraint (or equivalent) on the same term of the FROM clause. FossilOrigin-Name: f6c4fb48b65c2e8659aa0a1119c330e8bad5e42b2db2030850bfc9c04afef5c8
This commit is contained in:
@ -1067,4 +1067,38 @@ do_catchsql_test join-26.1 {
|
||||
SELECT * FROM t5 JOIN ((t4 JOIN (t5 JOIN t6)) t7);
|
||||
} {/1 {.*}/}
|
||||
|
||||
# 2022-06-09 Invalid subquery flattening caused by
|
||||
# check-in 3f45007d544e5f78 and detected by dbsqlfuzz
|
||||
#
|
||||
reset_db
|
||||
do_execsql_test join-27.1 {
|
||||
CREATE TABLE t1(a INT,b INT,c INT); INSERT INTO t1 VALUES(NULL,NULL,NULL);
|
||||
CREATE TABLE t2(d INT,e INT); INSERT INTO t2 VALUES(NULL,NULL);
|
||||
CREATE INDEX x2 ON t1(c,b);
|
||||
CREATE TABLE t3(x INT); INSERT INTO t3 VALUES(NULL);
|
||||
}
|
||||
do_execsql_test join-27.2 {
|
||||
WITH t99(b) AS MATERIALIZED (
|
||||
SELECT b FROM t2 LEFT JOIN t1 ON c IN (SELECT x FROM t3)
|
||||
)
|
||||
SELECT 5 FROM t2 JOIN t99 ON b IN (1,2,3);
|
||||
} {}
|
||||
do_execsql_test join-27.3 {
|
||||
WITH t99(b) AS NOT MATERIALIZED (
|
||||
SELECT b FROM t2 LEFT JOIN t1 ON c IN (SELECT x FROM t3)
|
||||
)
|
||||
SELECT 5 FROM t2 JOIN t99 ON b IN (1,2,3);
|
||||
} {}
|
||||
do_execsql_test join-27.4 {
|
||||
WITH t99(b) AS (SELECT b FROM t2 LEFT JOIN t1 ON c IN (SELECT x FROM t3))
|
||||
SELECT 5 FROM t2 JOIN t99 ON b IN (1,2,3);
|
||||
} {}
|
||||
do_execsql_test join-27.5 {
|
||||
SELECT 5
|
||||
FROM t2 JOIN (
|
||||
SELECT b FROM t2 LEFT JOIN t1 ON c IN (SELECT x FROM t3)
|
||||
) AS t99 ON b IN (1,2,3);
|
||||
} {}
|
||||
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user