summaryrefslogtreecommitdiffstats
path: root/test/joinD.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/joinD.test')
-rw-r--r--test/joinD.test35136
1 files changed, 35136 insertions, 0 deletions
diff --git a/test/joinD.test b/test/joinD.test
new file mode 100644
index 0000000..e4e4553
--- /dev/null
+++ b/test/joinD.test
@@ -0,0 +1,35136 @@
+# 2022-05-04
+# revised 2022-05-31
+#
+# The author disclaims copyright to this source code. In place of
+# a legal notice, here is a blessing:
+#
+# May you do good and not evil.
+# May you find forgiveness for yourself and forgive others.
+# May you share freely, never taking more than you give.
+#
+#***********************************************************************
+#
+# TESTRUNNER: slow
+#
+# This file implements tests for JOINs that use Bloom filters.
+#
+# The test case output is (mostly) all generated by PostgreSQL 14. This
+# test module was created as follows:
+#
+# 1. Run a TCL script (included at the bottom of this file) that
+# generates an input script for "psql" that will run man
+# diverse tests on joins.
+#
+# 2. Run the script from step (1) through psql and collect the
+# output.
+#
+# 3. Make a few minor global search-and-replace operations to convert
+# the psql output into a form suitable for this test module.
+#
+# 4. Add this header, and the script content at the footer.
+#
+# A few extra tests that were not generated from postgresql output are
+# added at the end.
+#
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+db nullvalue -
+db eval {
+ CREATE TABLE t1(a INT, b INT, c INT, d INT);
+ WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
+ INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
+ CREATE TABLE t2(b INT, x INT);
+ INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
+ CREATE INDEX t2b ON t2(b);
+ CREATE TABLE t3(c INT, y INT);
+ INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
+ CREATE INDEX t3c ON t3(c);
+ CREATE TABLE t4(d INT, z INT);
+ INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
+ CREATE INDEX t4d ON t4(d);
+ INSERT INTO t1(a,b,c,d) VALUES
+ (96,NULL,296,396),
+ (97,197,NULL,397),
+ (98,198,298,NULL),
+ (99,NULL,NULL,NULL);
+ ANALYZE;
+}
+do_execsql_test joinD-1 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-2 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-3 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-4 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-5 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-6 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-7 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-8 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-9 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-10 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-11 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-12 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-13 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-14 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-15 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-16 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-17 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-18 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-19 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-20 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-21 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-22 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-23 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-24 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-25 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-26 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-27 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-28 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-29 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-30 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-31 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-32 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-33 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-34 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-35 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-36 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-37 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-38 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-39 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-40 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-41 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-42 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-43 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-44 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-45 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-46 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-47 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-48 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-49 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-50 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-51 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-52 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-53 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-54 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-55 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-56 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-57 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-58 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-59 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-60 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-61 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-62 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-63 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-64 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-65 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-66 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-67 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-68 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-69 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-70 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-71 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-72 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-73 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-74 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-75 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-76 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-77 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-78 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-79 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-80 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-81 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-82 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-83 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-84 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-85 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-86 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-87 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-88 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-89 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-90 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-91 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-92 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-93 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-94 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-95 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-96 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-97 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-98 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-99 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-100 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-101 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-102 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-103 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-104 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-105 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-106 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-107 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-108 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-109 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-110 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-111 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-112 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-113 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-114 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-115 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-116 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-117 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-118 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-119 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-120 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-121 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-122 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-123 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-124 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-125 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-126 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-127 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-128 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-129 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-130 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-131 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-132 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-133 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-134 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-135 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-136 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-137 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-138 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-139 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-140 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-141 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-142 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-143 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-144 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-145 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-146 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-147 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-148 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-149 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-150 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-151 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-152 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-153 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-154 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-155 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-156 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-157 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-158 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-159 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-160 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-161 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-162 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-163 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-164 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-165 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-166 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-167 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-168 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-169 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-170 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-171 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-172 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-173 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-174 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-175 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-176 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-177 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-178 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-179 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-180 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-181 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-182 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-183 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-184 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-185 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-186 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-187 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-188 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-189 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-190 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-191 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-192 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-193 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-194 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-195 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-196 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-197 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-198 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-199 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-200 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-201 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-202 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-203 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-204 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-205 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-206 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-207 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-208 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-209 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-210 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-211 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-212 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-213 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-214 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-215 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-216 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-217 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-218 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-219 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-220 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-221 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-222 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-223 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-224 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-225 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-226 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-227 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-228 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-229 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-230 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-231 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-232 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-233 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-234 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-235 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-236 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-237 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-238 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-239 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-240 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-241 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-242 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-243 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-244 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-245 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-246 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-247 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-248 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-249 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-250 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-251 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-252 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-253 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-254 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-255 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-256 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-257 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-258 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-259 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-260 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-261 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-262 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-263 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-264 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-265 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-266 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-267 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-268 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-269 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-270 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-271 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-272 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-273 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-274 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-275 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-276 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-277 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-278 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-279 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-280 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-281 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-282 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-283 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-284 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-285 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-286 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-287 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-288 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-289 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-290 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-291 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-292 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-293 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-294 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-295 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-296 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-297 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-298 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-299 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-300 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-301 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-302 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-303 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-304 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-305 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-306 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-307 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-308 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-309 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-310 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-311 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-312 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-313 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-314 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-315 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-316 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-317 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-318 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-319 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-320 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-321 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-322 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-323 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-324 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-325 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-326 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-327 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-328 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-329 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-330 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-331 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-332 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-333 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-334 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-335 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-336 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-337 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-338 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-339 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-340 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-341 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-342 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-343 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-344 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-345 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-346 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-347 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-348 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-349 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-350 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-351 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-352 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-353 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-354 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-355 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-356 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-357 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-358 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-359 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-360 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-361 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-362 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-363 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-364 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-365 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-366 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-367 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-368 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-369 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-370 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-371 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-372 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-373 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-374 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-375 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-376 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-377 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-378 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-379 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-380 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-381 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-382 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-383 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-384 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-385 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-386 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-387 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-388 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-389 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-390 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-391 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-392 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-393 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-394 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-395 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-396 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-397 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-398 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-399 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-400 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-401 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-402 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-403 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-404 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-405 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-406 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-407 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-408 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-409 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-410 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-411 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-412 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-413 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-414 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-415 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-416 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-417 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-418 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-419 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-420 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-421 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-422 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-423 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-424 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-425 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-426 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-427 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-428 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-429 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-430 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-431 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-432 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-433 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-434 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-435 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-436 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-437 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-438 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-439 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-440 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-441 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-442 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-443 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-444 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-445 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-446 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-447 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-448 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-449 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-450 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-451 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-452 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-453 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-454 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-455 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-456 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-457 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-458 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-459 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-460 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-461 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-462 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-463 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-464 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-465 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-466 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-467 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-468 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-469 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-470 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-471 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-472 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-473 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-474 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-475 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-476 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-477 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-478 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-479 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-480 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-481 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-482 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-483 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-484 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-485 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-486 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-487 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-488 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-489 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-490 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-491 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-492 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-493 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-494 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-495 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-496 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-497 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-498 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-499 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-500 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-501 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-502 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-503 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-504 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-505 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-506 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-507 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-508 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-509 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-510 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-511 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-512 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-513 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-514 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-515 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-516 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-517 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-518 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-519 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-520 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-521 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-522 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-523 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-524 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-525 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-526 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-527 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-528 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-529 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-530 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-531 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-532 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-533 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-534 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-535 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-536 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-537 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-538 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-539 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-540 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-541 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-542 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-543 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-544 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-545 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-546 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-547 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-548 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-549 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-550 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-551 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-552 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-553 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-554 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-555 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-556 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-557 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-558 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-559 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-560 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-561 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-562 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-563 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-564 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-565 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-566 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-567 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-568 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-569 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-570 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-571 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-572 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-573 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-574 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-575 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-576 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-577 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-578 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-579 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-580 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-581 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-582 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-583 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-584 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-585 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-586 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-587 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-588 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-589 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-590 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-591 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-592 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-593 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-594 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-595 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-596 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-597 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-598 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-599 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-600 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-601 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-602 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-603 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-604 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-605 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-606 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-607 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-608 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-609 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-610 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-611 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-612 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-613 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-614 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-615 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-616 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-617 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-618 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-619 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-620 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-621 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-622 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-623 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-624 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-625 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-626 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-627 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-628 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-629 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-630 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-631 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-632 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-633 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-634 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-635 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-636 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-637 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-638 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-639 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-640 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-641 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-642 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-643 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-644 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-645 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-646 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-647 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-648 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-649 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-650 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-651 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-652 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-653 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-654 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-655 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-656 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-657 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-658 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-659 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-660 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-661 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-662 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-663 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-664 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-665 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-666 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-667 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-668 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-669 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-670 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-671 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-672 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-673 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-674 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-675 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-676 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-677 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-678 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-679 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-680 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-681 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-682 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-683 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-684 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-685 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-686 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-687 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-688 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-689 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-690 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-691 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-692 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-693 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-694 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-695 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-696 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-697 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-698 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-699 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-700 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-701 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-702 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-703 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-704 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-705 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-706 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-707 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-708 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-709 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-710 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-711 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-712 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-713 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-714 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-715 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-716 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-717 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-718 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-719 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-720 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-721 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-722 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-723 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-724 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-725 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-726 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-727 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-728 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-729 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-730 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-731 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-732 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-733 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-734 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-735 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-736 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-737 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-738 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-739 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-740 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-741 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-742 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-743 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-744 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-745 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-746 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-747 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-748 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-749 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-750 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-751 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-752 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-753 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-754 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-755 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-756 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-757 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-758 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-759 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-760 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-761 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-762 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-763 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-764 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-765 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-766 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-767 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-768 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-769 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-770 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-771 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-772 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-773 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-774 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-775 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-776 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-777 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-778 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-779 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-780 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-781 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-782 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-783 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-784 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-785 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-786 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-787 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-788 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-789 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-790 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-791 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-792 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-793 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-794 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-795 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-796 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-797 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-798 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-799 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-800 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-801 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-802 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-803 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-804 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-805 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-806 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-807 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-808 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-809 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-810 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-811 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-812 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-813 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-814 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-815 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-816 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-817 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-818 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-819 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-820 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-821 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-822 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-823 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-824 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-825 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-826 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-827 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-828 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 315 15
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 345 45
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 375 75
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-829 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-830 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-831 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-832 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-833 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-834 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-835 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-836 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-837 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-838 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-839 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-840 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-841 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-842 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-843 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-844 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-845 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-846 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-847 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-848 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-849 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-850 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-851 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-852 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-853 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-854 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-855 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-856 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-857 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-858 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-859 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-860 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-861 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-862 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-863 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-864 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-865 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-866 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-867 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-868 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-869 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-870 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-871 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-872 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-873 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-874 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-875 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-876 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-877 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-878 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-879 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-880 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-881 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-882 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-883 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-884 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-885 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-886 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-887 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-888 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+}
+do_execsql_test joinD-889 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-890 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-891 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-892 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-893 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-894 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-895 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-896 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-897 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-898 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-899 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-900 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - 203 3 - -
+ - - - - - - 209 9 - -
+ - - - - - - 215 15 - -
+ - - - - - - 221 21 - -
+ - - - - - - 227 27 - -
+ - - - - - - 233 33 - -
+ - - - - - - 239 39 - -
+ - - - - - - 245 45 - -
+ - - - - - - 251 51 - -
+ - - - - - - 257 57 - -
+ - - - - - - 263 63 - -
+ - - - - - - 269 69 - -
+ - - - - - - 275 75 - -
+ - - - - - - 281 81 - -
+ - - - - - - 287 87 - -
+ - - - - - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 315 15
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 345 45
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 375 75
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-901 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-902 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-903 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-904 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-905 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-906 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-907 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-908 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-909 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-910 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-911 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-912 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-913 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-914 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-915 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-916 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-917 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-918 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-919 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-920 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-921 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-922 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-923 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-924 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-925 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-926 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-927 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-928 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-929 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-930 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-931 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-932 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-933 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-934 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-935 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-936 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-937 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-938 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-939 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-940 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-941 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-942 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-943 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-944 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-945 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-946 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-947 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-948 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-949 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-950 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-951 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-952 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-953 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-954 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-955 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-956 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-957 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-958 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-959 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-960 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-961 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-962 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-963 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ INNER JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-964 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-965 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-966 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-967 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-968 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-969 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-970 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-971 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-972 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-973 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-974 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-975 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-976 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-977 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-978 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-979 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-980 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-981 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-982 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-983 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-984 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-985 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-986 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-987 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-988 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+}
+do_execsql_test joinD-989 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-990 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-991 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-992 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-993 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-994 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-995 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-996 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-997 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-998 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-999 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1000 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1001 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1002 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-1003 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1004 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1005 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1006 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1007 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1008 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1009 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1010 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1011 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1012 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1013 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1014 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1015 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1016 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1017 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1018 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1019 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1020 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1021 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1022 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1023 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1024 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-1025 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1026 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1027 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-1028 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1029 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1030 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1031 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ LEFT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1032 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1033 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1034 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1035 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1036 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1037 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1038 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1039 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1040 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1041 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1042 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1043 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1044 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1045 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1046 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1047 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1048 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1049 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1050 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1051 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1052 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1053 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1054 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1055 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1056 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1057 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1058 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-1059 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-1060 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1061 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1062 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1063 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1064 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1065 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1066 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1067 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1068 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1069 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1070 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1071 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1072 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1073 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1074 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1075 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1076 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1077 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1078 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1079 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1080 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1081 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1082 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1083 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1084 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1085 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1086 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1087 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1088 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1089 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1090 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1091 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1092 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-1093 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1094 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1095 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1096 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1097 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1098 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1099 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ RIGHT JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1100 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1101 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1102 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1103 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1104 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+ - - - - - - - - 305 5
+ - - - - - - - - 310 10
+ - - - - - - - - 320 20
+ - - - - - - - - 325 25
+ - - - - - - - - 335 35
+ - - - - - - - - 340 40
+ - - - - - - - - 350 50
+ - - - - - - - - 355 55
+ - - - - - - - - 365 65
+ - - - - - - - - 370 70
+ - - - - - - - - 380 80
+ - - - - - - - - 385 85
+ - - - - - - - - 395 95
+}
+do_execsql_test joinD-1105 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1106 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1107 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1108 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1109 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1110 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1111 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1112 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1113 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1114 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1115 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1116 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ INNER JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1117 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1118 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1119 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1120 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ INNER JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1121 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1122 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1123 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1124 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1125 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-1126 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+}
+do_execsql_test joinD-1127 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1128 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1129 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1130 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1131 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1132 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ LEFT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1133 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1134 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1135 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1136 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ LEFT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1137 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1138 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1139 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1140 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1141 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1142 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1143 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1144 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1145 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1146 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1147 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1148 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ RIGHT JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1149 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1150 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1151 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1152 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ RIGHT JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1153 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1154 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1155 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE (t2.x>0 OR t2.x IS NULL)
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1156 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON true
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t1.b=t2.b AND t2.x>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1157 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 3 103 203 303 - - 203 3 - -
+ 6 106 206 306 106 6 206 6 - -
+ 9 109 209 309 - - 209 9 - -
+ 12 112 212 312 112 12 212 12 - -
+ 15 115 215 315 - - 215 15 315 15
+ 18 118 218 318 118 18 218 18 - -
+ 21 121 221 321 - - 221 21 - -
+ 24 124 224 324 124 24 224 24 - -
+ 27 127 227 327 - - 227 27 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 33 133 233 333 - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ 39 139 239 339 - - 239 39 - -
+ 42 142 242 342 142 42 242 42 - -
+ 45 145 245 345 - - 245 45 345 45
+ 48 148 248 348 148 48 248 48 - -
+ 51 151 251 351 - - 251 51 - -
+ 54 154 254 354 154 54 254 54 - -
+ 57 157 257 357 - - 257 57 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 63 163 263 363 - - 263 63 - -
+ 66 166 266 366 166 66 266 66 - -
+ 69 169 269 369 - - 269 69 - -
+ 72 172 272 372 172 72 272 72 - -
+ 75 175 275 375 - - 275 75 375 75
+ 78 178 278 378 178 78 278 78 - -
+ 81 181 281 381 - - 281 81 - -
+ 84 184 284 384 184 84 284 84 - -
+ 87 187 287 387 - - 287 87 - -
+ 90 190 290 390 190 90 290 90 390 90
+ 93 193 293 393 - - 293 93 - -
+}
+do_execsql_test joinD-1158 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t3.y>0 OR t3.y IS NULL
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1159 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 5 105 205 305 - - - - 305 5
+ 10 110 210 310 110 10 - - 310 10
+ 15 115 215 315 - - 215 15 315 15
+ 20 120 220 320 120 20 - - 320 20
+ 25 125 225 325 - - - - 325 25
+ 30 130 230 330 130 30 230 30 330 30
+ 35 135 235 335 - - - - 335 35
+ 40 140 240 340 140 40 - - 340 40
+ 45 145 245 345 - - 245 45 345 45
+ 50 150 250 350 150 50 - - 350 50
+ 55 155 255 355 - - - - 355 55
+ 60 160 260 360 160 60 260 60 360 60
+ 65 165 265 365 - - - - 365 65
+ 70 170 270 370 170 70 - - 370 70
+ 75 175 275 375 - - 275 75 375 75
+ 80 180 280 380 180 80 - - 380 80
+ 85 185 285 385 - - - - 385 85
+ 90 190 290 390 190 90 290 90 390 90
+ 95 195 295 395 - - - - 395 95
+}
+do_execsql_test joinD-1160 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z IS NULL OR t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+}
+do_execsql_test joinD-1161 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1162 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t4.z>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 15 115 215 315 - - 215 15 315 15
+ 30 130 230 330 130 30 230 30 330 30
+ 45 145 245 345 - - 245 45 345 45
+ 60 160 260 360 160 60 260 60 360 60
+ 75 175 275 375 - - 275 75 375 75
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1163 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
+ WHERE t2.x>0 AND t3.y>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1164 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b=t2.b
+ FULL JOIN t3 ON t1.c=t3.c
+ FULL JOIN t4 ON t1.d=t4.d
+ WHERE t2.x>0 AND t3.y>0 AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ 60 160 260 360 160 60 260 60 360 60
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1165 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 0 100 200 300 - - - - - -
+ 1 101 201 301 - - - - - -
+ 2 102 202 302 102 2 - - - -
+ 3 103 203 303 - - 203 3 - -
+ 4 104 204 304 104 4 - - - -
+ 5 105 205 305 - - - - 305 5
+ 6 106 206 306 106 6 206 6 - -
+ 7 107 207 307 - - - - - -
+ 8 108 208 308 108 8 - - - -
+ 9 109 209 309 - - 209 9 - -
+ 10 110 210 310 110 10 - - 310 10
+ 11 111 211 311 - - - - - -
+ 12 112 212 312 112 12 212 12 - -
+ 13 113 213 313 - - - - - -
+ 14 114 214 314 114 14 - - - -
+ 15 115 215 315 - - 215 15 315 15
+ 16 116 216 316 116 16 - - - -
+ 17 117 217 317 - - - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 19 119 219 319 - - - - - -
+ 20 120 220 320 120 20 - - 320 20
+ 21 121 221 321 - - 221 21 - -
+ 22 122 222 322 122 22 - - - -
+ 23 123 223 323 - - - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 25 125 225 325 - - - - 325 25
+ 26 126 226 326 126 26 - - - -
+ 27 127 227 327 - - 227 27 - -
+ 28 128 228 328 128 28 - - - -
+ 29 129 229 329 - - - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 31 131 231 331 - - - - - -
+ 32 132 232 332 132 32 - - - -
+ 33 133 233 333 - - 233 33 - -
+ 34 134 234 334 134 34 - - - -
+ 35 135 235 335 - - - - 335 35
+ 36 136 236 336 136 36 236 36 - -
+ 37 137 237 337 - - - - - -
+ 38 138 238 338 138 38 - - - -
+ 39 139 239 339 - - 239 39 - -
+ 40 140 240 340 140 40 - - 340 40
+ 41 141 241 341 - - - - - -
+ 42 142 242 342 142 42 242 42 - -
+ 43 143 243 343 - - - - - -
+ 44 144 244 344 144 44 - - - -
+ 45 145 245 345 - - 245 45 345 45
+ 46 146 246 346 146 46 - - - -
+ 47 147 247 347 - - - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 49 149 249 349 - - - - - -
+ 50 150 250 350 150 50 - - 350 50
+ 51 151 251 351 - - 251 51 - -
+ 52 152 252 352 152 52 - - - -
+ 53 153 253 353 - - - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 55 155 255 355 - - - - 355 55
+ 56 156 256 356 156 56 - - - -
+ 57 157 257 357 - - 257 57 - -
+ 58 158 258 358 158 58 - - - -
+ 59 159 259 359 - - - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 61 161 261 361 - - - - - -
+ 62 162 262 362 162 62 - - - -
+ 63 163 263 363 - - 263 63 - -
+ 64 164 264 364 164 64 - - - -
+ 65 165 265 365 - - - - 365 65
+ 66 166 266 366 166 66 266 66 - -
+ 67 167 267 367 - - - - - -
+ 68 168 268 368 168 68 - - - -
+ 69 169 269 369 - - 269 69 - -
+ 70 170 270 370 170 70 - - 370 70
+ 71 171 271 371 - - - - - -
+ 72 172 272 372 172 72 272 72 - -
+ 73 173 273 373 - - - - - -
+ 74 174 274 374 174 74 - - - -
+ 75 175 275 375 - - 275 75 375 75
+ 76 176 276 376 176 76 - - - -
+ 77 177 277 377 - - - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 79 179 279 379 - - - - - -
+ 80 180 280 380 180 80 - - 380 80
+ 81 181 281 381 - - 281 81 - -
+ 82 182 282 382 182 82 - - - -
+ 83 183 283 383 - - - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 85 185 285 385 - - - - 385 85
+ 86 186 286 386 186 86 - - - -
+ 87 187 287 387 - - 287 87 - -
+ 88 188 288 388 188 88 - - - -
+ 89 189 289 389 - - - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 91 191 291 391 - - - - - -
+ 92 192 292 392 192 92 - - - -
+ 93 193 293 393 - - 293 93 - -
+ 94 194 294 394 194 94 - - - -
+ 95 195 295 395 - - - - 395 95
+ 96 - 296 396 - - - - - -
+ 97 197 - 397 - - - - - -
+ 98 198 298 - - - - - - -
+ 99 - - - - - - - - -
+ - - - - 100 0 - - - -
+ - - - - - - 200 0 - -
+ - - - - - - - - 300 0
+}
+do_execsql_test joinD-1166 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 2 102 202 302 102 2 - - - -
+ 4 104 204 304 104 4 - - - -
+ 6 106 206 306 106 6 206 6 - -
+ 8 108 208 308 108 8 - - - -
+ 10 110 210 310 110 10 - - 310 10
+ 12 112 212 312 112 12 212 12 - -
+ 14 114 214 314 114 14 - - - -
+ 16 116 216 316 116 16 - - - -
+ 18 118 218 318 118 18 218 18 - -
+ 20 120 220 320 120 20 - - 320 20
+ 22 122 222 322 122 22 - - - -
+ 24 124 224 324 124 24 224 24 - -
+ 26 126 226 326 126 26 - - - -
+ 28 128 228 328 128 28 - - - -
+ 30 130 230 330 130 30 230 30 330 30
+ 32 132 232 332 132 32 - - - -
+ 34 134 234 334 134 34 - - - -
+ 36 136 236 336 136 36 236 36 - -
+ 38 138 238 338 138 38 - - - -
+ 40 140 240 340 140 40 - - 340 40
+ 42 142 242 342 142 42 242 42 - -
+ 44 144 244 344 144 44 - - - -
+ 46 146 246 346 146 46 - - - -
+ 48 148 248 348 148 48 248 48 - -
+ 50 150 250 350 150 50 - - 350 50
+ 52 152 252 352 152 52 - - - -
+ 54 154 254 354 154 54 254 54 - -
+ 56 156 256 356 156 56 - - - -
+ 58 158 258 358 158 58 - - - -
+ 60 160 260 360 160 60 260 60 360 60
+ 62 162 262 362 162 62 - - - -
+ 64 164 264 364 164 64 - - - -
+ 66 166 266 366 166 66 266 66 - -
+ 68 168 268 368 168 68 - - - -
+ 70 170 270 370 170 70 - - 370 70
+ 72 172 272 372 172 72 272 72 - -
+ 74 174 274 374 174 74 - - - -
+ 76 176 276 376 176 76 - - - -
+ 78 178 278 378 178 78 278 78 - -
+ 80 180 280 380 180 80 - - 380 80
+ 82 182 282 382 182 82 - - - -
+ 84 184 284 384 184 84 284 84 - -
+ 86 186 286 386 186 86 - - - -
+ 88 188 288 388 188 88 - - - -
+ 90 190 290 390 190 90 290 90 390 90
+ 92 192 292 392 192 92 - - - -
+ 94 194 294 394 194 94 - - - -
+}
+do_execsql_test joinD-1167 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t3.y>0
+ FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
+ WHERE t1.b = t2.b AND t1.c = t3.c
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 6 106 206 306 106 6 206 6 - -
+ 12 112 212 312 112 12 212 12 - -
+ 18 118 218 318 118 18 218 18 - -
+ 24 124 224 324 124 24 224 24 - -
+ 30 130 230 330 130 30 230 30 330 30
+ 36 136 236 336 136 36 236 36 - -
+ 42 142 242 342 142 42 242 42 - -
+ 48 148 248 348 148 48 248 48 - -
+ 54 154 254 354 154 54 254 54 - -
+ 60 160 260 360 160 60 260 60 360 60
+ 66 166 266 366 166 66 266 66 - -
+ 72 172 272 372 172 72 272 72 - -
+ 78 178 278 378 178 78 278 78 - -
+ 84 184 284 384 184 84 284 84 - -
+ 90 190 290 390 190 90 290 90 390 90
+}
+do_execsql_test joinD-1168 {
+ SELECT t1.*, t2.*, t3.*, t4.*
+ FROM t1 FULL JOIN t2 ON t2.x>0
+ FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
+ FULL JOIN t4 ON t4.z>0
+ WHERE t1.b = t2.b AND t1.d = t4.d
+ ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
+} {
+ 10 110 210 310 110 10 - - 310 10
+ 20 120 220 320 120 20 - - 320 20
+ 30 130 230 330 130 30 230 30 330 30
+ 40 140 240 340 140 40 - - 340 40
+ 50 150 250 350 150 50 - - 350 50
+ 60 160 260 360 160 60 260 60 360 60
+ 70 170 270 370 170 70 - - 370 70
+ 80 180 280 380 180 80 - - 380 80
+ 90 190 290 390 190 90 290 90 390 90
+}
+#############################################################################
+# The following are extra tests added manually
+do_execsql_test joinD-extra-1000 {
+ CREATE VIEW v1 AS
+ SELECT *
+ FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
+ RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
+ LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0;
+ CREATE TRIGGER v1r1 INSTEAD OF UPDATE OF c ON v1 BEGIN
+ UPDATE t1 SET c=new.c WHERE (a,b,c,d) IS (old.a,old.b,old.c,old.d);
+ UPDATE t3 SET c=new.c WHERE (c,y) IS (old.c,old.y);
+ END;
+ SELECT * FROM v1 WHERE y BETWEEN 30 AND 40 ORDER BY y;
+} {
+ 30 130 230 330 130 30 230 30 330 30
+ - - - - - - 233 33 - -
+ 36 136 236 336 136 36 236 36 - -
+ - - - - - - 239 39 - -
+}
+do_execsql_test joinD-extra-1010 {
+ BEGIN;
+ UPDATE v1 SET c=c+1000 WHERE y BETWEEN 30 and 40;
+ SELECT * FROM v1 WHERE y BETWEEN 30 AND 40 ORDER BY y;
+ ROLLBACK;
+} {
+ 30 130 1230 330 130 30 1230 30 330 30
+ - - - - - - 233 33 - -
+ 36 136 1236 336 136 36 1236 36 - -
+ - - - - - - 239 39 - -
+}
+finish_test
+#############################################################################
+# This is the TCL script used to generate the psql script that generated
+# the data above.
+#
+# puts "
+# \\pset border off
+# \\pset tuples_only on
+# \\pset null -
+#
+# DROP TABLE IF EXISTS t1;
+# DROP TABLE IF EXISTS t2;
+# DROP TABLE IF EXISTS t3;
+# DROP TABLE IF EXISTS t4;
+# CREATE TABLE t1(a INT, b INT, c INT, d INT);
+# WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
+# INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
+# CREATE TABLE t2(b INT, x INT);
+# INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
+# CREATE INDEX t2b ON t2(b);
+# CREATE TABLE t3(c INT, y INT);
+# INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
+# CREATE INDEX t3c ON t3(c);
+# CREATE TABLE t4(d INT, z INT);
+# INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
+# CREATE INDEX t4d ON t4(d);
+# INSERT INTO t1(a,b,c,d) VALUES
+# (96,NULL,296,396),
+# (97,197,NULL,397),
+# (98,198,298,NULL),
+# (99,NULL,NULL,NULL);
+# "
+#
+# proc echo {prefix txt} {
+# regsub -all {\n} $txt \n$prefix txt
+# puts "$prefix$txt"
+# }
+#
+# set n 0
+# foreach j1 {INNER LEFT RIGHT FULL} {
+# foreach j2 {INNER LEFT RIGHT FULL} {
+# foreach j3 {INNER LEFT RIGHT FULL} {
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# if {$j1!="FULL"} {
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+# }
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " WHERE t2.x>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " WHERE (t2.x>0 OR t2.x IS NULL)\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON true\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " WHERE t1.b=t2.b AND t2.x>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " WHERE t3.y>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " WHERE t3.y>0 OR t3.y IS NULL\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d\n"
+# append q1 " WHERE t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d\n"
+# append q1 " WHERE t4.z IS NULL OR t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d\n"
+# append q1 " WHERE t2.x>0 AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d\n"
+# append q1 " WHERE t4.z>0 AND t3.y>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " WHERE t2.x>0 AND t3.y>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d\n"
+# append q1 " WHERE t2.x>0 AND t3.y>0 AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# set op1 [expr {$j1=="FULL"?"=":"IS NOT DISTINCT FROM"}]
+# set op2 [expr {$j2=="FULL"?"=":"IS NOT DISTINCT FROM"}]
+# set op3 [expr {$j3=="FULL"?"=":"IS NOT DISTINCT FROM"}]
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b $op1 t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
+# append q1 " WHERE t1.b $op1 t2.b\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
+# append q1 " WHERE t1.b $op1 t2.b AND t1.c $op2 t3.c\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t4.z>0\n"
+# append q1 " WHERE t1.b $op1 t2.b AND t1.d $op3 t4.d\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+#
+# if {$j1!="FULL"} {
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+# }
+#
+# if {$j2!="FULL"} {
+# incr n
+# set q1 ""
+# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
+# append q1 " FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
+# append q1 " $j2 JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0\n"
+# append q1 " $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
+# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
+#
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+# }
+# }
+# }
+# }
+#