# 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 " "\}"
# }
#     }
#   }
# }
#