]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add 512 new join test cases derived from PostgreSQL output.
authordrh <>
Tue, 19 Apr 2022 15:01:57 +0000 (15:01 +0000)
committerdrh <>
Tue, 19 Apr 2022 15:01:57 +0000 (15:01 +0000)
FossilOrigin-Name: 78d58e461f99366d2749ccd6d02ab4cba0cab20bb80c097e7128da1e50303549

manifest
manifest.uuid
test/joinB.test [new file with mode: 0644]

index a37e2c85dc9fa945c6cdad7cff05aef516b64bb2..e22d30027598b209729a20d55edfb5810b279d4d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sunnecessary\scases\sfor\sthe\sresolver.
-D 2022-04-19T09:39:39.006
+C Add\s512\snew\sjoin\stest\scases\sderived\sfrom\sPostgreSQL\soutput.
+D 2022-04-19T15:01:57.355
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -1150,6 +1150,7 @@ F test/join7.test 8e72de4b45e5e930d18c305c7efe86015fb2552731e4e03ea226353036b0da
 F test/join8.test 6ed7eed8993e060e5e9d07f6bcadf1bb634742a03b9824afbcfa193adf7f9965
 F test/join9.test 9056ddd3b0c0f4f9d658f4521038d9a37dc23ead8ca9a505d0b0db2b6a471e05
 F test/joinA.test 7eab225dc1c1ab258a5e62513a4ed7cabbd3db971d59d5d92f4fb6fa14c12f6a
+F test/joinB.test 1b2ba3fc8568b49411787fccbf540570c148e9b6a53a30f80691cb6268098ded
 F test/journal1.test c7b768041b7f494471531e17abc2f4f5ebf9e5096984f43ed17c4eb80ba34497
 F test/journal2.test 9dac6b4ba0ca79c3b21446bbae993a462c2397c4
 F test/journal3.test 7c3cf23ffc77db06601c1fcfc9743de8441cb77db9d1aa931863d94f5ffa140e
@@ -1949,8 +1950,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 0907505cc9bb051280108fe5074211374b31836fae1ae6667a3de69f9d83fc01
-R af8749bf8e5681ed93958baf8fbcfed8
+P 5bc9aa68e2f938f6a70dd4b08703fe52416d17efe461ec65d37332b57b827fdd
+R c6f0e66c49ec69e517ae5327330e468a
 U drh
-Z 9bd754afd9f14824483f75f7cef5bcee
+Z aaf42e80bfa2ba0860c31afbcd3466d6
 # Remove this line to create a well-formed Fossil manifest.
index e2eb30dbdd8b5033958eb56507966021e8ab9e90..a47836b75f1227f6c574922f91661e73c5e5037d 100644 (file)
@@ -1 +1 @@
-5bc9aa68e2f938f6a70dd4b08703fe52416d17efe461ec65d37332b57b827fdd
\ No newline at end of file
+78d58e461f99366d2749ccd6d02ab4cba0cab20bb80c097e7128da1e50303549
\ No newline at end of file
diff --git a/test/joinB.test b/test/joinB.test
new file mode 100644 (file)
index 0000000..baaeae6
--- /dev/null
@@ -0,0 +1,7252 @@
+set testdir [file dirname $argv0]
+# 2022-04-19
+#
+# 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.
+#
+#***********************************************************************
+#
+# This file implements tests for JOINs.
+#
+# The test case output is 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.
+#
+source $testdir/tester.tcl
+db nullvalue -
+db eval {
+  DROP TABLE IF EXISTS t1;
+  DROP TABLE IF EXISTS t2;
+  DROP TABLE IF EXISTS t3;
+  DROP TABLE IF EXISTS t4;
+  DROP TABLE IF EXISTS t5;
+  CREATE TABLE t1(a INT, b INT, c INT);
+  CREATE TABLE t2(a INT, b INT, d INT);
+  CREATE TABLE t3(a INT, b INT, e INT);
+  CREATE TABLE t4(a INT, b INT, f INT);
+  CREATE TABLE t5(a INT, b INT, g INT);
+  INSERT INTO t1 VALUES(11,21,31),(12,22,32),(15,25,35),(17,27,37);
+  INSERT INTO t2 VALUES(12,22,32),(13,23,33),(15,25,35),(18,28,38),
+                       (NULL,NULL,36);
+  INSERT INTO t4 VALUES(11,21,31),(13,23,33),(15,25,35),(19,29,39);
+  INSERT INTO t3 SELECT * FROM t1 UNION SELECT * FROM t2 UNION SELECT * FROM t4;
+  INSERT INTO t5 SELECT * FROM t3 WHERE a>=15;
+}
+do_execsql_test joinB-1 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-2 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-3 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-4 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-5 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-6 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-7 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-8 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-9 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-10 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-11 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-12 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-13 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-14 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-15 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-16 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-17 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-18 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-19 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-20 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-21 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-22 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-23 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-24 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-25 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-26 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-27 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-28 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-29 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-30 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-31 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-32 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-33 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-34 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-35 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-36 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-37 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-38 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-39 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-40 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-41 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-42 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-43 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-44 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-45 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-46 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-47 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-48 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-49 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-50 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-51 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-52 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-53 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-54 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-55 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-56 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-57 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-58 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-59 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-60 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-61 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-62 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-63 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-64 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-65 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-66 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-67 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-68 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-69 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-70 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-71 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-72 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-73 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-74 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-75 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-76 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-77 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-78 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-79 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-80 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-81 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-82 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-83 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-84 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-85 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-86 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-87 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-88 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-89 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-90 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-91 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-92 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-93 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-94 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-95 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-96 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-97 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-98 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-99 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-100 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-101 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-102 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-103 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-104 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-105 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-106 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-107 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-108 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-109 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-110 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-111 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-112 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-113 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-114 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-115 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-116 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-117 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-118 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-119 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-120 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-121 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-122 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-123 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-124 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  INNER JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-125 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-126 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  INNER JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-127 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  INNER JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-128 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL INNER JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-129 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-130 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-131 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-132 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-133 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-134 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-135 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-136 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-137 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+}
+do_execsql_test joinB-138 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+}
+do_execsql_test joinB-139 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+}
+do_execsql_test joinB-140 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+}
+do_execsql_test joinB-141 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-142 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-143 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-144 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-145 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-146 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-147 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-148 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-149 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-150 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-151 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-152 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-153 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-154 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-155 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-156 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+}
+do_execsql_test joinB-157 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-158 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-159 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-160 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-161 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-162 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-163 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-164 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-165 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-166 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-167 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-168 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-169 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+}
+do_execsql_test joinB-170 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+}
+do_execsql_test joinB-171 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+}
+do_execsql_test joinB-172 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+}
+do_execsql_test joinB-173 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-174 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-175 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-176 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-177 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-178 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-179 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-180 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-181 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-182 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-183 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-184 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-185 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-186 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-187 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-188 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+}
+do_execsql_test joinB-189 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-190 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-191 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  -  - 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-192 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-193 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-194 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-195 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-196 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-197 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-198 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-199 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-200 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-201 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-202 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-203 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-204 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-205 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-206 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-207 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-208 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-209 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-210 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-211 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-212 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-213 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-214 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-215 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-216 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-217 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-218 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-219 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-220 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-221 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-222 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-223 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-224 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-225 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-226 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-227 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-228 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-229 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-230 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-231 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-232 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-233 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-234 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-235 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-236 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-237 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-238 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-239 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-240 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-241 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-242 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-243 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-244 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-245 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-246 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-247 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-248 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-249 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-250 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  -  - 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-251 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-252 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  LEFT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  -  -  - 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+}
+do_execsql_test joinB-253 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-254 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  LEFT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  -  - 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-255 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  LEFT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  -  - 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  -  - 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-256 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL LEFT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-257 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-258 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-259 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-260 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-261 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-262 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-263 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-264 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-265 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-266 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  18  - 38 38  - 38
+}
+do_execsql_test joinB-267 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-268 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-269 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-270 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-271 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-272 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-273 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-274 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-275 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-276 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-277 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-278 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-279 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-280 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-281 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-282 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  18  - 38 38  - 38
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-283 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-284 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-285 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-286 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-287 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-288 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-289 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-290 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-291 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-292 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-293 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-294 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-295 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-296 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-297 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-298 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  18  - 38 38  - 38
+}
+do_execsql_test joinB-299 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-300 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-301 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-302 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-303 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-304 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-305 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-306 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-307 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-308 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-309 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-310 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-311 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-312 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-313 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-314 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  18  - 38 38  - 38
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-315 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-316 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  -  - 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-317 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-318 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-319 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  -  - 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-320 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-321 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-322 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-323 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-324 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-325 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-326 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-327 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-328 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-329 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-330 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-331 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-332 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-333 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-334 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-335 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-336 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-337 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-338 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-339 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-340 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-341 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-342 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-343 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-344 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-345 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-346 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-347 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-348 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-349 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-350 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-351 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-352 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-353 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-354 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-355 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-356 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-357 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-358 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-359 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-360 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-361 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-362 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-363 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-364 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-365 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-366 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-367 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-368 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-369 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-370 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-371 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-372 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-373 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-374 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-375 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11  -  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-376 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-377 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-378 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17  -  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-379 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-380 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-381 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-382 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  RIGHT JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-383 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  RIGHT JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11  -  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-384 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL RIGHT JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-385 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-386 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-387 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-388 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-389 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-390 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-391 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-392 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-393 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-394 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+}
+do_execsql_test joinB-395 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-396 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-397 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-398 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-399 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-400 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-401 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-402 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-403 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-404 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-405 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-406 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-407 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-408 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-409 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-410 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-411 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-412 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 INNER JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-413 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-414 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  INNER JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-415 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  INNER JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-416 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL INNER JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-417 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-418 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-419 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+}
+do_execsql_test joinB-420 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-421 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-422 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-423 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-424 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-425 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-426 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+}
+do_execsql_test joinB-427 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+}
+do_execsql_test joinB-428 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-429 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-430 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  -  - 39
+}
+do_execsql_test joinB-431 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  -  - 19
+}
+do_execsql_test joinB-432 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-433 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-434 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-435 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-436 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-437 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-438 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-439 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-440 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-441 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-442 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+  19  -  -  - 39 39
+}
+do_execsql_test joinB-443 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-444 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 LEFT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  -  - 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  -  -  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-445 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-446 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  LEFT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  -  - 39 39
+}
+do_execsql_test joinB-447 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  LEFT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  -  - 19 19
+}
+do_execsql_test joinB-448 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL LEFT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-449 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-450 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-451 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-452 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-453 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-454 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-455 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-456 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-457 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-458 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-459 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-460 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-461 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-462 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-463 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-464 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-465 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-466 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-467 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-468 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-469 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-470 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-471 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-472 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-473 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-474 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-475 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-476 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 RIGHT JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-477 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-478 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  RIGHT JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-479 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  RIGHT JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-480 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL RIGHT JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-481 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-482 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-483 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-484 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  INNER JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-485 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-486 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  INNER JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-487 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  INNER JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-488 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL INNER JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-489 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-490 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-491 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-492 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  LEFT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-493 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-494 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  LEFT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-495 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  LEFT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-496 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL LEFT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-497 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-498 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-499 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-500 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  RIGHT JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+}
+do_execsql_test joinB-501 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-502 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  RIGHT JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27  -  -  -  - 37
+  18 28  -  -  -  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-503 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  RIGHT JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 11  - 11 11  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17  -  -  -  - 17
+  18  -  -  -  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-504 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL RIGHT JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+do_execsql_test joinB-505 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  INNER JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-506 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  INNER JOIN t5 USING(a,b)
+  WHERE a<>13
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 35 35 35 35 35
+  17 37  - 37  - 37
+  18  - 38 38  - 38
+  19  -  - 39 39 39
+}
+do_execsql_test joinB-507 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  LEFT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-508 {
+  SELECT a, c, d, e, f, g
+  FROM t1
+  FULL JOIN (t2 FULL JOIN t3 USING(a)) USING(a)
+  FULL JOIN (t4 LEFT JOIN t5 USING(a)) USING(a)
+  WHERE a<=18
+  ORDER BY 1 NULLS FIRST;
+} {
+  11 31  - 31 31  -
+  12 32 32 32  -  -
+  13  - 33 33 33  -
+  15 35 35 35 35 35
+  17 37  - 37  -  -
+  18  - 38 38  -  -
+}
+do_execsql_test joinB-509 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  RIGHT JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-510 {
+  SELECT a, b, c, d, e, f, g
+  FROM t1
+  FULL JOIN t2 USING(a,b)
+  FULL JOIN t3 USING(a,b)
+  FULL JOIN t4 USING(a,b)
+  RIGHT JOIN t5 USING(a,b)
+  WHERE d<>33 OR d IS NULL
+  ORDER BY 1 NULLS FIRST;
+} {
+  15 25 35 35 35 35 35
+  17 27 37  - 37  - 37
+  18 28  - 38 38  - 38
+  19 29  -  - 39 39 39
+}
+do_execsql_test joinB-511 {
+  SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a
+  FROM t1
+  FULL JOIN t2 USING(a)
+  FULL JOIN t3 USING(a)
+  FULL JOIN t4 USING(a)
+  FULL JOIN t5 USING(a)
+  ORDER BY 1 NULLS FIRST;
+} {
+   -  -  -  -  -  -
+   -  -  -  -  -  -
+  11 11  - 11 11  -
+  12 12 12 12  -  -
+  13  - 13 13 13  -
+  15 15 15 15 15 15
+  17 17  - 17  - 17
+  18  - 18 18  - 18
+  19  -  - 19 19 19
+}
+do_execsql_test joinB-512 {
+  SELECT b, c, d, e, f, g
+  FROM t1
+  NATURAL FULL JOIN t2
+  NATURAL FULL JOIN t3
+  NATURAL FULL JOIN t4
+  NATURAL FULL JOIN t5
+  WHERE b BETWEEN 12 AND 17
+  ORDER BY 1 NULLS FIRST;
+} {
+}
+finish_test
+
+##############################################################################
+# Here is the original TCL script that generated the psql input file:
+#
+# 
+# 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;
+# DROP TABLE IF EXISTS t5;
+# CREATE TABLE t1(a INT, b INT, c INT);
+# CREATE TABLE t2(a INT, b INT, d INT);
+# CREATE TABLE t3(a INT, b INT, e INT);
+# CREATE TABLE t4(a INT, b INT, f INT);
+# CREATE TABLE t5(a INT, b INT, g INT);
+# INSERT INTO t1 VALUES(11,21,31),(12,22,32),(15,25,35),(17,27,37);
+# INSERT INTO t2 VALUES(12,22,32),(13,23,33),(15,25,35),(18,28,38),(NULL,NULL,36);
+# INSERT INTO t4 VALUES(11,21,31),(13,23,33),(15,25,35),(19,29,39);
+# INSERT INTO t3 SELECT * FROM t1 UNION SELECT * FROM t2 UNION SELECT * FROM t4;
+# INSERT INTO t5 SELECT * FROM t3 WHERE a>=15;
+# "
+# 
+# proc echo {prefix txt} {
+#   regsub -all {\n} $txt \n$prefix txt
+#   puts "$prefix$txt"
+# }
+# 
+# set n 0
+# set k 0
+# foreach j1 {INNER LEFT RIGHT FULL} {
+#   foreach j2 {INNER LEFT RIGHT FULL} {
+#     foreach j3 {INNER LEFT RIGHT FULL} {
+#       foreach j4 {INNER LEFT RIGHT FULL} {
+# 
+# incr n
+# incr k
+# set q1 ""
+# append q1 "SELECT a, t1.a, t2.a, t3.a, t4.a, t5.a\n"
+# append q1 "  FROM t1\n"
+# append q1 "       $j1 JOIN t2 USING(a)\n"
+# append q1 "       $j2 JOIN t3 USING(a)\n"
+# append q1 "       $j3 JOIN t4 USING(a)\n"
+# append q1 "       $j4 JOIN t5 USING(a)\n"
+# append q1 " ORDER BY 1 NULLS FIRST;"
+# 
+# echo "\\qecho " "do_execsql_test joinB-$n \{"
+# echo "\\qecho X  " $q1
+# echo "\\qecho " "\} \{"
+# puts $q1
+# echo "\\qecho " "\}"
+# 
+# switch [expr {$k%4}] {
+#   0 {
+#     set q2 ""
+#     append q2 "SELECT b, c, d, e, f, g\n"
+#     append q2 "  FROM t1\n"
+#     append q2 "       NATURAL $j1 JOIN t2\n"
+#     append q2 "       NATURAL $j2 JOIN t3\n"
+#     append q2 "       NATURAL $j3 JOIN t4\n"
+#     append q2 "       NATURAL $j4 JOIN t5\n"
+#     append q2 " WHERE b BETWEEN 12 AND 17\n"
+#     append q2 " ORDER BY 1 NULLS FIRST;"
+#     incr n
+#     echo "\\qecho " "do_execsql_test joinB-$n \{"
+#     echo "\\qecho X  " $q2
+#     echo "\\qecho " "\} \{"
+#     puts $q2
+#     echo "\\qecho " "\}"
+#   }
+#   1 {
+#     set q2 ""
+#     append q2 "SELECT a, c, d, e, f, g\n"
+#     append q2 "  FROM t1\n"
+#     append q2 "       $j1 JOIN t2 USING(a,b)\n"
+#     append q2 "       $j2 JOIN t3 USING(a,b)\n"
+#     append q2 "       $j3 JOIN t4 USING(a,b)\n"
+#     append q2 "       $j4 JOIN t5 USING(a,b)\n"
+#     append q2 " WHERE a<>13\n"
+#     append q2 " ORDER BY 1 NULLS FIRST;"
+#     incr n
+#     echo "\\qecho " "do_execsql_test joinB-$n \{"
+#     echo "\\qecho X  " $q2
+#     echo "\\qecho " "\} \{"
+#     puts $q2
+#     echo "\\qecho " "\}"
+#   }
+#   2 {
+#     set q2 ""
+#     append q2 "SELECT a, c, d, e, f, g\n"
+#     append q2 "  FROM t1\n"
+#     append q2 "       $j1 JOIN (t2 $j2 JOIN t3 USING(a)) USING(a)\n"
+#     append q2 "       $j3 JOIN (t4 $j4 JOIN t5 USING(a)) USING(a)\n"
+#     append q2 " WHERE a<=18\n"
+#     append q2 " ORDER BY 1 NULLS FIRST;"
+#     incr n
+#     echo "\\qecho " "do_execsql_test joinB-$n \{"
+#     echo "\\qecho X  " $q2
+#     echo "\\qecho " "\} \{"
+#     puts $q2
+#     echo "\\qecho " "\}"
+#   }
+#   3 {
+#     set q2 ""
+#     append q2 "SELECT a, b, c, d, e, f, g\n"
+#     append q2 "  FROM t1\n"
+#     append q2 "       $j1 JOIN t2 USING(a,b)\n"
+#     append q2 "       $j2 JOIN t3 USING(a,b)\n"
+#     append q2 "       $j3 JOIN t4 USING(a,b)\n"
+#     append q2 "       $j4 JOIN t5 USING(a,b)\n"
+#     append q2 " WHERE d<>33 OR d IS NULL\n"
+#     append q2 " ORDER BY 1 NULLS FIRST;"
+#     incr n
+#     echo "\\qecho " "do_execsql_test joinB-$n \{"
+#     echo "\\qecho X  " $q2
+#     echo "\\qecho " "\} \{"
+#     puts $q2
+#     echo "\\qecho " "\}"
+#   }
+# }
+# 
+#       }
+#     }
+#   }
+# }
+##############################################################################