aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordrh <>2022-05-30 17:33:22 +0000
committerdrh <>2022-05-30 17:33:22 +0000
commit404bf6bac6569664b23a35c22fbb18611b7c6b7c (patch)
treed8f653cac8874c30145106934d76dd684a487cd3 /test
parent1943005f626fbefa1fb32f77fc671ee07c52b11f (diff)
downloadsqlite-404bf6bac6569664b23a35c22fbb18611b7c6b7c.tar.gz
sqlite-404bf6bac6569664b23a35c22fbb18611b7c6b7c.zip
For an outer join, then ON-clause constraints need to be evaluated at just
the right moment - not too early and not too late. Fix for the problem reported by [forum:/forumpost/3902c7b833|forum post 3902c7b833]. FossilOrigin-Name: 3869fd9a2b9483cbbf83d8f369c1744abc42f12e63abba402be35dd7e136161c
Diffstat (limited to 'test')
-rw-r--r--test/join8.test37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/join8.test b/test/join8.test
index cccb167ac..554f04562 100644
--- a/test/join8.test
+++ b/test/join8.test
@@ -445,4 +445,41 @@ do_execsql_test join8-14020 {
- 2 4
}
+# 2022-05-30
+# https://sqlite.org/forum/forumpost/3902c7b833
+#
+reset_db
+do_execsql_test join8-15000 {
+ CREATE TABLE t1(x INT);
+ CREATE TABLE t2(y INT);
+ CREATE TABLE t3(z INT);
+ INSERT INTO t1 VALUES(10);
+ INSERT INTO t3 VALUES(20),(30);
+}
+do_execsql_test join8-15010 {
+ SELECT * FROM t1 LEFT JOIN t2 ON true JOIN t3 ON t2.y IS NOT NULL;
+} {}
+do_execsql_test join8-15020 {
+ SELECT * FROM t1 LEFT JOIN t2 ON true JOIN t3 ON t2.y IS NOT NULL
+ WHERE (t3.z!=400 AND t3.z!=500 AND t3.z!=600);
+} {}
+do_execsql_test join8-15100 {
+ PRAGMA automatic_index = 0;
+ CREATE TABLE t4(x TEXT);
+ CREATE TABLE t5(y TEXT);
+ CREATE TABLE t6(z TEXT);
+ INSERT INTO t4 VALUES('a'), ('b');
+ INSERT INTO t5 VALUES('b'), ('c');
+ INSERT INTO t6 VALUES('a'), ('d');
+} {}
+db null -
+do_execsql_test join8-15110 {
+ SELECT * FROM t4 LEFT JOIN t5 ON x=y LEFT JOIN t6 ON (x=z) ORDER BY +x;
+} {a - a b b -}
+do_execsql_test join8-15120 {
+ SELECT * FROM t4 LEFT JOIN t5 ON x=y LEFT JOIN t6 ON (x=z)
+ WHERE t5.y!='x' AND t4.x!='x';
+} {b b -}
+
+
finish_test