diff options
author | drh <> | 2022-04-10 19:51:22 +0000 |
---|---|---|
committer | drh <> | 2022-04-10 19:51:22 +0000 |
commit | fcde633f7cd4e8c3de41a4f3250f45cd38f49490 (patch) | |
tree | ce58fdf0ac5a6214406e8b271c3277aa4e0ac61f /test/join7.test | |
parent | e21e36dd2cf71d4164bc188774fab5e4d2976cb6 (diff) | |
download | sqlite-fcde633f7cd4e8c3de41a4f3250f45cd38f49490.tar.gz sqlite-fcde633f7cd4e8c3de41a4f3250f45cd38f49490.zip |
When the left-most table of a RIGHT JOIN is implemented as a co-routine,
make sure all its columns are flushed to NULL when it finishes so that
they appear to be NULL during the RIGHT JOIN post-processing.
FossilOrigin-Name: f84b2beca719758979d7a5a63c3d16d5121a7518b3fbe5039af474a83dd569c2
Diffstat (limited to 'test/join7.test')
-rw-r--r-- | test/join7.test | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/test/join7.test b/test/join7.test index 019ac322f..b92bf3d9c 100644 --- a/test/join7.test +++ b/test/join7.test @@ -15,6 +15,7 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl +db nullvalue NULL do_execsql_test join7-1.1 { CREATE TABLE t1(a int,b int); INSERT INTO t1 VALUES(1,2),(1,3),(1,4); @@ -22,7 +23,8 @@ do_execsql_test join7-1.1 { CREATE TABLE t2(c int,d int); INSERT INTO t2 VALUES(3,33),(4,44),(5,55); CREATE INDEX t2c ON t2(c); - SELECT quote(b), quote(d) FROM t1 FULL OUTER JOIN t2 ON b=c ORDER BY +b; + CREATE VIEW dual AS SELECT 'x' AS dummy; + SELECT b, d FROM t1 FULL OUTER JOIN t2 ON b=c ORDER BY +b; } { NULL 55 2 NULL @@ -30,7 +32,7 @@ do_execsql_test join7-1.1 { 4 44 } do_execsql_test join7-1.2 { - SELECT quote(a), quote(c) FROM t1 FULL OUTER JOIN t2 ON b=c ORDER BY +b; + SELECT a, c FROM t1 FULL OUTER JOIN t2 ON b=c ORDER BY +b; } { NULL 5 1 NULL @@ -38,25 +40,36 @@ do_execsql_test join7-1.2 { 1 4 } do_execsql_test join7-1.3 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 FULL OUTER JOIN t2 ON b=c ORDER BY +b; + SELECT * FROM t1 FULL OUTER JOIN t2 ON b=c ORDER BY +b; } { NULL NULL 5 55 1 2 NULL NULL 1 3 3 33 1 4 4 44 } -do_execsql_test join7-1.4 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 RIGHT OUTER JOIN t2 ON b=c ORDER BY +b; +do_execsql_test join7-1.4a { + SELECT * FROM t1 RIGHT OUTER JOIN t2 ON b=c ORDER BY +b; } { NULL NULL 5 55 1 3 3 33 1 4 4 44 } +do_execsql_test join7-1.4b { + SELECT * FROM dual JOIN t1 ON true RIGHT OUTER JOIN t2 ON b=c ORDER BY +b; +} { + NULL NULL NULL 5 55 + x 1 3 3 33 + x 1 4 4 44 +} +do_execsql_test join7-1.4c { + SELECT * FROM dual CROSS JOIN t1 RIGHT OUTER JOIN t2 ON b=c ORDER BY +b; +} { + NULL NULL NULL 5 55 + x 1 3 3 33 + x 1 4 4 44 +} do_execsql_test join7-1.5 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 LEFT OUTER JOIN t2 ON b=c ORDER BY +b; + SELECT * FROM t1 LEFT OUTER JOIN t2 ON b=c ORDER BY +b; } { 1 2 NULL NULL 1 3 3 33 @@ -64,8 +77,7 @@ do_execsql_test join7-1.5 { } do_execsql_test join7-2.1 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 FULL OUTER JOIN t2 ON b=c AND a=1 ORDER BY +b; + SELECT * FROM t1 FULL OUTER JOIN t2 ON b=c AND a=1 ORDER BY +b; } { NULL NULL 5 55 1 2 NULL NULL @@ -73,24 +85,21 @@ do_execsql_test join7-2.1 { 1 4 4 44 } do_execsql_test join7-2.2 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 FULL OUTER JOIN t2 ON b=c WHERE a=1 ORDER BY +b; + SELECT * FROM t1 FULL OUTER JOIN t2 ON b=c WHERE a=1 ORDER BY +b; } { 1 2 NULL NULL 1 3 3 33 1 4 4 44 } do_execsql_test join7-2.3 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 FULL OUTER JOIN t2 ON b=c WHERE a IS NULL ORDER BY +d; + SELECT * FROM t1 FULL OUTER JOIN t2 ON b=c WHERE a IS NULL ORDER BY +d; } { NULL NULL 3 33 NULL NULL 4 44 NULL NULL 5 55 } do_execsql_test join7-2.4 { - SELECT quote(a), quote(b), quote(c), quote(d) - FROM t1 FULL OUTER JOIN t2 ON b=c AND d<=0 ORDER BY +b, +d; + SELECT * FROM t1 FULL OUTER JOIN t2 ON b=c AND d<=0 ORDER BY +b, +d; } { NULL NULL 3 33 NULL NULL 4 44 @@ -100,6 +109,4 @@ do_execsql_test join7-2.4 { 1 4 NULL NULL } - - finish_test |