xref: /sqlite-3.40.0/test/joinD.test (revision c8e9f681)
1# 2022-05-04
2# revised 2022-05-31
3#
4# The author disclaims copyright to this source code.  In place of
5# a legal notice, here is a blessing:
6#
7#    May you do good and not evil.
8#    May you find forgiveness for yourself and forgive others.
9#    May you share freely, never taking more than you give.
10#
11#***********************************************************************
12#
13# TESTRUNNER: slow
14#
15# This file implements tests for JOINs that use Bloom filters.
16#
17# The test case output is (mostly) all generated by PostgreSQL 14.  This
18# test module was created as follows:
19#
20#   1.   Run a TCL script (included at the bottom of this file) that
21#        generates an input script for "psql" that will run man
22#        diverse tests on joins.
23#
24#   2.   Run the script from step (1) through psql and collect the
25#        output.
26#
27#   3.   Make a few minor global search-and-replace operations to convert
28#        the psql output into a form suitable for this test module.
29#
30#   4.   Add this header, and the script content at the footer.
31#
32# A few extra tests that were not generated from postgresql output are
33# added at the end.
34#
35set testdir [file dirname $argv0]
36source $testdir/tester.tcl
37db nullvalue -
38db eval {
39  CREATE TABLE t1(a INT, b INT, c INT, d INT);
40  WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
41    INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
42  CREATE TABLE t2(b INT, x INT);
43  INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
44  CREATE INDEX t2b ON t2(b);
45  CREATE TABLE t3(c INT, y INT);
46  INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
47  CREATE INDEX t3c ON t3(c);
48  CREATE TABLE t4(d INT, z INT);
49  INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
50  CREATE INDEX t4d ON t4(d);
51  INSERT INTO t1(a,b,c,d) VALUES
52    (96,NULL,296,396),
53    (97,197,NULL,397),
54    (98,198,298,NULL),
55    (99,NULL,NULL,NULL);
56  ANALYZE;
57}
58do_execsql_test joinD-1 {
59  SELECT t1.*, t2.*, t3.*, t4.*
60  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
61  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
62  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
63  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
64} {
65  30 130 230 330 130 30 230 30 330 30
66  60 160 260 360 160 60 260 60 360 60
67  90 190 290 390 190 90 290 90 390 90
68}
69do_execsql_test joinD-2 {
70  SELECT t1.*, t2.*, t3.*, t4.*
71  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
72  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
73  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
74  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
75} {
76  30 130 230 330 130 30 230 30 330 30
77  60 160 260 360 160 60 260 60 360 60
78  90 190 290 390 190 90 290 90 390 90
79}
80do_execsql_test joinD-3 {
81  SELECT t1.*, t2.*, t3.*, t4.*
82  FROM t1 INNER JOIN t2 ON t1.b=t2.b
83  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
84  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
85  WHERE t2.x>0
86  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
87} {
88  30 130 230 330 130 30 230 30 330 30
89  60 160 260 360 160 60 260 60 360 60
90  90 190 290 390 190 90 290 90 390 90
91}
92do_execsql_test joinD-4 {
93  SELECT t1.*, t2.*, t3.*, t4.*
94  FROM t1 INNER JOIN t2 ON t1.b=t2.b
95  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
96  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
97  WHERE (t2.x>0 OR t2.x IS NULL)
98  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
99} {
100  30 130 230 330 130 30 230 30 330 30
101  60 160 260 360 160 60 260 60 360 60
102  90 190 290 390 190 90 290 90 390 90
103}
104do_execsql_test joinD-5 {
105  SELECT t1.*, t2.*, t3.*, t4.*
106  FROM t1 INNER JOIN t2 ON true
107  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
108  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
109  WHERE t1.b=t2.b AND t2.x>0
110  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
111} {
112  30 130 230 330 130 30 230 30 330 30
113  60 160 260 360 160 60 260 60 360 60
114  90 190 290 390 190 90 290 90 390 90
115}
116do_execsql_test joinD-6 {
117  SELECT t1.*, t2.*, t3.*, t4.*
118  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
119  INNER JOIN t3 ON t1.c=t3.c
120  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
121  WHERE t3.y>0
122  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
123} {
124  30 130 230 330 130 30 230 30 330 30
125  60 160 260 360 160 60 260 60 360 60
126  90 190 290 390 190 90 290 90 390 90
127}
128do_execsql_test joinD-7 {
129  SELECT t1.*, t2.*, t3.*, t4.*
130  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
131  INNER JOIN t3 ON t1.c=t3.c
132  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
133  WHERE t3.y>0 OR t3.y IS NULL
134  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
135} {
136  30 130 230 330 130 30 230 30 330 30
137  60 160 260 360 160 60 260 60 360 60
138  90 190 290 390 190 90 290 90 390 90
139}
140do_execsql_test joinD-8 {
141  SELECT t1.*, t2.*, t3.*, t4.*
142  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
143  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
144  INNER JOIN t4 ON t1.d=t4.d
145  WHERE t4.z>0
146  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
147} {
148  30 130 230 330 130 30 230 30 330 30
149  60 160 260 360 160 60 260 60 360 60
150  90 190 290 390 190 90 290 90 390 90
151}
152do_execsql_test joinD-9 {
153  SELECT t1.*, t2.*, t3.*, t4.*
154  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
155  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
156  INNER JOIN t4 ON t1.d=t4.d
157  WHERE t4.z IS NULL OR t4.z>0
158  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
159} {
160  30 130 230 330 130 30 230 30 330 30
161  60 160 260 360 160 60 260 60 360 60
162  90 190 290 390 190 90 290 90 390 90
163}
164do_execsql_test joinD-10 {
165  SELECT t1.*, t2.*, t3.*, t4.*
166  FROM t1 INNER JOIN t2 ON t1.b=t2.b
167  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
168  INNER JOIN t4 ON t1.d=t4.d
169  WHERE t2.x>0 AND t4.z>0
170  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
171} {
172  30 130 230 330 130 30 230 30 330 30
173  60 160 260 360 160 60 260 60 360 60
174  90 190 290 390 190 90 290 90 390 90
175}
176do_execsql_test joinD-11 {
177  SELECT t1.*, t2.*, t3.*, t4.*
178  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
179  INNER JOIN t3 ON t1.c=t3.c
180  INNER JOIN t4 ON t1.d=t4.d
181  WHERE t4.z>0 AND t3.y>0
182  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
183} {
184  30 130 230 330 130 30 230 30 330 30
185  60 160 260 360 160 60 260 60 360 60
186  90 190 290 390 190 90 290 90 390 90
187}
188do_execsql_test joinD-12 {
189  SELECT t1.*, t2.*, t3.*, t4.*
190  FROM t1 INNER JOIN t2 ON t1.b=t2.b
191  INNER JOIN t3 ON t1.c=t3.c
192  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
193  WHERE t2.x>0 AND t3.y>0
194  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
195} {
196  30 130 230 330 130 30 230 30 330 30
197  60 160 260 360 160 60 260 60 360 60
198  90 190 290 390 190 90 290 90 390 90
199}
200do_execsql_test joinD-13 {
201  SELECT t1.*, t2.*, t3.*, t4.*
202  FROM t1 INNER JOIN t2 ON t1.b=t2.b
203  INNER JOIN t3 ON t1.c=t3.c
204  INNER JOIN t4 ON t1.d=t4.d
205  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
206  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
207} {
208  30 130 230 330 130 30 230 30 330 30
209  60 160 260 360 160 60 260 60 360 60
210  90 190 290 390 190 90 290 90 390 90
211}
212do_execsql_test joinD-14 {
213  SELECT t1.*, t2.*, t3.*, t4.*
214  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
215  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
216  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
217  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
218} {
219  30 130 230 330 130 30 230 30 330 30
220  60 160 260 360 160 60 260 60 360 60
221  90 190 290 390 190 90 290 90 390 90
222}
223do_execsql_test joinD-15 {
224  SELECT t1.*, t2.*, t3.*, t4.*
225  FROM t1 INNER JOIN t2 ON t2.x>0
226  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
227  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
228  WHERE t1.b IS NOT DISTINCT FROM t2.b
229  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
230} {
231  30 130 230 330 130 30 230 30 330 30
232  60 160 260 360 160 60 260 60 360 60
233  90 190 290 390 190 90 290 90 390 90
234}
235do_execsql_test joinD-16 {
236  SELECT t1.*, t2.*, t3.*, t4.*
237  FROM t1 INNER JOIN t2 ON t2.x>0
238  INNER JOIN t3 ON t3.y>0
239  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
240  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
241  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
242} {
243  30 130 230 330 130 30 230 30 330 30
244  60 160 260 360 160 60 260 60 360 60
245  90 190 290 390 190 90 290 90 390 90
246}
247do_execsql_test joinD-17 {
248  SELECT t1.*, t2.*, t3.*, t4.*
249  FROM t1 INNER JOIN t2 ON t2.x>0
250  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
251  INNER JOIN t4 ON t4.z>0
252  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
253  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
254} {
255  30 130 230 330 130 30 230 30 330 30
256  60 160 260 360 160 60 260 60 360 60
257  90 190 290 390 190 90 290 90 390 90
258}
259do_execsql_test joinD-18 {
260  SELECT t1.*, t2.*, t3.*, t4.*
261  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
262  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
263  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
264  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
265} {
266  30 130 230 330 130 30 230 30 330 30
267  60 160 260 360 160 60 260 60 360 60
268  90 190 290 390 190 90 290 90 390 90
269}
270do_execsql_test joinD-19 {
271  SELECT t1.*, t2.*, t3.*, t4.*
272  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
273  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
274  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
275  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
276} {
277  30 130 230 330 130 30 230 30 330 30
278  60 160 260 360 160 60 260 60 360 60
279  90 190 290 390 190 90 290 90 390 90
280}
281do_execsql_test joinD-20 {
282  SELECT t1.*, t2.*, t3.*, t4.*
283  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
284  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
285  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
287} {
288   6 106 206 306 106  6 206  6   -  -
289  12 112 212 312 112 12 212 12   -  -
290  18 118 218 318 118 18 218 18   -  -
291  24 124 224 324 124 24 224 24   -  -
292  30 130 230 330 130 30 230 30 330 30
293  36 136 236 336 136 36 236 36   -  -
294  42 142 242 342 142 42 242 42   -  -
295  48 148 248 348 148 48 248 48   -  -
296  54 154 254 354 154 54 254 54   -  -
297  60 160 260 360 160 60 260 60 360 60
298  66 166 266 366 166 66 266 66   -  -
299  72 172 272 372 172 72 272 72   -  -
300  78 178 278 378 178 78 278 78   -  -
301  84 184 284 384 184 84 284 84   -  -
302  90 190 290 390 190 90 290 90 390 90
303}
304do_execsql_test joinD-21 {
305  SELECT t1.*, t2.*, t3.*, t4.*
306  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
307  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
308  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
309  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
310} {
311   6 106 206 306 106  6 206  6   -  -
312  12 112 212 312 112 12 212 12   -  -
313  18 118 218 318 118 18 218 18   -  -
314  24 124 224 324 124 24 224 24   -  -
315  30 130 230 330 130 30 230 30 330 30
316  36 136 236 336 136 36 236 36   -  -
317  42 142 242 342 142 42 242 42   -  -
318  48 148 248 348 148 48 248 48   -  -
319  54 154 254 354 154 54 254 54   -  -
320  60 160 260 360 160 60 260 60 360 60
321  66 166 266 366 166 66 266 66   -  -
322  72 172 272 372 172 72 272 72   -  -
323  78 178 278 378 178 78 278 78   -  -
324  84 184 284 384 184 84 284 84   -  -
325  90 190 290 390 190 90 290 90 390 90
326}
327do_execsql_test joinD-22 {
328  SELECT t1.*, t2.*, t3.*, t4.*
329  FROM t1 INNER JOIN t2 ON t1.b=t2.b
330  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
331  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
332  WHERE t2.x>0
333  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
334} {
335   6 106 206 306 106  6 206  6   -  -
336  12 112 212 312 112 12 212 12   -  -
337  18 118 218 318 118 18 218 18   -  -
338  24 124 224 324 124 24 224 24   -  -
339  30 130 230 330 130 30 230 30 330 30
340  36 136 236 336 136 36 236 36   -  -
341  42 142 242 342 142 42 242 42   -  -
342  48 148 248 348 148 48 248 48   -  -
343  54 154 254 354 154 54 254 54   -  -
344  60 160 260 360 160 60 260 60 360 60
345  66 166 266 366 166 66 266 66   -  -
346  72 172 272 372 172 72 272 72   -  -
347  78 178 278 378 178 78 278 78   -  -
348  84 184 284 384 184 84 284 84   -  -
349  90 190 290 390 190 90 290 90 390 90
350}
351do_execsql_test joinD-23 {
352  SELECT t1.*, t2.*, t3.*, t4.*
353  FROM t1 INNER JOIN t2 ON t1.b=t2.b
354  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
355  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
356  WHERE (t2.x>0 OR t2.x IS NULL)
357  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
358} {
359   6 106 206 306 106  6 206  6   -  -
360  12 112 212 312 112 12 212 12   -  -
361  18 118 218 318 118 18 218 18   -  -
362  24 124 224 324 124 24 224 24   -  -
363  30 130 230 330 130 30 230 30 330 30
364  36 136 236 336 136 36 236 36   -  -
365  42 142 242 342 142 42 242 42   -  -
366  48 148 248 348 148 48 248 48   -  -
367  54 154 254 354 154 54 254 54   -  -
368  60 160 260 360 160 60 260 60 360 60
369  66 166 266 366 166 66 266 66   -  -
370  72 172 272 372 172 72 272 72   -  -
371  78 178 278 378 178 78 278 78   -  -
372  84 184 284 384 184 84 284 84   -  -
373  90 190 290 390 190 90 290 90 390 90
374}
375do_execsql_test joinD-24 {
376  SELECT t1.*, t2.*, t3.*, t4.*
377  FROM t1 INNER JOIN t2 ON true
378  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
379  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
380  WHERE t1.b=t2.b AND t2.x>0
381  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
382} {
383   6 106 206 306 106  6 206  6   -  -
384  12 112 212 312 112 12 212 12   -  -
385  18 118 218 318 118 18 218 18   -  -
386  24 124 224 324 124 24 224 24   -  -
387  30 130 230 330 130 30 230 30 330 30
388  36 136 236 336 136 36 236 36   -  -
389  42 142 242 342 142 42 242 42   -  -
390  48 148 248 348 148 48 248 48   -  -
391  54 154 254 354 154 54 254 54   -  -
392  60 160 260 360 160 60 260 60 360 60
393  66 166 266 366 166 66 266 66   -  -
394  72 172 272 372 172 72 272 72   -  -
395  78 178 278 378 178 78 278 78   -  -
396  84 184 284 384 184 84 284 84   -  -
397  90 190 290 390 190 90 290 90 390 90
398}
399do_execsql_test joinD-25 {
400  SELECT t1.*, t2.*, t3.*, t4.*
401  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
402  INNER JOIN t3 ON t1.c=t3.c
403  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
404  WHERE t3.y>0
405  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
406} {
407   6 106 206 306 106  6 206  6   -  -
408  12 112 212 312 112 12 212 12   -  -
409  18 118 218 318 118 18 218 18   -  -
410  24 124 224 324 124 24 224 24   -  -
411  30 130 230 330 130 30 230 30 330 30
412  36 136 236 336 136 36 236 36   -  -
413  42 142 242 342 142 42 242 42   -  -
414  48 148 248 348 148 48 248 48   -  -
415  54 154 254 354 154 54 254 54   -  -
416  60 160 260 360 160 60 260 60 360 60
417  66 166 266 366 166 66 266 66   -  -
418  72 172 272 372 172 72 272 72   -  -
419  78 178 278 378 178 78 278 78   -  -
420  84 184 284 384 184 84 284 84   -  -
421  90 190 290 390 190 90 290 90 390 90
422}
423do_execsql_test joinD-26 {
424  SELECT t1.*, t2.*, t3.*, t4.*
425  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
426  INNER JOIN t3 ON t1.c=t3.c
427  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
428  WHERE t3.y>0 OR t3.y IS NULL
429  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
430} {
431   6 106 206 306 106  6 206  6   -  -
432  12 112 212 312 112 12 212 12   -  -
433  18 118 218 318 118 18 218 18   -  -
434  24 124 224 324 124 24 224 24   -  -
435  30 130 230 330 130 30 230 30 330 30
436  36 136 236 336 136 36 236 36   -  -
437  42 142 242 342 142 42 242 42   -  -
438  48 148 248 348 148 48 248 48   -  -
439  54 154 254 354 154 54 254 54   -  -
440  60 160 260 360 160 60 260 60 360 60
441  66 166 266 366 166 66 266 66   -  -
442  72 172 272 372 172 72 272 72   -  -
443  78 178 278 378 178 78 278 78   -  -
444  84 184 284 384 184 84 284 84   -  -
445  90 190 290 390 190 90 290 90 390 90
446}
447do_execsql_test joinD-27 {
448  SELECT t1.*, t2.*, t3.*, t4.*
449  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
450  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
451  LEFT JOIN t4 ON t1.d=t4.d
452  WHERE t4.z>0
453  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
454} {
455  30 130 230 330 130 30 230 30 330 30
456  60 160 260 360 160 60 260 60 360 60
457  90 190 290 390 190 90 290 90 390 90
458}
459do_execsql_test joinD-28 {
460  SELECT t1.*, t2.*, t3.*, t4.*
461  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
462  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
463  LEFT JOIN t4 ON t1.d=t4.d
464  WHERE t4.z IS NULL OR t4.z>0
465  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
466} {
467   6 106 206 306 106  6 206  6   -  -
468  12 112 212 312 112 12 212 12   -  -
469  18 118 218 318 118 18 218 18   -  -
470  24 124 224 324 124 24 224 24   -  -
471  30 130 230 330 130 30 230 30 330 30
472  36 136 236 336 136 36 236 36   -  -
473  42 142 242 342 142 42 242 42   -  -
474  48 148 248 348 148 48 248 48   -  -
475  54 154 254 354 154 54 254 54   -  -
476  60 160 260 360 160 60 260 60 360 60
477  66 166 266 366 166 66 266 66   -  -
478  72 172 272 372 172 72 272 72   -  -
479  78 178 278 378 178 78 278 78   -  -
480  84 184 284 384 184 84 284 84   -  -
481  90 190 290 390 190 90 290 90 390 90
482}
483do_execsql_test joinD-29 {
484  SELECT t1.*, t2.*, t3.*, t4.*
485  FROM t1 INNER JOIN t2 ON t1.b=t2.b
486  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
487  LEFT JOIN t4 ON t1.d=t4.d
488  WHERE t2.x>0 AND t4.z>0
489  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
490} {
491  30 130 230 330 130 30 230 30 330 30
492  60 160 260 360 160 60 260 60 360 60
493  90 190 290 390 190 90 290 90 390 90
494}
495do_execsql_test joinD-30 {
496  SELECT t1.*, t2.*, t3.*, t4.*
497  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
498  INNER JOIN t3 ON t1.c=t3.c
499  LEFT JOIN t4 ON t1.d=t4.d
500  WHERE t4.z>0 AND t3.y>0
501  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
502} {
503  30 130 230 330 130 30 230 30 330 30
504  60 160 260 360 160 60 260 60 360 60
505  90 190 290 390 190 90 290 90 390 90
506}
507do_execsql_test joinD-31 {
508  SELECT t1.*, t2.*, t3.*, t4.*
509  FROM t1 INNER JOIN t2 ON t1.b=t2.b
510  INNER JOIN t3 ON t1.c=t3.c
511  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
512  WHERE t2.x>0 AND t3.y>0
513  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
514} {
515   6 106 206 306 106  6 206  6   -  -
516  12 112 212 312 112 12 212 12   -  -
517  18 118 218 318 118 18 218 18   -  -
518  24 124 224 324 124 24 224 24   -  -
519  30 130 230 330 130 30 230 30 330 30
520  36 136 236 336 136 36 236 36   -  -
521  42 142 242 342 142 42 242 42   -  -
522  48 148 248 348 148 48 248 48   -  -
523  54 154 254 354 154 54 254 54   -  -
524  60 160 260 360 160 60 260 60 360 60
525  66 166 266 366 166 66 266 66   -  -
526  72 172 272 372 172 72 272 72   -  -
527  78 178 278 378 178 78 278 78   -  -
528  84 184 284 384 184 84 284 84   -  -
529  90 190 290 390 190 90 290 90 390 90
530}
531do_execsql_test joinD-32 {
532  SELECT t1.*, t2.*, t3.*, t4.*
533  FROM t1 INNER JOIN t2 ON t1.b=t2.b
534  INNER JOIN t3 ON t1.c=t3.c
535  LEFT JOIN t4 ON t1.d=t4.d
536  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
537  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
538} {
539  30 130 230 330 130 30 230 30 330 30
540  60 160 260 360 160 60 260 60 360 60
541  90 190 290 390 190 90 290 90 390 90
542}
543do_execsql_test joinD-33 {
544  SELECT t1.*, t2.*, t3.*, t4.*
545  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
546  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
547  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
548  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
549} {
550   6 106 206 306 106  6 206  6   -  -
551  12 112 212 312 112 12 212 12   -  -
552  18 118 218 318 118 18 218 18   -  -
553  24 124 224 324 124 24 224 24   -  -
554  30 130 230 330 130 30 230 30 330 30
555  36 136 236 336 136 36 236 36   -  -
556  42 142 242 342 142 42 242 42   -  -
557  48 148 248 348 148 48 248 48   -  -
558  54 154 254 354 154 54 254 54   -  -
559  60 160 260 360 160 60 260 60 360 60
560  66 166 266 366 166 66 266 66   -  -
561  72 172 272 372 172 72 272 72   -  -
562  78 178 278 378 178 78 278 78   -  -
563  84 184 284 384 184 84 284 84   -  -
564  90 190 290 390 190 90 290 90 390 90
565}
566do_execsql_test joinD-34 {
567  SELECT t1.*, t2.*, t3.*, t4.*
568  FROM t1 INNER JOIN t2 ON t2.x>0
569  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
570  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
571  WHERE t1.b IS NOT DISTINCT FROM t2.b
572  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
573} {
574   6 106 206 306 106  6 206  6   -  -
575  12 112 212 312 112 12 212 12   -  -
576  18 118 218 318 118 18 218 18   -  -
577  24 124 224 324 124 24 224 24   -  -
578  30 130 230 330 130 30 230 30 330 30
579  36 136 236 336 136 36 236 36   -  -
580  42 142 242 342 142 42 242 42   -  -
581  48 148 248 348 148 48 248 48   -  -
582  54 154 254 354 154 54 254 54   -  -
583  60 160 260 360 160 60 260 60 360 60
584  66 166 266 366 166 66 266 66   -  -
585  72 172 272 372 172 72 272 72   -  -
586  78 178 278 378 178 78 278 78   -  -
587  84 184 284 384 184 84 284 84   -  -
588  90 190 290 390 190 90 290 90 390 90
589}
590do_execsql_test joinD-35 {
591  SELECT t1.*, t2.*, t3.*, t4.*
592  FROM t1 INNER JOIN t2 ON t2.x>0
593  INNER JOIN t3 ON t3.y>0
594  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
595  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
596  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
597} {
598   6 106 206 306 106  6 206  6   -  -
599  12 112 212 312 112 12 212 12   -  -
600  18 118 218 318 118 18 218 18   -  -
601  24 124 224 324 124 24 224 24   -  -
602  30 130 230 330 130 30 230 30 330 30
603  36 136 236 336 136 36 236 36   -  -
604  42 142 242 342 142 42 242 42   -  -
605  48 148 248 348 148 48 248 48   -  -
606  54 154 254 354 154 54 254 54   -  -
607  60 160 260 360 160 60 260 60 360 60
608  66 166 266 366 166 66 266 66   -  -
609  72 172 272 372 172 72 272 72   -  -
610  78 178 278 378 178 78 278 78   -  -
611  84 184 284 384 184 84 284 84   -  -
612  90 190 290 390 190 90 290 90 390 90
613}
614do_execsql_test joinD-36 {
615  SELECT t1.*, t2.*, t3.*, t4.*
616  FROM t1 INNER JOIN t2 ON t2.x>0
617  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
618  LEFT JOIN t4 ON t4.z>0
619  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
620  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
621} {
622  30 130 230 330 130 30 230 30 330 30
623  60 160 260 360 160 60 260 60 360 60
624  90 190 290 390 190 90 290 90 390 90
625}
626do_execsql_test joinD-37 {
627  SELECT t1.*, t2.*, t3.*, t4.*
628  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
629  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
630  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
631  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
632} {
633   6 106 206 306 106  6 206  6   -  -
634  12 112 212 312 112 12 212 12   -  -
635  18 118 218 318 118 18 218 18   -  -
636  24 124 224 324 124 24 224 24   -  -
637  30 130 230 330 130 30 230 30 330 30
638  36 136 236 336 136 36 236 36   -  -
639  42 142 242 342 142 42 242 42   -  -
640  48 148 248 348 148 48 248 48   -  -
641  54 154 254 354 154 54 254 54   -  -
642  60 160 260 360 160 60 260 60 360 60
643  66 166 266 366 166 66 266 66   -  -
644  72 172 272 372 172 72 272 72   -  -
645  78 178 278 378 178 78 278 78   -  -
646  84 184 284 384 184 84 284 84   -  -
647  90 190 290 390 190 90 290 90 390 90
648}
649do_execsql_test joinD-38 {
650  SELECT t1.*, t2.*, t3.*, t4.*
651  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
652  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
653  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
654  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
655} {
656   6 106 206 306 106  6 206  6   -  -
657  12 112 212 312 112 12 212 12   -  -
658  18 118 218 318 118 18 218 18   -  -
659  24 124 224 324 124 24 224 24   -  -
660  30 130 230 330 130 30 230 30 330 30
661  36 136 236 336 136 36 236 36   -  -
662  42 142 242 342 142 42 242 42   -  -
663  48 148 248 348 148 48 248 48   -  -
664  54 154 254 354 154 54 254 54   -  -
665  60 160 260 360 160 60 260 60 360 60
666  66 166 266 366 166 66 266 66   -  -
667  72 172 272 372 172 72 272 72   -  -
668  78 178 278 378 178 78 278 78   -  -
669  84 184 284 384 184 84 284 84   -  -
670  90 190 290 390 190 90 290 90 390 90
671}
672do_execsql_test joinD-39 {
673  SELECT t1.*, t2.*, t3.*, t4.*
674  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
675  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
676  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
677  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
678} {
679  30 130 230 330 130 30 230 30 330 30
680  60 160 260 360 160 60 260 60 360 60
681  90 190 290 390 190 90 290 90 390 90
682   -   -   -   -   -  -   -  - 300  0
683   -   -   -   -   -  -   -  - 305  5
684   -   -   -   -   -  -   -  - 310 10
685   -   -   -   -   -  -   -  - 315 15
686   -   -   -   -   -  -   -  - 320 20
687   -   -   -   -   -  -   -  - 325 25
688   -   -   -   -   -  -   -  - 335 35
689   -   -   -   -   -  -   -  - 340 40
690   -   -   -   -   -  -   -  - 345 45
691   -   -   -   -   -  -   -  - 350 50
692   -   -   -   -   -  -   -  - 355 55
693   -   -   -   -   -  -   -  - 365 65
694   -   -   -   -   -  -   -  - 370 70
695   -   -   -   -   -  -   -  - 375 75
696   -   -   -   -   -  -   -  - 380 80
697   -   -   -   -   -  -   -  - 385 85
698   -   -   -   -   -  -   -  - 395 95
699}
700do_execsql_test joinD-40 {
701  SELECT t1.*, t2.*, t3.*, t4.*
702  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
703  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
704  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
705  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
706} {
707  30 130 230 330 130 30 230 30 330 30
708  60 160 260 360 160 60 260 60 360 60
709  90 190 290 390 190 90 290 90 390 90
710   -   -   -   -   -  -   -  - 300  0
711   -   -   -   -   -  -   -  - 305  5
712   -   -   -   -   -  -   -  - 310 10
713   -   -   -   -   -  -   -  - 315 15
714   -   -   -   -   -  -   -  - 320 20
715   -   -   -   -   -  -   -  - 325 25
716   -   -   -   -   -  -   -  - 335 35
717   -   -   -   -   -  -   -  - 340 40
718   -   -   -   -   -  -   -  - 345 45
719   -   -   -   -   -  -   -  - 350 50
720   -   -   -   -   -  -   -  - 355 55
721   -   -   -   -   -  -   -  - 365 65
722   -   -   -   -   -  -   -  - 370 70
723   -   -   -   -   -  -   -  - 375 75
724   -   -   -   -   -  -   -  - 380 80
725   -   -   -   -   -  -   -  - 385 85
726   -   -   -   -   -  -   -  - 395 95
727}
728do_execsql_test joinD-41 {
729  SELECT t1.*, t2.*, t3.*, t4.*
730  FROM t1 INNER JOIN t2 ON t1.b=t2.b
731  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
732  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
733  WHERE t2.x>0
734  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
735} {
736  30 130 230 330 130 30 230 30 330 30
737  60 160 260 360 160 60 260 60 360 60
738  90 190 290 390 190 90 290 90 390 90
739}
740do_execsql_test joinD-42 {
741  SELECT t1.*, t2.*, t3.*, t4.*
742  FROM t1 INNER JOIN t2 ON t1.b=t2.b
743  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
744  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
745  WHERE (t2.x>0 OR t2.x IS NULL)
746  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
747} {
748  30 130 230 330 130 30 230 30 330 30
749  60 160 260 360 160 60 260 60 360 60
750  90 190 290 390 190 90 290 90 390 90
751   -   -   -   -   -  -   -  - 300  0
752   -   -   -   -   -  -   -  - 305  5
753   -   -   -   -   -  -   -  - 310 10
754   -   -   -   -   -  -   -  - 315 15
755   -   -   -   -   -  -   -  - 320 20
756   -   -   -   -   -  -   -  - 325 25
757   -   -   -   -   -  -   -  - 335 35
758   -   -   -   -   -  -   -  - 340 40
759   -   -   -   -   -  -   -  - 345 45
760   -   -   -   -   -  -   -  - 350 50
761   -   -   -   -   -  -   -  - 355 55
762   -   -   -   -   -  -   -  - 365 65
763   -   -   -   -   -  -   -  - 370 70
764   -   -   -   -   -  -   -  - 375 75
765   -   -   -   -   -  -   -  - 380 80
766   -   -   -   -   -  -   -  - 385 85
767   -   -   -   -   -  -   -  - 395 95
768}
769do_execsql_test joinD-43 {
770  SELECT t1.*, t2.*, t3.*, t4.*
771  FROM t1 INNER JOIN t2 ON true
772  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
773  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
774  WHERE t1.b=t2.b AND t2.x>0
775  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
776} {
777  30 130 230 330 130 30 230 30 330 30
778  60 160 260 360 160 60 260 60 360 60
779  90 190 290 390 190 90 290 90 390 90
780}
781do_execsql_test joinD-44 {
782  SELECT t1.*, t2.*, t3.*, t4.*
783  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
784  INNER JOIN t3 ON t1.c=t3.c
785  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
786  WHERE t3.y>0
787  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
788} {
789  30 130 230 330 130 30 230 30 330 30
790  60 160 260 360 160 60 260 60 360 60
791  90 190 290 390 190 90 290 90 390 90
792}
793do_execsql_test joinD-45 {
794  SELECT t1.*, t2.*, t3.*, t4.*
795  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
796  INNER JOIN t3 ON t1.c=t3.c
797  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
798  WHERE t3.y>0 OR t3.y IS NULL
799  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
800} {
801  30 130 230 330 130 30 230 30 330 30
802  60 160 260 360 160 60 260 60 360 60
803  90 190 290 390 190 90 290 90 390 90
804   -   -   -   -   -  -   -  - 300  0
805   -   -   -   -   -  -   -  - 305  5
806   -   -   -   -   -  -   -  - 310 10
807   -   -   -   -   -  -   -  - 315 15
808   -   -   -   -   -  -   -  - 320 20
809   -   -   -   -   -  -   -  - 325 25
810   -   -   -   -   -  -   -  - 335 35
811   -   -   -   -   -  -   -  - 340 40
812   -   -   -   -   -  -   -  - 345 45
813   -   -   -   -   -  -   -  - 350 50
814   -   -   -   -   -  -   -  - 355 55
815   -   -   -   -   -  -   -  - 365 65
816   -   -   -   -   -  -   -  - 370 70
817   -   -   -   -   -  -   -  - 375 75
818   -   -   -   -   -  -   -  - 380 80
819   -   -   -   -   -  -   -  - 385 85
820   -   -   -   -   -  -   -  - 395 95
821}
822do_execsql_test joinD-46 {
823  SELECT t1.*, t2.*, t3.*, t4.*
824  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
825  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
826  RIGHT JOIN t4 ON t1.d=t4.d
827  WHERE t4.z>0
828  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
829} {
830  30 130 230 330 130 30 230 30 330 30
831  60 160 260 360 160 60 260 60 360 60
832  90 190 290 390 190 90 290 90 390 90
833   -   -   -   -   -  -   -  - 305  5
834   -   -   -   -   -  -   -  - 310 10
835   -   -   -   -   -  -   -  - 315 15
836   -   -   -   -   -  -   -  - 320 20
837   -   -   -   -   -  -   -  - 325 25
838   -   -   -   -   -  -   -  - 335 35
839   -   -   -   -   -  -   -  - 340 40
840   -   -   -   -   -  -   -  - 345 45
841   -   -   -   -   -  -   -  - 350 50
842   -   -   -   -   -  -   -  - 355 55
843   -   -   -   -   -  -   -  - 365 65
844   -   -   -   -   -  -   -  - 370 70
845   -   -   -   -   -  -   -  - 375 75
846   -   -   -   -   -  -   -  - 380 80
847   -   -   -   -   -  -   -  - 385 85
848   -   -   -   -   -  -   -  - 395 95
849}
850do_execsql_test joinD-47 {
851  SELECT t1.*, t2.*, t3.*, t4.*
852  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
853  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
854  RIGHT JOIN t4 ON t1.d=t4.d
855  WHERE t4.z IS NULL OR t4.z>0
856  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
857} {
858  30 130 230 330 130 30 230 30 330 30
859  60 160 260 360 160 60 260 60 360 60
860  90 190 290 390 190 90 290 90 390 90
861   -   -   -   -   -  -   -  - 305  5
862   -   -   -   -   -  -   -  - 310 10
863   -   -   -   -   -  -   -  - 315 15
864   -   -   -   -   -  -   -  - 320 20
865   -   -   -   -   -  -   -  - 325 25
866   -   -   -   -   -  -   -  - 335 35
867   -   -   -   -   -  -   -  - 340 40
868   -   -   -   -   -  -   -  - 345 45
869   -   -   -   -   -  -   -  - 350 50
870   -   -   -   -   -  -   -  - 355 55
871   -   -   -   -   -  -   -  - 365 65
872   -   -   -   -   -  -   -  - 370 70
873   -   -   -   -   -  -   -  - 375 75
874   -   -   -   -   -  -   -  - 380 80
875   -   -   -   -   -  -   -  - 385 85
876   -   -   -   -   -  -   -  - 395 95
877}
878do_execsql_test joinD-48 {
879  SELECT t1.*, t2.*, t3.*, t4.*
880  FROM t1 INNER JOIN t2 ON t1.b=t2.b
881  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
882  RIGHT JOIN t4 ON t1.d=t4.d
883  WHERE t2.x>0 AND t4.z>0
884  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
885} {
886  30 130 230 330 130 30 230 30 330 30
887  60 160 260 360 160 60 260 60 360 60
888  90 190 290 390 190 90 290 90 390 90
889}
890do_execsql_test joinD-49 {
891  SELECT t1.*, t2.*, t3.*, t4.*
892  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
893  INNER JOIN t3 ON t1.c=t3.c
894  RIGHT JOIN t4 ON t1.d=t4.d
895  WHERE t4.z>0 AND t3.y>0
896  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
897} {
898  30 130 230 330 130 30 230 30 330 30
899  60 160 260 360 160 60 260 60 360 60
900  90 190 290 390 190 90 290 90 390 90
901}
902do_execsql_test joinD-50 {
903  SELECT t1.*, t2.*, t3.*, t4.*
904  FROM t1 INNER JOIN t2 ON t1.b=t2.b
905  INNER JOIN t3 ON t1.c=t3.c
906  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
907  WHERE t2.x>0 AND t3.y>0
908  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
909} {
910  30 130 230 330 130 30 230 30 330 30
911  60 160 260 360 160 60 260 60 360 60
912  90 190 290 390 190 90 290 90 390 90
913}
914do_execsql_test joinD-51 {
915  SELECT t1.*, t2.*, t3.*, t4.*
916  FROM t1 INNER JOIN t2 ON t1.b=t2.b
917  INNER JOIN t3 ON t1.c=t3.c
918  RIGHT JOIN t4 ON t1.d=t4.d
919  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
920  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
921} {
922  30 130 230 330 130 30 230 30 330 30
923  60 160 260 360 160 60 260 60 360 60
924  90 190 290 390 190 90 290 90 390 90
925}
926do_execsql_test joinD-52 {
927  SELECT t1.*, t2.*, t3.*, t4.*
928  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
929  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
930  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
931  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
932} {
933  30 130 230 330 130 30 230 30 330 30
934  60 160 260 360 160 60 260 60 360 60
935  90 190 290 390 190 90 290 90 390 90
936   -   -   -   -   -  -   -  - 300  0
937   -   -   -   -   -  -   -  - 305  5
938   -   -   -   -   -  -   -  - 310 10
939   -   -   -   -   -  -   -  - 315 15
940   -   -   -   -   -  -   -  - 320 20
941   -   -   -   -   -  -   -  - 325 25
942   -   -   -   -   -  -   -  - 335 35
943   -   -   -   -   -  -   -  - 340 40
944   -   -   -   -   -  -   -  - 345 45
945   -   -   -   -   -  -   -  - 350 50
946   -   -   -   -   -  -   -  - 355 55
947   -   -   -   -   -  -   -  - 365 65
948   -   -   -   -   -  -   -  - 370 70
949   -   -   -   -   -  -   -  - 375 75
950   -   -   -   -   -  -   -  - 380 80
951   -   -   -   -   -  -   -  - 385 85
952   -   -   -   -   -  -   -  - 395 95
953}
954do_execsql_test joinD-53 {
955  SELECT t1.*, t2.*, t3.*, t4.*
956  FROM t1 INNER JOIN t2 ON t2.x>0
957  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
958  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
959  WHERE t1.b IS NOT DISTINCT FROM t2.b
960  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
961} {
962  30 130 230 330 130 30 230 30 330 30
963  60 160 260 360 160 60 260 60 360 60
964  90 190 290 390 190 90 290 90 390 90
965   -   -   -   -   -  -   -  - 300  0
966   -   -   -   -   -  -   -  - 305  5
967   -   -   -   -   -  -   -  - 310 10
968   -   -   -   -   -  -   -  - 320 20
969   -   -   -   -   -  -   -  - 325 25
970   -   -   -   -   -  -   -  - 335 35
971   -   -   -   -   -  -   -  - 340 40
972   -   -   -   -   -  -   -  - 350 50
973   -   -   -   -   -  -   -  - 355 55
974   -   -   -   -   -  -   -  - 365 65
975   -   -   -   -   -  -   -  - 370 70
976   -   -   -   -   -  -   -  - 380 80
977   -   -   -   -   -  -   -  - 385 85
978   -   -   -   -   -  -   -  - 395 95
979}
980do_execsql_test joinD-54 {
981  SELECT t1.*, t2.*, t3.*, t4.*
982  FROM t1 INNER JOIN t2 ON t2.x>0
983  INNER JOIN t3 ON t3.y>0
984  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
985  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
986  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
987} {
988  30 130 230 330 130 30 230 30 330 30
989  60 160 260 360 160 60 260 60 360 60
990  90 190 290 390 190 90 290 90 390 90
991   -   -   -   -   -  -   -  - 300  0
992}
993do_execsql_test joinD-55 {
994  SELECT t1.*, t2.*, t3.*, t4.*
995  FROM t1 INNER JOIN t2 ON t2.x>0
996  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
997  RIGHT JOIN t4 ON t4.z>0
998  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
999  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1000} {
1001  30 130 230 330 130 30 230 30 330 30
1002  60 160 260 360 160 60 260 60 360 60
1003  90 190 290 390 190 90 290 90 390 90
1004}
1005do_execsql_test joinD-56 {
1006  SELECT t1.*, t2.*, t3.*, t4.*
1007  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
1008  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1009  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1010  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1011} {
1012  30 130 230 330 130 30 230 30 330 30
1013  60 160 260 360 160 60 260 60 360 60
1014  90 190 290 390 190 90 290 90 390 90
1015   -   -   -   -   -  -   -  - 300  0
1016   -   -   -   -   -  -   -  - 305  5
1017   -   -   -   -   -  -   -  - 310 10
1018   -   -   -   -   -  -   -  - 315 15
1019   -   -   -   -   -  -   -  - 320 20
1020   -   -   -   -   -  -   -  - 325 25
1021   -   -   -   -   -  -   -  - 335 35
1022   -   -   -   -   -  -   -  - 340 40
1023   -   -   -   -   -  -   -  - 345 45
1024   -   -   -   -   -  -   -  - 350 50
1025   -   -   -   -   -  -   -  - 355 55
1026   -   -   -   -   -  -   -  - 365 65
1027   -   -   -   -   -  -   -  - 370 70
1028   -   -   -   -   -  -   -  - 375 75
1029   -   -   -   -   -  -   -  - 380 80
1030   -   -   -   -   -  -   -  - 385 85
1031   -   -   -   -   -  -   -  - 395 95
1032}
1033do_execsql_test joinD-57 {
1034  SELECT t1.*, t2.*, t3.*, t4.*
1035  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1036  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
1037  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1038  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1039} {
1040  30 130 230 330 130 30 230 30 330 30
1041  60 160 260 360 160 60 260 60 360 60
1042  90 190 290 390 190 90 290 90 390 90
1043   -   -   -   -   -  -   -  - 300  0
1044   -   -   -   -   -  -   -  - 305  5
1045   -   -   -   -   -  -   -  - 310 10
1046   -   -   -   -   -  -   -  - 315 15
1047   -   -   -   -   -  -   -  - 320 20
1048   -   -   -   -   -  -   -  - 325 25
1049   -   -   -   -   -  -   -  - 335 35
1050   -   -   -   -   -  -   -  - 340 40
1051   -   -   -   -   -  -   -  - 345 45
1052   -   -   -   -   -  -   -  - 350 50
1053   -   -   -   -   -  -   -  - 355 55
1054   -   -   -   -   -  -   -  - 365 65
1055   -   -   -   -   -  -   -  - 370 70
1056   -   -   -   -   -  -   -  - 375 75
1057   -   -   -   -   -  -   -  - 380 80
1058   -   -   -   -   -  -   -  - 385 85
1059   -   -   -   -   -  -   -  - 395 95
1060}
1061do_execsql_test joinD-58 {
1062  SELECT t1.*, t2.*, t3.*, t4.*
1063  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1064  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1065  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1066  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1067} {
1068   6 106 206 306 106  6 206  6   -  -
1069  12 112 212 312 112 12 212 12   -  -
1070  18 118 218 318 118 18 218 18   -  -
1071  24 124 224 324 124 24 224 24   -  -
1072  30 130 230 330 130 30 230 30 330 30
1073  36 136 236 336 136 36 236 36   -  -
1074  42 142 242 342 142 42 242 42   -  -
1075  48 148 248 348 148 48 248 48   -  -
1076  54 154 254 354 154 54 254 54   -  -
1077  60 160 260 360 160 60 260 60 360 60
1078  66 166 266 366 166 66 266 66   -  -
1079  72 172 272 372 172 72 272 72   -  -
1080  78 178 278 378 178 78 278 78   -  -
1081  84 184 284 384 184 84 284 84   -  -
1082  90 190 290 390 190 90 290 90 390 90
1083   -   -   -   -   -  -   -  - 300  0
1084   -   -   -   -   -  -   -  - 305  5
1085   -   -   -   -   -  -   -  - 310 10
1086   -   -   -   -   -  -   -  - 315 15
1087   -   -   -   -   -  -   -  - 320 20
1088   -   -   -   -   -  -   -  - 325 25
1089   -   -   -   -   -  -   -  - 335 35
1090   -   -   -   -   -  -   -  - 340 40
1091   -   -   -   -   -  -   -  - 345 45
1092   -   -   -   -   -  -   -  - 350 50
1093   -   -   -   -   -  -   -  - 355 55
1094   -   -   -   -   -  -   -  - 365 65
1095   -   -   -   -   -  -   -  - 370 70
1096   -   -   -   -   -  -   -  - 375 75
1097   -   -   -   -   -  -   -  - 380 80
1098   -   -   -   -   -  -   -  - 385 85
1099   -   -   -   -   -  -   -  - 395 95
1100}
1101do_execsql_test joinD-59 {
1102  SELECT t1.*, t2.*, t3.*, t4.*
1103  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1104  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1105  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1106  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1107} {
1108   6 106 206 306 106  6 206  6   -  -
1109  12 112 212 312 112 12 212 12   -  -
1110  18 118 218 318 118 18 218 18   -  -
1111  24 124 224 324 124 24 224 24   -  -
1112  30 130 230 330 130 30 230 30 330 30
1113  36 136 236 336 136 36 236 36   -  -
1114  42 142 242 342 142 42 242 42   -  -
1115  48 148 248 348 148 48 248 48   -  -
1116  54 154 254 354 154 54 254 54   -  -
1117  60 160 260 360 160 60 260 60 360 60
1118  66 166 266 366 166 66 266 66   -  -
1119  72 172 272 372 172 72 272 72   -  -
1120  78 178 278 378 178 78 278 78   -  -
1121  84 184 284 384 184 84 284 84   -  -
1122  90 190 290 390 190 90 290 90 390 90
1123   -   -   -   -   -  -   -  - 300  0
1124   -   -   -   -   -  -   -  - 305  5
1125   -   -   -   -   -  -   -  - 310 10
1126   -   -   -   -   -  -   -  - 315 15
1127   -   -   -   -   -  -   -  - 320 20
1128   -   -   -   -   -  -   -  - 325 25
1129   -   -   -   -   -  -   -  - 335 35
1130   -   -   -   -   -  -   -  - 340 40
1131   -   -   -   -   -  -   -  - 345 45
1132   -   -   -   -   -  -   -  - 350 50
1133   -   -   -   -   -  -   -  - 355 55
1134   -   -   -   -   -  -   -  - 365 65
1135   -   -   -   -   -  -   -  - 370 70
1136   -   -   -   -   -  -   -  - 375 75
1137   -   -   -   -   -  -   -  - 380 80
1138   -   -   -   -   -  -   -  - 385 85
1139   -   -   -   -   -  -   -  - 395 95
1140}
1141do_execsql_test joinD-60 {
1142  SELECT t1.*, t2.*, t3.*, t4.*
1143  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1144  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1145  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1146  WHERE t2.x>0
1147  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1148} {
1149   6 106 206 306 106  6 206  6   -  -
1150  12 112 212 312 112 12 212 12   -  -
1151  18 118 218 318 118 18 218 18   -  -
1152  24 124 224 324 124 24 224 24   -  -
1153  30 130 230 330 130 30 230 30 330 30
1154  36 136 236 336 136 36 236 36   -  -
1155  42 142 242 342 142 42 242 42   -  -
1156  48 148 248 348 148 48 248 48   -  -
1157  54 154 254 354 154 54 254 54   -  -
1158  60 160 260 360 160 60 260 60 360 60
1159  66 166 266 366 166 66 266 66   -  -
1160  72 172 272 372 172 72 272 72   -  -
1161  78 178 278 378 178 78 278 78   -  -
1162  84 184 284 384 184 84 284 84   -  -
1163  90 190 290 390 190 90 290 90 390 90
1164}
1165do_execsql_test joinD-61 {
1166  SELECT t1.*, t2.*, t3.*, t4.*
1167  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1168  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1169  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1170  WHERE (t2.x>0 OR t2.x IS NULL)
1171  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1172} {
1173   6 106 206 306 106  6 206  6   -  -
1174  12 112 212 312 112 12 212 12   -  -
1175  18 118 218 318 118 18 218 18   -  -
1176  24 124 224 324 124 24 224 24   -  -
1177  30 130 230 330 130 30 230 30 330 30
1178  36 136 236 336 136 36 236 36   -  -
1179  42 142 242 342 142 42 242 42   -  -
1180  48 148 248 348 148 48 248 48   -  -
1181  54 154 254 354 154 54 254 54   -  -
1182  60 160 260 360 160 60 260 60 360 60
1183  66 166 266 366 166 66 266 66   -  -
1184  72 172 272 372 172 72 272 72   -  -
1185  78 178 278 378 178 78 278 78   -  -
1186  84 184 284 384 184 84 284 84   -  -
1187  90 190 290 390 190 90 290 90 390 90
1188   -   -   -   -   -  -   -  - 300  0
1189   -   -   -   -   -  -   -  - 305  5
1190   -   -   -   -   -  -   -  - 310 10
1191   -   -   -   -   -  -   -  - 315 15
1192   -   -   -   -   -  -   -  - 320 20
1193   -   -   -   -   -  -   -  - 325 25
1194   -   -   -   -   -  -   -  - 335 35
1195   -   -   -   -   -  -   -  - 340 40
1196   -   -   -   -   -  -   -  - 345 45
1197   -   -   -   -   -  -   -  - 350 50
1198   -   -   -   -   -  -   -  - 355 55
1199   -   -   -   -   -  -   -  - 365 65
1200   -   -   -   -   -  -   -  - 370 70
1201   -   -   -   -   -  -   -  - 375 75
1202   -   -   -   -   -  -   -  - 380 80
1203   -   -   -   -   -  -   -  - 385 85
1204   -   -   -   -   -  -   -  - 395 95
1205}
1206do_execsql_test joinD-62 {
1207  SELECT t1.*, t2.*, t3.*, t4.*
1208  FROM t1 INNER JOIN t2 ON true
1209  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1210  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1211  WHERE t1.b=t2.b AND t2.x>0
1212  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1213} {
1214   6 106 206 306 106  6 206  6   -  -
1215  12 112 212 312 112 12 212 12   -  -
1216  18 118 218 318 118 18 218 18   -  -
1217  24 124 224 324 124 24 224 24   -  -
1218  30 130 230 330 130 30 230 30 330 30
1219  36 136 236 336 136 36 236 36   -  -
1220  42 142 242 342 142 42 242 42   -  -
1221  48 148 248 348 148 48 248 48   -  -
1222  54 154 254 354 154 54 254 54   -  -
1223  60 160 260 360 160 60 260 60 360 60
1224  66 166 266 366 166 66 266 66   -  -
1225  72 172 272 372 172 72 272 72   -  -
1226  78 178 278 378 178 78 278 78   -  -
1227  84 184 284 384 184 84 284 84   -  -
1228  90 190 290 390 190 90 290 90 390 90
1229}
1230do_execsql_test joinD-63 {
1231  SELECT t1.*, t2.*, t3.*, t4.*
1232  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1233  INNER JOIN t3 ON t1.c=t3.c
1234  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1235  WHERE t3.y>0
1236  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1237} {
1238   6 106 206 306 106  6 206  6   -  -
1239  12 112 212 312 112 12 212 12   -  -
1240  18 118 218 318 118 18 218 18   -  -
1241  24 124 224 324 124 24 224 24   -  -
1242  30 130 230 330 130 30 230 30 330 30
1243  36 136 236 336 136 36 236 36   -  -
1244  42 142 242 342 142 42 242 42   -  -
1245  48 148 248 348 148 48 248 48   -  -
1246  54 154 254 354 154 54 254 54   -  -
1247  60 160 260 360 160 60 260 60 360 60
1248  66 166 266 366 166 66 266 66   -  -
1249  72 172 272 372 172 72 272 72   -  -
1250  78 178 278 378 178 78 278 78   -  -
1251  84 184 284 384 184 84 284 84   -  -
1252  90 190 290 390 190 90 290 90 390 90
1253}
1254do_execsql_test joinD-64 {
1255  SELECT t1.*, t2.*, t3.*, t4.*
1256  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1257  INNER JOIN t3 ON t1.c=t3.c
1258  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1259  WHERE t3.y>0 OR t3.y IS NULL
1260  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1261} {
1262   6 106 206 306 106  6 206  6   -  -
1263  12 112 212 312 112 12 212 12   -  -
1264  18 118 218 318 118 18 218 18   -  -
1265  24 124 224 324 124 24 224 24   -  -
1266  30 130 230 330 130 30 230 30 330 30
1267  36 136 236 336 136 36 236 36   -  -
1268  42 142 242 342 142 42 242 42   -  -
1269  48 148 248 348 148 48 248 48   -  -
1270  54 154 254 354 154 54 254 54   -  -
1271  60 160 260 360 160 60 260 60 360 60
1272  66 166 266 366 166 66 266 66   -  -
1273  72 172 272 372 172 72 272 72   -  -
1274  78 178 278 378 178 78 278 78   -  -
1275  84 184 284 384 184 84 284 84   -  -
1276  90 190 290 390 190 90 290 90 390 90
1277   -   -   -   -   -  -   -  - 300  0
1278   -   -   -   -   -  -   -  - 305  5
1279   -   -   -   -   -  -   -  - 310 10
1280   -   -   -   -   -  -   -  - 315 15
1281   -   -   -   -   -  -   -  - 320 20
1282   -   -   -   -   -  -   -  - 325 25
1283   -   -   -   -   -  -   -  - 335 35
1284   -   -   -   -   -  -   -  - 340 40
1285   -   -   -   -   -  -   -  - 345 45
1286   -   -   -   -   -  -   -  - 350 50
1287   -   -   -   -   -  -   -  - 355 55
1288   -   -   -   -   -  -   -  - 365 65
1289   -   -   -   -   -  -   -  - 370 70
1290   -   -   -   -   -  -   -  - 375 75
1291   -   -   -   -   -  -   -  - 380 80
1292   -   -   -   -   -  -   -  - 385 85
1293   -   -   -   -   -  -   -  - 395 95
1294}
1295do_execsql_test joinD-65 {
1296  SELECT t1.*, t2.*, t3.*, t4.*
1297  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1298  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1299  FULL JOIN t4 ON t1.d=t4.d
1300  WHERE t4.z>0
1301  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1302} {
1303  30 130 230 330 130 30 230 30 330 30
1304  60 160 260 360 160 60 260 60 360 60
1305  90 190 290 390 190 90 290 90 390 90
1306   -   -   -   -   -  -   -  - 305  5
1307   -   -   -   -   -  -   -  - 310 10
1308   -   -   -   -   -  -   -  - 315 15
1309   -   -   -   -   -  -   -  - 320 20
1310   -   -   -   -   -  -   -  - 325 25
1311   -   -   -   -   -  -   -  - 335 35
1312   -   -   -   -   -  -   -  - 340 40
1313   -   -   -   -   -  -   -  - 345 45
1314   -   -   -   -   -  -   -  - 350 50
1315   -   -   -   -   -  -   -  - 355 55
1316   -   -   -   -   -  -   -  - 365 65
1317   -   -   -   -   -  -   -  - 370 70
1318   -   -   -   -   -  -   -  - 375 75
1319   -   -   -   -   -  -   -  - 380 80
1320   -   -   -   -   -  -   -  - 385 85
1321   -   -   -   -   -  -   -  - 395 95
1322}
1323do_execsql_test joinD-66 {
1324  SELECT t1.*, t2.*, t3.*, t4.*
1325  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1326  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1327  FULL JOIN t4 ON t1.d=t4.d
1328  WHERE t4.z IS NULL OR t4.z>0
1329  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1330} {
1331   6 106 206 306 106  6 206  6   -  -
1332  12 112 212 312 112 12 212 12   -  -
1333  18 118 218 318 118 18 218 18   -  -
1334  24 124 224 324 124 24 224 24   -  -
1335  30 130 230 330 130 30 230 30 330 30
1336  36 136 236 336 136 36 236 36   -  -
1337  42 142 242 342 142 42 242 42   -  -
1338  48 148 248 348 148 48 248 48   -  -
1339  54 154 254 354 154 54 254 54   -  -
1340  60 160 260 360 160 60 260 60 360 60
1341  66 166 266 366 166 66 266 66   -  -
1342  72 172 272 372 172 72 272 72   -  -
1343  78 178 278 378 178 78 278 78   -  -
1344  84 184 284 384 184 84 284 84   -  -
1345  90 190 290 390 190 90 290 90 390 90
1346   -   -   -   -   -  -   -  - 305  5
1347   -   -   -   -   -  -   -  - 310 10
1348   -   -   -   -   -  -   -  - 315 15
1349   -   -   -   -   -  -   -  - 320 20
1350   -   -   -   -   -  -   -  - 325 25
1351   -   -   -   -   -  -   -  - 335 35
1352   -   -   -   -   -  -   -  - 340 40
1353   -   -   -   -   -  -   -  - 345 45
1354   -   -   -   -   -  -   -  - 350 50
1355   -   -   -   -   -  -   -  - 355 55
1356   -   -   -   -   -  -   -  - 365 65
1357   -   -   -   -   -  -   -  - 370 70
1358   -   -   -   -   -  -   -  - 375 75
1359   -   -   -   -   -  -   -  - 380 80
1360   -   -   -   -   -  -   -  - 385 85
1361   -   -   -   -   -  -   -  - 395 95
1362}
1363do_execsql_test joinD-67 {
1364  SELECT t1.*, t2.*, t3.*, t4.*
1365  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1366  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1367  FULL JOIN t4 ON t1.d=t4.d
1368  WHERE t2.x>0 AND t4.z>0
1369  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1370} {
1371  30 130 230 330 130 30 230 30 330 30
1372  60 160 260 360 160 60 260 60 360 60
1373  90 190 290 390 190 90 290 90 390 90
1374}
1375do_execsql_test joinD-68 {
1376  SELECT t1.*, t2.*, t3.*, t4.*
1377  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1378  INNER JOIN t3 ON t1.c=t3.c
1379  FULL JOIN t4 ON t1.d=t4.d
1380  WHERE t4.z>0 AND t3.y>0
1381  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1382} {
1383  30 130 230 330 130 30 230 30 330 30
1384  60 160 260 360 160 60 260 60 360 60
1385  90 190 290 390 190 90 290 90 390 90
1386}
1387do_execsql_test joinD-69 {
1388  SELECT t1.*, t2.*, t3.*, t4.*
1389  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1390  INNER JOIN t3 ON t1.c=t3.c
1391  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1392  WHERE t2.x>0 AND t3.y>0
1393  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1394} {
1395   6 106 206 306 106  6 206  6   -  -
1396  12 112 212 312 112 12 212 12   -  -
1397  18 118 218 318 118 18 218 18   -  -
1398  24 124 224 324 124 24 224 24   -  -
1399  30 130 230 330 130 30 230 30 330 30
1400  36 136 236 336 136 36 236 36   -  -
1401  42 142 242 342 142 42 242 42   -  -
1402  48 148 248 348 148 48 248 48   -  -
1403  54 154 254 354 154 54 254 54   -  -
1404  60 160 260 360 160 60 260 60 360 60
1405  66 166 266 366 166 66 266 66   -  -
1406  72 172 272 372 172 72 272 72   -  -
1407  78 178 278 378 178 78 278 78   -  -
1408  84 184 284 384 184 84 284 84   -  -
1409  90 190 290 390 190 90 290 90 390 90
1410}
1411do_execsql_test joinD-70 {
1412  SELECT t1.*, t2.*, t3.*, t4.*
1413  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1414  INNER JOIN t3 ON t1.c=t3.c
1415  FULL JOIN t4 ON t1.d=t4.d
1416  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
1417  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1418} {
1419  30 130 230 330 130 30 230 30 330 30
1420  60 160 260 360 160 60 260 60 360 60
1421  90 190 290 390 190 90 290 90 390 90
1422}
1423do_execsql_test joinD-71 {
1424  SELECT t1.*, t2.*, t3.*, t4.*
1425  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1426  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1427  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
1428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1429} {
1430   6 106 206 306 106  6 206  6   -  -
1431  12 112 212 312 112 12 212 12   -  -
1432  18 118 218 318 118 18 218 18   -  -
1433  24 124 224 324 124 24 224 24   -  -
1434  30 130 230 330 130 30 230 30 330 30
1435  36 136 236 336 136 36 236 36   -  -
1436  42 142 242 342 142 42 242 42   -  -
1437  48 148 248 348 148 48 248 48   -  -
1438  54 154 254 354 154 54 254 54   -  -
1439  60 160 260 360 160 60 260 60 360 60
1440  66 166 266 366 166 66 266 66   -  -
1441  72 172 272 372 172 72 272 72   -  -
1442  78 178 278 378 178 78 278 78   -  -
1443  84 184 284 384 184 84 284 84   -  -
1444  90 190 290 390 190 90 290 90 390 90
1445   -   -   -   -   -  -   -  - 300  0
1446   -   -   -   -   -  -   -  - 305  5
1447   -   -   -   -   -  -   -  - 310 10
1448   -   -   -   -   -  -   -  - 315 15
1449   -   -   -   -   -  -   -  - 320 20
1450   -   -   -   -   -  -   -  - 325 25
1451   -   -   -   -   -  -   -  - 335 35
1452   -   -   -   -   -  -   -  - 340 40
1453   -   -   -   -   -  -   -  - 345 45
1454   -   -   -   -   -  -   -  - 350 50
1455   -   -   -   -   -  -   -  - 355 55
1456   -   -   -   -   -  -   -  - 365 65
1457   -   -   -   -   -  -   -  - 370 70
1458   -   -   -   -   -  -   -  - 375 75
1459   -   -   -   -   -  -   -  - 380 80
1460   -   -   -   -   -  -   -  - 385 85
1461   -   -   -   -   -  -   -  - 395 95
1462}
1463do_execsql_test joinD-72 {
1464  SELECT t1.*, t2.*, t3.*, t4.*
1465  FROM t1 INNER JOIN t2 ON t2.x>0
1466  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1467  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
1468  WHERE t1.b IS NOT DISTINCT FROM t2.b
1469  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1470} {
1471   6 106 206 306 106  6 206  6   -  -
1472  12 112 212 312 112 12 212 12   -  -
1473  18 118 218 318 118 18 218 18   -  -
1474  24 124 224 324 124 24 224 24   -  -
1475  30 130 230 330 130 30 230 30 330 30
1476  36 136 236 336 136 36 236 36   -  -
1477  42 142 242 342 142 42 242 42   -  -
1478  48 148 248 348 148 48 248 48   -  -
1479  54 154 254 354 154 54 254 54   -  -
1480  60 160 260 360 160 60 260 60 360 60
1481  66 166 266 366 166 66 266 66   -  -
1482  72 172 272 372 172 72 272 72   -  -
1483  78 178 278 378 178 78 278 78   -  -
1484  84 184 284 384 184 84 284 84   -  -
1485  90 190 290 390 190 90 290 90 390 90
1486   -   -   -   -   -  -   -  - 300  0
1487   -   -   -   -   -  -   -  - 305  5
1488   -   -   -   -   -  -   -  - 310 10
1489   -   -   -   -   -  -   -  - 320 20
1490   -   -   -   -   -  -   -  - 325 25
1491   -   -   -   -   -  -   -  - 335 35
1492   -   -   -   -   -  -   -  - 340 40
1493   -   -   -   -   -  -   -  - 350 50
1494   -   -   -   -   -  -   -  - 355 55
1495   -   -   -   -   -  -   -  - 365 65
1496   -   -   -   -   -  -   -  - 370 70
1497   -   -   -   -   -  -   -  - 380 80
1498   -   -   -   -   -  -   -  - 385 85
1499   -   -   -   -   -  -   -  - 395 95
1500}
1501do_execsql_test joinD-73 {
1502  SELECT t1.*, t2.*, t3.*, t4.*
1503  FROM t1 INNER JOIN t2 ON t2.x>0
1504  INNER JOIN t3 ON t3.y>0
1505  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
1506  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
1507  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1508} {
1509   6 106 206 306 106  6 206  6   -  -
1510  12 112 212 312 112 12 212 12   -  -
1511  18 118 218 318 118 18 218 18   -  -
1512  24 124 224 324 124 24 224 24   -  -
1513  30 130 230 330 130 30 230 30 330 30
1514  36 136 236 336 136 36 236 36   -  -
1515  42 142 242 342 142 42 242 42   -  -
1516  48 148 248 348 148 48 248 48   -  -
1517  54 154 254 354 154 54 254 54   -  -
1518  60 160 260 360 160 60 260 60 360 60
1519  66 166 266 366 166 66 266 66   -  -
1520  72 172 272 372 172 72 272 72   -  -
1521  78 178 278 378 178 78 278 78   -  -
1522  84 184 284 384 184 84 284 84   -  -
1523  90 190 290 390 190 90 290 90 390 90
1524   -   -   -   -   -  -   -  - 300  0
1525}
1526do_execsql_test joinD-74 {
1527  SELECT t1.*, t2.*, t3.*, t4.*
1528  FROM t1 INNER JOIN t2 ON t2.x>0
1529  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1530  FULL JOIN t4 ON t4.z>0
1531  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
1532  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1533} {
1534  30 130 230 330 130 30 230 30 330 30
1535  60 160 260 360 160 60 260 60 360 60
1536  90 190 290 390 190 90 290 90 390 90
1537}
1538do_execsql_test joinD-75 {
1539  SELECT t1.*, t2.*, t3.*, t4.*
1540  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
1541  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1542  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1543  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1544} {
1545   6 106 206 306 106  6 206  6   -  -
1546  12 112 212 312 112 12 212 12   -  -
1547  18 118 218 318 118 18 218 18   -  -
1548  24 124 224 324 124 24 224 24   -  -
1549  30 130 230 330 130 30 230 30 330 30
1550  36 136 236 336 136 36 236 36   -  -
1551  42 142 242 342 142 42 242 42   -  -
1552  48 148 248 348 148 48 248 48   -  -
1553  54 154 254 354 154 54 254 54   -  -
1554  60 160 260 360 160 60 260 60 360 60
1555  66 166 266 366 166 66 266 66   -  -
1556  72 172 272 372 172 72 272 72   -  -
1557  78 178 278 378 178 78 278 78   -  -
1558  84 184 284 384 184 84 284 84   -  -
1559  90 190 290 390 190 90 290 90 390 90
1560   -   -   -   -   -  -   -  - 300  0
1561   -   -   -   -   -  -   -  - 305  5
1562   -   -   -   -   -  -   -  - 310 10
1563   -   -   -   -   -  -   -  - 315 15
1564   -   -   -   -   -  -   -  - 320 20
1565   -   -   -   -   -  -   -  - 325 25
1566   -   -   -   -   -  -   -  - 335 35
1567   -   -   -   -   -  -   -  - 340 40
1568   -   -   -   -   -  -   -  - 345 45
1569   -   -   -   -   -  -   -  - 350 50
1570   -   -   -   -   -  -   -  - 355 55
1571   -   -   -   -   -  -   -  - 365 65
1572   -   -   -   -   -  -   -  - 370 70
1573   -   -   -   -   -  -   -  - 375 75
1574   -   -   -   -   -  -   -  - 380 80
1575   -   -   -   -   -  -   -  - 385 85
1576   -   -   -   -   -  -   -  - 395 95
1577}
1578do_execsql_test joinD-76 {
1579  SELECT t1.*, t2.*, t3.*, t4.*
1580  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1581  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
1582  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1583  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1584} {
1585   6 106 206 306 106  6 206  6   -  -
1586  12 112 212 312 112 12 212 12   -  -
1587  18 118 218 318 118 18 218 18   -  -
1588  24 124 224 324 124 24 224 24   -  -
1589  30 130 230 330 130 30 230 30 330 30
1590  36 136 236 336 136 36 236 36   -  -
1591  42 142 242 342 142 42 242 42   -  -
1592  48 148 248 348 148 48 248 48   -  -
1593  54 154 254 354 154 54 254 54   -  -
1594  60 160 260 360 160 60 260 60 360 60
1595  66 166 266 366 166 66 266 66   -  -
1596  72 172 272 372 172 72 272 72   -  -
1597  78 178 278 378 178 78 278 78   -  -
1598  84 184 284 384 184 84 284 84   -  -
1599  90 190 290 390 190 90 290 90 390 90
1600   -   -   -   -   -  -   -  - 300  0
1601   -   -   -   -   -  -   -  - 305  5
1602   -   -   -   -   -  -   -  - 310 10
1603   -   -   -   -   -  -   -  - 315 15
1604   -   -   -   -   -  -   -  - 320 20
1605   -   -   -   -   -  -   -  - 325 25
1606   -   -   -   -   -  -   -  - 335 35
1607   -   -   -   -   -  -   -  - 340 40
1608   -   -   -   -   -  -   -  - 345 45
1609   -   -   -   -   -  -   -  - 350 50
1610   -   -   -   -   -  -   -  - 355 55
1611   -   -   -   -   -  -   -  - 365 65
1612   -   -   -   -   -  -   -  - 370 70
1613   -   -   -   -   -  -   -  - 375 75
1614   -   -   -   -   -  -   -  - 380 80
1615   -   -   -   -   -  -   -  - 385 85
1616   -   -   -   -   -  -   -  - 395 95
1617}
1618do_execsql_test joinD-77 {
1619  SELECT t1.*, t2.*, t3.*, t4.*
1620  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1621  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1622  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1623  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1624} {
1625  10 110 210 310 110 10   -  - 310 10
1626  20 120 220 320 120 20   -  - 320 20
1627  30 130 230 330 130 30 230 30 330 30
1628  40 140 240 340 140 40   -  - 340 40
1629  50 150 250 350 150 50   -  - 350 50
1630  60 160 260 360 160 60 260 60 360 60
1631  70 170 270 370 170 70   -  - 370 70
1632  80 180 280 380 180 80   -  - 380 80
1633  90 190 290 390 190 90 290 90 390 90
1634}
1635do_execsql_test joinD-78 {
1636  SELECT t1.*, t2.*, t3.*, t4.*
1637  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1638  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1639  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1641} {
1642  10 110 210 310 110 10   -  - 310 10
1643  20 120 220 320 120 20   -  - 320 20
1644  30 130 230 330 130 30 230 30 330 30
1645  40 140 240 340 140 40   -  - 340 40
1646  50 150 250 350 150 50   -  - 350 50
1647  60 160 260 360 160 60 260 60 360 60
1648  70 170 270 370 170 70   -  - 370 70
1649  80 180 280 380 180 80   -  - 380 80
1650  90 190 290 390 190 90 290 90 390 90
1651}
1652do_execsql_test joinD-79 {
1653  SELECT t1.*, t2.*, t3.*, t4.*
1654  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1655  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1656  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1657  WHERE t2.x>0
1658  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1659} {
1660  10 110 210 310 110 10   -  - 310 10
1661  20 120 220 320 120 20   -  - 320 20
1662  30 130 230 330 130 30 230 30 330 30
1663  40 140 240 340 140 40   -  - 340 40
1664  50 150 250 350 150 50   -  - 350 50
1665  60 160 260 360 160 60 260 60 360 60
1666  70 170 270 370 170 70   -  - 370 70
1667  80 180 280 380 180 80   -  - 380 80
1668  90 190 290 390 190 90 290 90 390 90
1669}
1670do_execsql_test joinD-80 {
1671  SELECT t1.*, t2.*, t3.*, t4.*
1672  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1673  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1674  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1675  WHERE (t2.x>0 OR t2.x IS NULL)
1676  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1677} {
1678  10 110 210 310 110 10   -  - 310 10
1679  20 120 220 320 120 20   -  - 320 20
1680  30 130 230 330 130 30 230 30 330 30
1681  40 140 240 340 140 40   -  - 340 40
1682  50 150 250 350 150 50   -  - 350 50
1683  60 160 260 360 160 60 260 60 360 60
1684  70 170 270 370 170 70   -  - 370 70
1685  80 180 280 380 180 80   -  - 380 80
1686  90 190 290 390 190 90 290 90 390 90
1687}
1688do_execsql_test joinD-81 {
1689  SELECT t1.*, t2.*, t3.*, t4.*
1690  FROM t1 INNER JOIN t2 ON true
1691  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1692  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1693  WHERE t1.b=t2.b AND t2.x>0
1694  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1695} {
1696  10 110 210 310 110 10   -  - 310 10
1697  20 120 220 320 120 20   -  - 320 20
1698  30 130 230 330 130 30 230 30 330 30
1699  40 140 240 340 140 40   -  - 340 40
1700  50 150 250 350 150 50   -  - 350 50
1701  60 160 260 360 160 60 260 60 360 60
1702  70 170 270 370 170 70   -  - 370 70
1703  80 180 280 380 180 80   -  - 380 80
1704  90 190 290 390 190 90 290 90 390 90
1705}
1706do_execsql_test joinD-82 {
1707  SELECT t1.*, t2.*, t3.*, t4.*
1708  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1709  LEFT JOIN t3 ON t1.c=t3.c
1710  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1711  WHERE t3.y>0
1712  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1713} {
1714  30 130 230 330 130 30 230 30 330 30
1715  60 160 260 360 160 60 260 60 360 60
1716  90 190 290 390 190 90 290 90 390 90
1717}
1718do_execsql_test joinD-83 {
1719  SELECT t1.*, t2.*, t3.*, t4.*
1720  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1721  LEFT JOIN t3 ON t1.c=t3.c
1722  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1723  WHERE t3.y>0 OR t3.y IS NULL
1724  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1725} {
1726  10 110 210 310 110 10   -  - 310 10
1727  20 120 220 320 120 20   -  - 320 20
1728  30 130 230 330 130 30 230 30 330 30
1729  40 140 240 340 140 40   -  - 340 40
1730  50 150 250 350 150 50   -  - 350 50
1731  60 160 260 360 160 60 260 60 360 60
1732  70 170 270 370 170 70   -  - 370 70
1733  80 180 280 380 180 80   -  - 380 80
1734  90 190 290 390 190 90 290 90 390 90
1735}
1736do_execsql_test joinD-84 {
1737  SELECT t1.*, t2.*, t3.*, t4.*
1738  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1739  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1740  INNER JOIN t4 ON t1.d=t4.d
1741  WHERE t4.z>0
1742  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1743} {
1744  10 110 210 310 110 10   -  - 310 10
1745  20 120 220 320 120 20   -  - 320 20
1746  30 130 230 330 130 30 230 30 330 30
1747  40 140 240 340 140 40   -  - 340 40
1748  50 150 250 350 150 50   -  - 350 50
1749  60 160 260 360 160 60 260 60 360 60
1750  70 170 270 370 170 70   -  - 370 70
1751  80 180 280 380 180 80   -  - 380 80
1752  90 190 290 390 190 90 290 90 390 90
1753}
1754do_execsql_test joinD-85 {
1755  SELECT t1.*, t2.*, t3.*, t4.*
1756  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1757  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1758  INNER JOIN t4 ON t1.d=t4.d
1759  WHERE t4.z IS NULL OR t4.z>0
1760  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1761} {
1762  10 110 210 310 110 10   -  - 310 10
1763  20 120 220 320 120 20   -  - 320 20
1764  30 130 230 330 130 30 230 30 330 30
1765  40 140 240 340 140 40   -  - 340 40
1766  50 150 250 350 150 50   -  - 350 50
1767  60 160 260 360 160 60 260 60 360 60
1768  70 170 270 370 170 70   -  - 370 70
1769  80 180 280 380 180 80   -  - 380 80
1770  90 190 290 390 190 90 290 90 390 90
1771}
1772do_execsql_test joinD-86 {
1773  SELECT t1.*, t2.*, t3.*, t4.*
1774  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1775  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1776  INNER JOIN t4 ON t1.d=t4.d
1777  WHERE t2.x>0 AND t4.z>0
1778  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1779} {
1780  10 110 210 310 110 10   -  - 310 10
1781  20 120 220 320 120 20   -  - 320 20
1782  30 130 230 330 130 30 230 30 330 30
1783  40 140 240 340 140 40   -  - 340 40
1784  50 150 250 350 150 50   -  - 350 50
1785  60 160 260 360 160 60 260 60 360 60
1786  70 170 270 370 170 70   -  - 370 70
1787  80 180 280 380 180 80   -  - 380 80
1788  90 190 290 390 190 90 290 90 390 90
1789}
1790do_execsql_test joinD-87 {
1791  SELECT t1.*, t2.*, t3.*, t4.*
1792  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1793  LEFT JOIN t3 ON t1.c=t3.c
1794  INNER JOIN t4 ON t1.d=t4.d
1795  WHERE t4.z>0 AND t3.y>0
1796  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1797} {
1798  30 130 230 330 130 30 230 30 330 30
1799  60 160 260 360 160 60 260 60 360 60
1800  90 190 290 390 190 90 290 90 390 90
1801}
1802do_execsql_test joinD-88 {
1803  SELECT t1.*, t2.*, t3.*, t4.*
1804  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1805  LEFT JOIN t3 ON t1.c=t3.c
1806  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1807  WHERE t2.x>0 AND t3.y>0
1808  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1809} {
1810  30 130 230 330 130 30 230 30 330 30
1811  60 160 260 360 160 60 260 60 360 60
1812  90 190 290 390 190 90 290 90 390 90
1813}
1814do_execsql_test joinD-89 {
1815  SELECT t1.*, t2.*, t3.*, t4.*
1816  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1817  LEFT JOIN t3 ON t1.c=t3.c
1818  INNER JOIN t4 ON t1.d=t4.d
1819  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
1820  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1821} {
1822  30 130 230 330 130 30 230 30 330 30
1823  60 160 260 360 160 60 260 60 360 60
1824  90 190 290 390 190 90 290 90 390 90
1825}
1826do_execsql_test joinD-90 {
1827  SELECT t1.*, t2.*, t3.*, t4.*
1828  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1829  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1830  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
1831  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1832} {
1833  10 110 210 310 110 10   -  - 310 10
1834  20 120 220 320 120 20   -  - 320 20
1835  30 130 230 330 130 30 230 30 330 30
1836  40 140 240 340 140 40   -  - 340 40
1837  50 150 250 350 150 50   -  - 350 50
1838  60 160 260 360 160 60 260 60 360 60
1839  70 170 270 370 170 70   -  - 370 70
1840  80 180 280 380 180 80   -  - 380 80
1841  90 190 290 390 190 90 290 90 390 90
1842}
1843do_execsql_test joinD-91 {
1844  SELECT t1.*, t2.*, t3.*, t4.*
1845  FROM t1 INNER JOIN t2 ON t2.x>0
1846  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1847  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
1848  WHERE t1.b IS NOT DISTINCT FROM t2.b
1849  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1850} {
1851  10 110 210 310 110 10   -  - 310 10
1852  20 120 220 320 120 20   -  - 320 20
1853  30 130 230 330 130 30 230 30 330 30
1854  40 140 240 340 140 40   -  - 340 40
1855  50 150 250 350 150 50   -  - 350 50
1856  60 160 260 360 160 60 260 60 360 60
1857  70 170 270 370 170 70   -  - 370 70
1858  80 180 280 380 180 80   -  - 380 80
1859  90 190 290 390 190 90 290 90 390 90
1860}
1861do_execsql_test joinD-92 {
1862  SELECT t1.*, t2.*, t3.*, t4.*
1863  FROM t1 INNER JOIN t2 ON t2.x>0
1864  LEFT JOIN t3 ON t3.y>0
1865  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
1866  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
1867  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1868} {
1869  30 130 230 330 130 30 230 30 330 30
1870  60 160 260 360 160 60 260 60 360 60
1871  90 190 290 390 190 90 290 90 390 90
1872}
1873do_execsql_test joinD-93 {
1874  SELECT t1.*, t2.*, t3.*, t4.*
1875  FROM t1 INNER JOIN t2 ON t2.x>0
1876  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1877  INNER JOIN t4 ON t4.z>0
1878  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
1879  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1880} {
1881  10 110 210 310 110 10   -  - 310 10
1882  20 120 220 320 120 20   -  - 320 20
1883  30 130 230 330 130 30 230 30 330 30
1884  40 140 240 340 140 40   -  - 340 40
1885  50 150 250 350 150 50   -  - 350 50
1886  60 160 260 360 160 60 260 60 360 60
1887  70 170 270 370 170 70   -  - 370 70
1888  80 180 280 380 180 80   -  - 380 80
1889  90 190 290 390 190 90 290 90 390 90
1890}
1891do_execsql_test joinD-94 {
1892  SELECT t1.*, t2.*, t3.*, t4.*
1893  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
1894  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1895  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1896  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1897} {
1898  10 110 210 310 110 10   -  - 310 10
1899  20 120 220 320 120 20   -  - 320 20
1900  30 130 230 330 130 30 230 30 330 30
1901  40 140 240 340 140 40   -  - 340 40
1902  50 150 250 350 150 50   -  - 350 50
1903  60 160 260 360 160 60 260 60 360 60
1904  70 170 270 370 170 70   -  - 370 70
1905  80 180 280 380 180 80   -  - 380 80
1906  90 190 290 390 190 90 290 90 390 90
1907}
1908do_execsql_test joinD-95 {
1909  SELECT t1.*, t2.*, t3.*, t4.*
1910  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1911  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
1912  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1914} {
1915  10 110 210 310 110 10   -  - 310 10
1916  20 120 220 320 120 20   -  - 320 20
1917  30 130 230 330 130 30 230 30 330 30
1918  40 140 240 340 140 40   -  - 340 40
1919  50 150 250 350 150 50   -  - 350 50
1920  60 160 260 360 160 60 260 60 360 60
1921  70 170 270 370 170 70   -  - 370 70
1922  80 180 280 380 180 80   -  - 380 80
1923  90 190 290 390 190 90 290 90 390 90
1924}
1925do_execsql_test joinD-96 {
1926  SELECT t1.*, t2.*, t3.*, t4.*
1927  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1928  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1929  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1930  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1931} {
1932   2 102 202 302 102  2   -  -   -  -
1933   4 104 204 304 104  4   -  -   -  -
1934   6 106 206 306 106  6 206  6   -  -
1935   8 108 208 308 108  8   -  -   -  -
1936  10 110 210 310 110 10   -  - 310 10
1937  12 112 212 312 112 12 212 12   -  -
1938  14 114 214 314 114 14   -  -   -  -
1939  16 116 216 316 116 16   -  -   -  -
1940  18 118 218 318 118 18 218 18   -  -
1941  20 120 220 320 120 20   -  - 320 20
1942  22 122 222 322 122 22   -  -   -  -
1943  24 124 224 324 124 24 224 24   -  -
1944  26 126 226 326 126 26   -  -   -  -
1945  28 128 228 328 128 28   -  -   -  -
1946  30 130 230 330 130 30 230 30 330 30
1947  32 132 232 332 132 32   -  -   -  -
1948  34 134 234 334 134 34   -  -   -  -
1949  36 136 236 336 136 36 236 36   -  -
1950  38 138 238 338 138 38   -  -   -  -
1951  40 140 240 340 140 40   -  - 340 40
1952  42 142 242 342 142 42 242 42   -  -
1953  44 144 244 344 144 44   -  -   -  -
1954  46 146 246 346 146 46   -  -   -  -
1955  48 148 248 348 148 48 248 48   -  -
1956  50 150 250 350 150 50   -  - 350 50
1957  52 152 252 352 152 52   -  -   -  -
1958  54 154 254 354 154 54 254 54   -  -
1959  56 156 256 356 156 56   -  -   -  -
1960  58 158 258 358 158 58   -  -   -  -
1961  60 160 260 360 160 60 260 60 360 60
1962  62 162 262 362 162 62   -  -   -  -
1963  64 164 264 364 164 64   -  -   -  -
1964  66 166 266 366 166 66 266 66   -  -
1965  68 168 268 368 168 68   -  -   -  -
1966  70 170 270 370 170 70   -  - 370 70
1967  72 172 272 372 172 72 272 72   -  -
1968  74 174 274 374 174 74   -  -   -  -
1969  76 176 276 376 176 76   -  -   -  -
1970  78 178 278 378 178 78 278 78   -  -
1971  80 180 280 380 180 80   -  - 380 80
1972  82 182 282 382 182 82   -  -   -  -
1973  84 184 284 384 184 84 284 84   -  -
1974  86 186 286 386 186 86   -  -   -  -
1975  88 188 288 388 188 88   -  -   -  -
1976  90 190 290 390 190 90 290 90 390 90
1977  92 192 292 392 192 92   -  -   -  -
1978  94 194 294 394 194 94   -  -   -  -
1979}
1980do_execsql_test joinD-97 {
1981  SELECT t1.*, t2.*, t3.*, t4.*
1982  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1983  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1984  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1985  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1986} {
1987   2 102 202 302 102  2   -  -   -  -
1988   4 104 204 304 104  4   -  -   -  -
1989   6 106 206 306 106  6 206  6   -  -
1990   8 108 208 308 108  8   -  -   -  -
1991  10 110 210 310 110 10   -  - 310 10
1992  12 112 212 312 112 12 212 12   -  -
1993  14 114 214 314 114 14   -  -   -  -
1994  16 116 216 316 116 16   -  -   -  -
1995  18 118 218 318 118 18 218 18   -  -
1996  20 120 220 320 120 20   -  - 320 20
1997  22 122 222 322 122 22   -  -   -  -
1998  24 124 224 324 124 24 224 24   -  -
1999  26 126 226 326 126 26   -  -   -  -
2000  28 128 228 328 128 28   -  -   -  -
2001  30 130 230 330 130 30 230 30 330 30
2002  32 132 232 332 132 32   -  -   -  -
2003  34 134 234 334 134 34   -  -   -  -
2004  36 136 236 336 136 36 236 36   -  -
2005  38 138 238 338 138 38   -  -   -  -
2006  40 140 240 340 140 40   -  - 340 40
2007  42 142 242 342 142 42 242 42   -  -
2008  44 144 244 344 144 44   -  -   -  -
2009  46 146 246 346 146 46   -  -   -  -
2010  48 148 248 348 148 48 248 48   -  -
2011  50 150 250 350 150 50   -  - 350 50
2012  52 152 252 352 152 52   -  -   -  -
2013  54 154 254 354 154 54 254 54   -  -
2014  56 156 256 356 156 56   -  -   -  -
2015  58 158 258 358 158 58   -  -   -  -
2016  60 160 260 360 160 60 260 60 360 60
2017  62 162 262 362 162 62   -  -   -  -
2018  64 164 264 364 164 64   -  -   -  -
2019  66 166 266 366 166 66 266 66   -  -
2020  68 168 268 368 168 68   -  -   -  -
2021  70 170 270 370 170 70   -  - 370 70
2022  72 172 272 372 172 72 272 72   -  -
2023  74 174 274 374 174 74   -  -   -  -
2024  76 176 276 376 176 76   -  -   -  -
2025  78 178 278 378 178 78 278 78   -  -
2026  80 180 280 380 180 80   -  - 380 80
2027  82 182 282 382 182 82   -  -   -  -
2028  84 184 284 384 184 84 284 84   -  -
2029  86 186 286 386 186 86   -  -   -  -
2030  88 188 288 388 188 88   -  -   -  -
2031  90 190 290 390 190 90 290 90 390 90
2032  92 192 292 392 192 92   -  -   -  -
2033  94 194 294 394 194 94   -  -   -  -
2034}
2035do_execsql_test joinD-98 {
2036  SELECT t1.*, t2.*, t3.*, t4.*
2037  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2038  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2039  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2040  WHERE t2.x>0
2041  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2042} {
2043   2 102 202 302 102  2   -  -   -  -
2044   4 104 204 304 104  4   -  -   -  -
2045   6 106 206 306 106  6 206  6   -  -
2046   8 108 208 308 108  8   -  -   -  -
2047  10 110 210 310 110 10   -  - 310 10
2048  12 112 212 312 112 12 212 12   -  -
2049  14 114 214 314 114 14   -  -   -  -
2050  16 116 216 316 116 16   -  -   -  -
2051  18 118 218 318 118 18 218 18   -  -
2052  20 120 220 320 120 20   -  - 320 20
2053  22 122 222 322 122 22   -  -   -  -
2054  24 124 224 324 124 24 224 24   -  -
2055  26 126 226 326 126 26   -  -   -  -
2056  28 128 228 328 128 28   -  -   -  -
2057  30 130 230 330 130 30 230 30 330 30
2058  32 132 232 332 132 32   -  -   -  -
2059  34 134 234 334 134 34   -  -   -  -
2060  36 136 236 336 136 36 236 36   -  -
2061  38 138 238 338 138 38   -  -   -  -
2062  40 140 240 340 140 40   -  - 340 40
2063  42 142 242 342 142 42 242 42   -  -
2064  44 144 244 344 144 44   -  -   -  -
2065  46 146 246 346 146 46   -  -   -  -
2066  48 148 248 348 148 48 248 48   -  -
2067  50 150 250 350 150 50   -  - 350 50
2068  52 152 252 352 152 52   -  -   -  -
2069  54 154 254 354 154 54 254 54   -  -
2070  56 156 256 356 156 56   -  -   -  -
2071  58 158 258 358 158 58   -  -   -  -
2072  60 160 260 360 160 60 260 60 360 60
2073  62 162 262 362 162 62   -  -   -  -
2074  64 164 264 364 164 64   -  -   -  -
2075  66 166 266 366 166 66 266 66   -  -
2076  68 168 268 368 168 68   -  -   -  -
2077  70 170 270 370 170 70   -  - 370 70
2078  72 172 272 372 172 72 272 72   -  -
2079  74 174 274 374 174 74   -  -   -  -
2080  76 176 276 376 176 76   -  -   -  -
2081  78 178 278 378 178 78 278 78   -  -
2082  80 180 280 380 180 80   -  - 380 80
2083  82 182 282 382 182 82   -  -   -  -
2084  84 184 284 384 184 84 284 84   -  -
2085  86 186 286 386 186 86   -  -   -  -
2086  88 188 288 388 188 88   -  -   -  -
2087  90 190 290 390 190 90 290 90 390 90
2088  92 192 292 392 192 92   -  -   -  -
2089  94 194 294 394 194 94   -  -   -  -
2090}
2091do_execsql_test joinD-99 {
2092  SELECT t1.*, t2.*, t3.*, t4.*
2093  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2094  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2095  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2096  WHERE (t2.x>0 OR t2.x IS NULL)
2097  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2098} {
2099   2 102 202 302 102  2   -  -   -  -
2100   4 104 204 304 104  4   -  -   -  -
2101   6 106 206 306 106  6 206  6   -  -
2102   8 108 208 308 108  8   -  -   -  -
2103  10 110 210 310 110 10   -  - 310 10
2104  12 112 212 312 112 12 212 12   -  -
2105  14 114 214 314 114 14   -  -   -  -
2106  16 116 216 316 116 16   -  -   -  -
2107  18 118 218 318 118 18 218 18   -  -
2108  20 120 220 320 120 20   -  - 320 20
2109  22 122 222 322 122 22   -  -   -  -
2110  24 124 224 324 124 24 224 24   -  -
2111  26 126 226 326 126 26   -  -   -  -
2112  28 128 228 328 128 28   -  -   -  -
2113  30 130 230 330 130 30 230 30 330 30
2114  32 132 232 332 132 32   -  -   -  -
2115  34 134 234 334 134 34   -  -   -  -
2116  36 136 236 336 136 36 236 36   -  -
2117  38 138 238 338 138 38   -  -   -  -
2118  40 140 240 340 140 40   -  - 340 40
2119  42 142 242 342 142 42 242 42   -  -
2120  44 144 244 344 144 44   -  -   -  -
2121  46 146 246 346 146 46   -  -   -  -
2122  48 148 248 348 148 48 248 48   -  -
2123  50 150 250 350 150 50   -  - 350 50
2124  52 152 252 352 152 52   -  -   -  -
2125  54 154 254 354 154 54 254 54   -  -
2126  56 156 256 356 156 56   -  -   -  -
2127  58 158 258 358 158 58   -  -   -  -
2128  60 160 260 360 160 60 260 60 360 60
2129  62 162 262 362 162 62   -  -   -  -
2130  64 164 264 364 164 64   -  -   -  -
2131  66 166 266 366 166 66 266 66   -  -
2132  68 168 268 368 168 68   -  -   -  -
2133  70 170 270 370 170 70   -  - 370 70
2134  72 172 272 372 172 72 272 72   -  -
2135  74 174 274 374 174 74   -  -   -  -
2136  76 176 276 376 176 76   -  -   -  -
2137  78 178 278 378 178 78 278 78   -  -
2138  80 180 280 380 180 80   -  - 380 80
2139  82 182 282 382 182 82   -  -   -  -
2140  84 184 284 384 184 84 284 84   -  -
2141  86 186 286 386 186 86   -  -   -  -
2142  88 188 288 388 188 88   -  -   -  -
2143  90 190 290 390 190 90 290 90 390 90
2144  92 192 292 392 192 92   -  -   -  -
2145  94 194 294 394 194 94   -  -   -  -
2146}
2147do_execsql_test joinD-100 {
2148  SELECT t1.*, t2.*, t3.*, t4.*
2149  FROM t1 INNER JOIN t2 ON true
2150  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2151  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2152  WHERE t1.b=t2.b AND t2.x>0
2153  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2154} {
2155   2 102 202 302 102  2   -  -   -  -
2156   4 104 204 304 104  4   -  -   -  -
2157   6 106 206 306 106  6 206  6   -  -
2158   8 108 208 308 108  8   -  -   -  -
2159  10 110 210 310 110 10   -  - 310 10
2160  12 112 212 312 112 12 212 12   -  -
2161  14 114 214 314 114 14   -  -   -  -
2162  16 116 216 316 116 16   -  -   -  -
2163  18 118 218 318 118 18 218 18   -  -
2164  20 120 220 320 120 20   -  - 320 20
2165  22 122 222 322 122 22   -  -   -  -
2166  24 124 224 324 124 24 224 24   -  -
2167  26 126 226 326 126 26   -  -   -  -
2168  28 128 228 328 128 28   -  -   -  -
2169  30 130 230 330 130 30 230 30 330 30
2170  32 132 232 332 132 32   -  -   -  -
2171  34 134 234 334 134 34   -  -   -  -
2172  36 136 236 336 136 36 236 36   -  -
2173  38 138 238 338 138 38   -  -   -  -
2174  40 140 240 340 140 40   -  - 340 40
2175  42 142 242 342 142 42 242 42   -  -
2176  44 144 244 344 144 44   -  -   -  -
2177  46 146 246 346 146 46   -  -   -  -
2178  48 148 248 348 148 48 248 48   -  -
2179  50 150 250 350 150 50   -  - 350 50
2180  52 152 252 352 152 52   -  -   -  -
2181  54 154 254 354 154 54 254 54   -  -
2182  56 156 256 356 156 56   -  -   -  -
2183  58 158 258 358 158 58   -  -   -  -
2184  60 160 260 360 160 60 260 60 360 60
2185  62 162 262 362 162 62   -  -   -  -
2186  64 164 264 364 164 64   -  -   -  -
2187  66 166 266 366 166 66 266 66   -  -
2188  68 168 268 368 168 68   -  -   -  -
2189  70 170 270 370 170 70   -  - 370 70
2190  72 172 272 372 172 72 272 72   -  -
2191  74 174 274 374 174 74   -  -   -  -
2192  76 176 276 376 176 76   -  -   -  -
2193  78 178 278 378 178 78 278 78   -  -
2194  80 180 280 380 180 80   -  - 380 80
2195  82 182 282 382 182 82   -  -   -  -
2196  84 184 284 384 184 84 284 84   -  -
2197  86 186 286 386 186 86   -  -   -  -
2198  88 188 288 388 188 88   -  -   -  -
2199  90 190 290 390 190 90 290 90 390 90
2200  92 192 292 392 192 92   -  -   -  -
2201  94 194 294 394 194 94   -  -   -  -
2202}
2203do_execsql_test joinD-101 {
2204  SELECT t1.*, t2.*, t3.*, t4.*
2205  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2206  LEFT JOIN t3 ON t1.c=t3.c
2207  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2208  WHERE t3.y>0
2209  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2210} {
2211   6 106 206 306 106  6 206  6   -  -
2212  12 112 212 312 112 12 212 12   -  -
2213  18 118 218 318 118 18 218 18   -  -
2214  24 124 224 324 124 24 224 24   -  -
2215  30 130 230 330 130 30 230 30 330 30
2216  36 136 236 336 136 36 236 36   -  -
2217  42 142 242 342 142 42 242 42   -  -
2218  48 148 248 348 148 48 248 48   -  -
2219  54 154 254 354 154 54 254 54   -  -
2220  60 160 260 360 160 60 260 60 360 60
2221  66 166 266 366 166 66 266 66   -  -
2222  72 172 272 372 172 72 272 72   -  -
2223  78 178 278 378 178 78 278 78   -  -
2224  84 184 284 384 184 84 284 84   -  -
2225  90 190 290 390 190 90 290 90 390 90
2226}
2227do_execsql_test joinD-102 {
2228  SELECT t1.*, t2.*, t3.*, t4.*
2229  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2230  LEFT JOIN t3 ON t1.c=t3.c
2231  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2232  WHERE t3.y>0 OR t3.y IS NULL
2233  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2234} {
2235   2 102 202 302 102  2   -  -   -  -
2236   4 104 204 304 104  4   -  -   -  -
2237   6 106 206 306 106  6 206  6   -  -
2238   8 108 208 308 108  8   -  -   -  -
2239  10 110 210 310 110 10   -  - 310 10
2240  12 112 212 312 112 12 212 12   -  -
2241  14 114 214 314 114 14   -  -   -  -
2242  16 116 216 316 116 16   -  -   -  -
2243  18 118 218 318 118 18 218 18   -  -
2244  20 120 220 320 120 20   -  - 320 20
2245  22 122 222 322 122 22   -  -   -  -
2246  24 124 224 324 124 24 224 24   -  -
2247  26 126 226 326 126 26   -  -   -  -
2248  28 128 228 328 128 28   -  -   -  -
2249  30 130 230 330 130 30 230 30 330 30
2250  32 132 232 332 132 32   -  -   -  -
2251  34 134 234 334 134 34   -  -   -  -
2252  36 136 236 336 136 36 236 36   -  -
2253  38 138 238 338 138 38   -  -   -  -
2254  40 140 240 340 140 40   -  - 340 40
2255  42 142 242 342 142 42 242 42   -  -
2256  44 144 244 344 144 44   -  -   -  -
2257  46 146 246 346 146 46   -  -   -  -
2258  48 148 248 348 148 48 248 48   -  -
2259  50 150 250 350 150 50   -  - 350 50
2260  52 152 252 352 152 52   -  -   -  -
2261  54 154 254 354 154 54 254 54   -  -
2262  56 156 256 356 156 56   -  -   -  -
2263  58 158 258 358 158 58   -  -   -  -
2264  60 160 260 360 160 60 260 60 360 60
2265  62 162 262 362 162 62   -  -   -  -
2266  64 164 264 364 164 64   -  -   -  -
2267  66 166 266 366 166 66 266 66   -  -
2268  68 168 268 368 168 68   -  -   -  -
2269  70 170 270 370 170 70   -  - 370 70
2270  72 172 272 372 172 72 272 72   -  -
2271  74 174 274 374 174 74   -  -   -  -
2272  76 176 276 376 176 76   -  -   -  -
2273  78 178 278 378 178 78 278 78   -  -
2274  80 180 280 380 180 80   -  - 380 80
2275  82 182 282 382 182 82   -  -   -  -
2276  84 184 284 384 184 84 284 84   -  -
2277  86 186 286 386 186 86   -  -   -  -
2278  88 188 288 388 188 88   -  -   -  -
2279  90 190 290 390 190 90 290 90 390 90
2280  92 192 292 392 192 92   -  -   -  -
2281  94 194 294 394 194 94   -  -   -  -
2282}
2283do_execsql_test joinD-103 {
2284  SELECT t1.*, t2.*, t3.*, t4.*
2285  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2286  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2287  LEFT JOIN t4 ON t1.d=t4.d
2288  WHERE t4.z>0
2289  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2290} {
2291  10 110 210 310 110 10   -  - 310 10
2292  20 120 220 320 120 20   -  - 320 20
2293  30 130 230 330 130 30 230 30 330 30
2294  40 140 240 340 140 40   -  - 340 40
2295  50 150 250 350 150 50   -  - 350 50
2296  60 160 260 360 160 60 260 60 360 60
2297  70 170 270 370 170 70   -  - 370 70
2298  80 180 280 380 180 80   -  - 380 80
2299  90 190 290 390 190 90 290 90 390 90
2300}
2301do_execsql_test joinD-104 {
2302  SELECT t1.*, t2.*, t3.*, t4.*
2303  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2304  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2305  LEFT JOIN t4 ON t1.d=t4.d
2306  WHERE t4.z IS NULL OR t4.z>0
2307  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2308} {
2309   2 102 202 302 102  2   -  -   -  -
2310   4 104 204 304 104  4   -  -   -  -
2311   6 106 206 306 106  6 206  6   -  -
2312   8 108 208 308 108  8   -  -   -  -
2313  10 110 210 310 110 10   -  - 310 10
2314  12 112 212 312 112 12 212 12   -  -
2315  14 114 214 314 114 14   -  -   -  -
2316  16 116 216 316 116 16   -  -   -  -
2317  18 118 218 318 118 18 218 18   -  -
2318  20 120 220 320 120 20   -  - 320 20
2319  22 122 222 322 122 22   -  -   -  -
2320  24 124 224 324 124 24 224 24   -  -
2321  26 126 226 326 126 26   -  -   -  -
2322  28 128 228 328 128 28   -  -   -  -
2323  30 130 230 330 130 30 230 30 330 30
2324  32 132 232 332 132 32   -  -   -  -
2325  34 134 234 334 134 34   -  -   -  -
2326  36 136 236 336 136 36 236 36   -  -
2327  38 138 238 338 138 38   -  -   -  -
2328  40 140 240 340 140 40   -  - 340 40
2329  42 142 242 342 142 42 242 42   -  -
2330  44 144 244 344 144 44   -  -   -  -
2331  46 146 246 346 146 46   -  -   -  -
2332  48 148 248 348 148 48 248 48   -  -
2333  50 150 250 350 150 50   -  - 350 50
2334  52 152 252 352 152 52   -  -   -  -
2335  54 154 254 354 154 54 254 54   -  -
2336  56 156 256 356 156 56   -  -   -  -
2337  58 158 258 358 158 58   -  -   -  -
2338  60 160 260 360 160 60 260 60 360 60
2339  62 162 262 362 162 62   -  -   -  -
2340  64 164 264 364 164 64   -  -   -  -
2341  66 166 266 366 166 66 266 66   -  -
2342  68 168 268 368 168 68   -  -   -  -
2343  70 170 270 370 170 70   -  - 370 70
2344  72 172 272 372 172 72 272 72   -  -
2345  74 174 274 374 174 74   -  -   -  -
2346  76 176 276 376 176 76   -  -   -  -
2347  78 178 278 378 178 78 278 78   -  -
2348  80 180 280 380 180 80   -  - 380 80
2349  82 182 282 382 182 82   -  -   -  -
2350  84 184 284 384 184 84 284 84   -  -
2351  86 186 286 386 186 86   -  -   -  -
2352  88 188 288 388 188 88   -  -   -  -
2353  90 190 290 390 190 90 290 90 390 90
2354  92 192 292 392 192 92   -  -   -  -
2355  94 194 294 394 194 94   -  -   -  -
2356}
2357do_execsql_test joinD-105 {
2358  SELECT t1.*, t2.*, t3.*, t4.*
2359  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2360  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2361  LEFT JOIN t4 ON t1.d=t4.d
2362  WHERE t2.x>0 AND t4.z>0
2363  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2364} {
2365  10 110 210 310 110 10   -  - 310 10
2366  20 120 220 320 120 20   -  - 320 20
2367  30 130 230 330 130 30 230 30 330 30
2368  40 140 240 340 140 40   -  - 340 40
2369  50 150 250 350 150 50   -  - 350 50
2370  60 160 260 360 160 60 260 60 360 60
2371  70 170 270 370 170 70   -  - 370 70
2372  80 180 280 380 180 80   -  - 380 80
2373  90 190 290 390 190 90 290 90 390 90
2374}
2375do_execsql_test joinD-106 {
2376  SELECT t1.*, t2.*, t3.*, t4.*
2377  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2378  LEFT JOIN t3 ON t1.c=t3.c
2379  LEFT JOIN t4 ON t1.d=t4.d
2380  WHERE t4.z>0 AND t3.y>0
2381  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2382} {
2383  30 130 230 330 130 30 230 30 330 30
2384  60 160 260 360 160 60 260 60 360 60
2385  90 190 290 390 190 90 290 90 390 90
2386}
2387do_execsql_test joinD-107 {
2388  SELECT t1.*, t2.*, t3.*, t4.*
2389  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2390  LEFT JOIN t3 ON t1.c=t3.c
2391  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2392  WHERE t2.x>0 AND t3.y>0
2393  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2394} {
2395   6 106 206 306 106  6 206  6   -  -
2396  12 112 212 312 112 12 212 12   -  -
2397  18 118 218 318 118 18 218 18   -  -
2398  24 124 224 324 124 24 224 24   -  -
2399  30 130 230 330 130 30 230 30 330 30
2400  36 136 236 336 136 36 236 36   -  -
2401  42 142 242 342 142 42 242 42   -  -
2402  48 148 248 348 148 48 248 48   -  -
2403  54 154 254 354 154 54 254 54   -  -
2404  60 160 260 360 160 60 260 60 360 60
2405  66 166 266 366 166 66 266 66   -  -
2406  72 172 272 372 172 72 272 72   -  -
2407  78 178 278 378 178 78 278 78   -  -
2408  84 184 284 384 184 84 284 84   -  -
2409  90 190 290 390 190 90 290 90 390 90
2410}
2411do_execsql_test joinD-108 {
2412  SELECT t1.*, t2.*, t3.*, t4.*
2413  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2414  LEFT JOIN t3 ON t1.c=t3.c
2415  LEFT JOIN t4 ON t1.d=t4.d
2416  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
2417  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2418} {
2419  30 130 230 330 130 30 230 30 330 30
2420  60 160 260 360 160 60 260 60 360 60
2421  90 190 290 390 190 90 290 90 390 90
2422}
2423do_execsql_test joinD-109 {
2424  SELECT t1.*, t2.*, t3.*, t4.*
2425  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
2426  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2427  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2429} {
2430   2 102 202 302 102  2   -  -   -  -
2431   4 104 204 304 104  4   -  -   -  -
2432   6 106 206 306 106  6 206  6   -  -
2433   8 108 208 308 108  8   -  -   -  -
2434  10 110 210 310 110 10   -  - 310 10
2435  12 112 212 312 112 12 212 12   -  -
2436  14 114 214 314 114 14   -  -   -  -
2437  16 116 216 316 116 16   -  -   -  -
2438  18 118 218 318 118 18 218 18   -  -
2439  20 120 220 320 120 20   -  - 320 20
2440  22 122 222 322 122 22   -  -   -  -
2441  24 124 224 324 124 24 224 24   -  -
2442  26 126 226 326 126 26   -  -   -  -
2443  28 128 228 328 128 28   -  -   -  -
2444  30 130 230 330 130 30 230 30 330 30
2445  32 132 232 332 132 32   -  -   -  -
2446  34 134 234 334 134 34   -  -   -  -
2447  36 136 236 336 136 36 236 36   -  -
2448  38 138 238 338 138 38   -  -   -  -
2449  40 140 240 340 140 40   -  - 340 40
2450  42 142 242 342 142 42 242 42   -  -
2451  44 144 244 344 144 44   -  -   -  -
2452  46 146 246 346 146 46   -  -   -  -
2453  48 148 248 348 148 48 248 48   -  -
2454  50 150 250 350 150 50   -  - 350 50
2455  52 152 252 352 152 52   -  -   -  -
2456  54 154 254 354 154 54 254 54   -  -
2457  56 156 256 356 156 56   -  -   -  -
2458  58 158 258 358 158 58   -  -   -  -
2459  60 160 260 360 160 60 260 60 360 60
2460  62 162 262 362 162 62   -  -   -  -
2461  64 164 264 364 164 64   -  -   -  -
2462  66 166 266 366 166 66 266 66   -  -
2463  68 168 268 368 168 68   -  -   -  -
2464  70 170 270 370 170 70   -  - 370 70
2465  72 172 272 372 172 72 272 72   -  -
2466  74 174 274 374 174 74   -  -   -  -
2467  76 176 276 376 176 76   -  -   -  -
2468  78 178 278 378 178 78 278 78   -  -
2469  80 180 280 380 180 80   -  - 380 80
2470  82 182 282 382 182 82   -  -   -  -
2471  84 184 284 384 184 84 284 84   -  -
2472  86 186 286 386 186 86   -  -   -  -
2473  88 188 288 388 188 88   -  -   -  -
2474  90 190 290 390 190 90 290 90 390 90
2475  92 192 292 392 192 92   -  -   -  -
2476  94 194 294 394 194 94   -  -   -  -
2477}
2478do_execsql_test joinD-110 {
2479  SELECT t1.*, t2.*, t3.*, t4.*
2480  FROM t1 INNER JOIN t2 ON t2.x>0
2481  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2482  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2483  WHERE t1.b IS NOT DISTINCT FROM t2.b
2484  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2485} {
2486   2 102 202 302 102  2   -  -   -  -
2487   4 104 204 304 104  4   -  -   -  -
2488   6 106 206 306 106  6 206  6   -  -
2489   8 108 208 308 108  8   -  -   -  -
2490  10 110 210 310 110 10   -  - 310 10
2491  12 112 212 312 112 12 212 12   -  -
2492  14 114 214 314 114 14   -  -   -  -
2493  16 116 216 316 116 16   -  -   -  -
2494  18 118 218 318 118 18 218 18   -  -
2495  20 120 220 320 120 20   -  - 320 20
2496  22 122 222 322 122 22   -  -   -  -
2497  24 124 224 324 124 24 224 24   -  -
2498  26 126 226 326 126 26   -  -   -  -
2499  28 128 228 328 128 28   -  -   -  -
2500  30 130 230 330 130 30 230 30 330 30
2501  32 132 232 332 132 32   -  -   -  -
2502  34 134 234 334 134 34   -  -   -  -
2503  36 136 236 336 136 36 236 36   -  -
2504  38 138 238 338 138 38   -  -   -  -
2505  40 140 240 340 140 40   -  - 340 40
2506  42 142 242 342 142 42 242 42   -  -
2507  44 144 244 344 144 44   -  -   -  -
2508  46 146 246 346 146 46   -  -   -  -
2509  48 148 248 348 148 48 248 48   -  -
2510  50 150 250 350 150 50   -  - 350 50
2511  52 152 252 352 152 52   -  -   -  -
2512  54 154 254 354 154 54 254 54   -  -
2513  56 156 256 356 156 56   -  -   -  -
2514  58 158 258 358 158 58   -  -   -  -
2515  60 160 260 360 160 60 260 60 360 60
2516  62 162 262 362 162 62   -  -   -  -
2517  64 164 264 364 164 64   -  -   -  -
2518  66 166 266 366 166 66 266 66   -  -
2519  68 168 268 368 168 68   -  -   -  -
2520  70 170 270 370 170 70   -  - 370 70
2521  72 172 272 372 172 72 272 72   -  -
2522  74 174 274 374 174 74   -  -   -  -
2523  76 176 276 376 176 76   -  -   -  -
2524  78 178 278 378 178 78 278 78   -  -
2525  80 180 280 380 180 80   -  - 380 80
2526  82 182 282 382 182 82   -  -   -  -
2527  84 184 284 384 184 84 284 84   -  -
2528  86 186 286 386 186 86   -  -   -  -
2529  88 188 288 388 188 88   -  -   -  -
2530  90 190 290 390 190 90 290 90 390 90
2531  92 192 292 392 192 92   -  -   -  -
2532  94 194 294 394 194 94   -  -   -  -
2533}
2534do_execsql_test joinD-111 {
2535  SELECT t1.*, t2.*, t3.*, t4.*
2536  FROM t1 INNER JOIN t2 ON t2.x>0
2537  LEFT JOIN t3 ON t3.y>0
2538  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2539  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
2540  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2541} {
2542   6 106 206 306 106  6 206  6   -  -
2543  12 112 212 312 112 12 212 12   -  -
2544  18 118 218 318 118 18 218 18   -  -
2545  24 124 224 324 124 24 224 24   -  -
2546  30 130 230 330 130 30 230 30 330 30
2547  36 136 236 336 136 36 236 36   -  -
2548  42 142 242 342 142 42 242 42   -  -
2549  48 148 248 348 148 48 248 48   -  -
2550  54 154 254 354 154 54 254 54   -  -
2551  60 160 260 360 160 60 260 60 360 60
2552  66 166 266 366 166 66 266 66   -  -
2553  72 172 272 372 172 72 272 72   -  -
2554  78 178 278 378 178 78 278 78   -  -
2555  84 184 284 384 184 84 284 84   -  -
2556  90 190 290 390 190 90 290 90 390 90
2557}
2558do_execsql_test joinD-112 {
2559  SELECT t1.*, t2.*, t3.*, t4.*
2560  FROM t1 INNER JOIN t2 ON t2.x>0
2561  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2562  LEFT JOIN t4 ON t4.z>0
2563  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
2564  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2565} {
2566  10 110 210 310 110 10   -  - 310 10
2567  20 120 220 320 120 20   -  - 320 20
2568  30 130 230 330 130 30 230 30 330 30
2569  40 140 240 340 140 40   -  - 340 40
2570  50 150 250 350 150 50   -  - 350 50
2571  60 160 260 360 160 60 260 60 360 60
2572  70 170 270 370 170 70   -  - 370 70
2573  80 180 280 380 180 80   -  - 380 80
2574  90 190 290 390 190 90 290 90 390 90
2575}
2576do_execsql_test joinD-113 {
2577  SELECT t1.*, t2.*, t3.*, t4.*
2578  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
2579  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2580  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2582} {
2583   2 102 202 302 102  2   -  -   -  -
2584   4 104 204 304 104  4   -  -   -  -
2585   6 106 206 306 106  6 206  6   -  -
2586   8 108 208 308 108  8   -  -   -  -
2587  10 110 210 310 110 10   -  - 310 10
2588  12 112 212 312 112 12 212 12   -  -
2589  14 114 214 314 114 14   -  -   -  -
2590  16 116 216 316 116 16   -  -   -  -
2591  18 118 218 318 118 18 218 18   -  -
2592  20 120 220 320 120 20   -  - 320 20
2593  22 122 222 322 122 22   -  -   -  -
2594  24 124 224 324 124 24 224 24   -  -
2595  26 126 226 326 126 26   -  -   -  -
2596  28 128 228 328 128 28   -  -   -  -
2597  30 130 230 330 130 30 230 30 330 30
2598  32 132 232 332 132 32   -  -   -  -
2599  34 134 234 334 134 34   -  -   -  -
2600  36 136 236 336 136 36 236 36   -  -
2601  38 138 238 338 138 38   -  -   -  -
2602  40 140 240 340 140 40   -  - 340 40
2603  42 142 242 342 142 42 242 42   -  -
2604  44 144 244 344 144 44   -  -   -  -
2605  46 146 246 346 146 46   -  -   -  -
2606  48 148 248 348 148 48 248 48   -  -
2607  50 150 250 350 150 50   -  - 350 50
2608  52 152 252 352 152 52   -  -   -  -
2609  54 154 254 354 154 54 254 54   -  -
2610  56 156 256 356 156 56   -  -   -  -
2611  58 158 258 358 158 58   -  -   -  -
2612  60 160 260 360 160 60 260 60 360 60
2613  62 162 262 362 162 62   -  -   -  -
2614  64 164 264 364 164 64   -  -   -  -
2615  66 166 266 366 166 66 266 66   -  -
2616  68 168 268 368 168 68   -  -   -  -
2617  70 170 270 370 170 70   -  - 370 70
2618  72 172 272 372 172 72 272 72   -  -
2619  74 174 274 374 174 74   -  -   -  -
2620  76 176 276 376 176 76   -  -   -  -
2621  78 178 278 378 178 78 278 78   -  -
2622  80 180 280 380 180 80   -  - 380 80
2623  82 182 282 382 182 82   -  -   -  -
2624  84 184 284 384 184 84 284 84   -  -
2625  86 186 286 386 186 86   -  -   -  -
2626  88 188 288 388 188 88   -  -   -  -
2627  90 190 290 390 190 90 290 90 390 90
2628  92 192 292 392 192 92   -  -   -  -
2629  94 194 294 394 194 94   -  -   -  -
2630}
2631do_execsql_test joinD-114 {
2632  SELECT t1.*, t2.*, t3.*, t4.*
2633  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2634  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
2635  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2636  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2637} {
2638   2 102 202 302 102  2   -  -   -  -
2639   4 104 204 304 104  4   -  -   -  -
2640   6 106 206 306 106  6 206  6   -  -
2641   8 108 208 308 108  8   -  -   -  -
2642  10 110 210 310 110 10   -  - 310 10
2643  12 112 212 312 112 12 212 12   -  -
2644  14 114 214 314 114 14   -  -   -  -
2645  16 116 216 316 116 16   -  -   -  -
2646  18 118 218 318 118 18 218 18   -  -
2647  20 120 220 320 120 20   -  - 320 20
2648  22 122 222 322 122 22   -  -   -  -
2649  24 124 224 324 124 24 224 24   -  -
2650  26 126 226 326 126 26   -  -   -  -
2651  28 128 228 328 128 28   -  -   -  -
2652  30 130 230 330 130 30 230 30 330 30
2653  32 132 232 332 132 32   -  -   -  -
2654  34 134 234 334 134 34   -  -   -  -
2655  36 136 236 336 136 36 236 36   -  -
2656  38 138 238 338 138 38   -  -   -  -
2657  40 140 240 340 140 40   -  - 340 40
2658  42 142 242 342 142 42 242 42   -  -
2659  44 144 244 344 144 44   -  -   -  -
2660  46 146 246 346 146 46   -  -   -  -
2661  48 148 248 348 148 48 248 48   -  -
2662  50 150 250 350 150 50   -  - 350 50
2663  52 152 252 352 152 52   -  -   -  -
2664  54 154 254 354 154 54 254 54   -  -
2665  56 156 256 356 156 56   -  -   -  -
2666  58 158 258 358 158 58   -  -   -  -
2667  60 160 260 360 160 60 260 60 360 60
2668  62 162 262 362 162 62   -  -   -  -
2669  64 164 264 364 164 64   -  -   -  -
2670  66 166 266 366 166 66 266 66   -  -
2671  68 168 268 368 168 68   -  -   -  -
2672  70 170 270 370 170 70   -  - 370 70
2673  72 172 272 372 172 72 272 72   -  -
2674  74 174 274 374 174 74   -  -   -  -
2675  76 176 276 376 176 76   -  -   -  -
2676  78 178 278 378 178 78 278 78   -  -
2677  80 180 280 380 180 80   -  - 380 80
2678  82 182 282 382 182 82   -  -   -  -
2679  84 184 284 384 184 84 284 84   -  -
2680  86 186 286 386 186 86   -  -   -  -
2681  88 188 288 388 188 88   -  -   -  -
2682  90 190 290 390 190 90 290 90 390 90
2683  92 192 292 392 192 92   -  -   -  -
2684  94 194 294 394 194 94   -  -   -  -
2685}
2686do_execsql_test joinD-115 {
2687  SELECT t1.*, t2.*, t3.*, t4.*
2688  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2689  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2690  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2691  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2692} {
2693  10 110 210 310 110 10   -  - 310 10
2694  20 120 220 320 120 20   -  - 320 20
2695  30 130 230 330 130 30 230 30 330 30
2696  40 140 240 340 140 40   -  - 340 40
2697  50 150 250 350 150 50   -  - 350 50
2698  60 160 260 360 160 60 260 60 360 60
2699  70 170 270 370 170 70   -  - 370 70
2700  80 180 280 380 180 80   -  - 380 80
2701  90 190 290 390 190 90 290 90 390 90
2702   -   -   -   -   -  -   -  - 300  0
2703   -   -   -   -   -  -   -  - 305  5
2704   -   -   -   -   -  -   -  - 315 15
2705   -   -   -   -   -  -   -  - 325 25
2706   -   -   -   -   -  -   -  - 335 35
2707   -   -   -   -   -  -   -  - 345 45
2708   -   -   -   -   -  -   -  - 355 55
2709   -   -   -   -   -  -   -  - 365 65
2710   -   -   -   -   -  -   -  - 375 75
2711   -   -   -   -   -  -   -  - 385 85
2712   -   -   -   -   -  -   -  - 395 95
2713}
2714do_execsql_test joinD-116 {
2715  SELECT t1.*, t2.*, t3.*, t4.*
2716  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
2717  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2718  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2719  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2720} {
2721  10 110 210 310 110 10   -  - 310 10
2722  20 120 220 320 120 20   -  - 320 20
2723  30 130 230 330 130 30 230 30 330 30
2724  40 140 240 340 140 40   -  - 340 40
2725  50 150 250 350 150 50   -  - 350 50
2726  60 160 260 360 160 60 260 60 360 60
2727  70 170 270 370 170 70   -  - 370 70
2728  80 180 280 380 180 80   -  - 380 80
2729  90 190 290 390 190 90 290 90 390 90
2730   -   -   -   -   -  -   -  - 300  0
2731   -   -   -   -   -  -   -  - 305  5
2732   -   -   -   -   -  -   -  - 315 15
2733   -   -   -   -   -  -   -  - 325 25
2734   -   -   -   -   -  -   -  - 335 35
2735   -   -   -   -   -  -   -  - 345 45
2736   -   -   -   -   -  -   -  - 355 55
2737   -   -   -   -   -  -   -  - 365 65
2738   -   -   -   -   -  -   -  - 375 75
2739   -   -   -   -   -  -   -  - 385 85
2740   -   -   -   -   -  -   -  - 395 95
2741}
2742do_execsql_test joinD-117 {
2743  SELECT t1.*, t2.*, t3.*, t4.*
2744  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2745  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2746  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2747  WHERE t2.x>0
2748  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2749} {
2750  10 110 210 310 110 10   -  - 310 10
2751  20 120 220 320 120 20   -  - 320 20
2752  30 130 230 330 130 30 230 30 330 30
2753  40 140 240 340 140 40   -  - 340 40
2754  50 150 250 350 150 50   -  - 350 50
2755  60 160 260 360 160 60 260 60 360 60
2756  70 170 270 370 170 70   -  - 370 70
2757  80 180 280 380 180 80   -  - 380 80
2758  90 190 290 390 190 90 290 90 390 90
2759}
2760do_execsql_test joinD-118 {
2761  SELECT t1.*, t2.*, t3.*, t4.*
2762  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2763  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2764  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2765  WHERE (t2.x>0 OR t2.x IS NULL)
2766  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2767} {
2768  10 110 210 310 110 10   -  - 310 10
2769  20 120 220 320 120 20   -  - 320 20
2770  30 130 230 330 130 30 230 30 330 30
2771  40 140 240 340 140 40   -  - 340 40
2772  50 150 250 350 150 50   -  - 350 50
2773  60 160 260 360 160 60 260 60 360 60
2774  70 170 270 370 170 70   -  - 370 70
2775  80 180 280 380 180 80   -  - 380 80
2776  90 190 290 390 190 90 290 90 390 90
2777   -   -   -   -   -  -   -  - 300  0
2778   -   -   -   -   -  -   -  - 305  5
2779   -   -   -   -   -  -   -  - 315 15
2780   -   -   -   -   -  -   -  - 325 25
2781   -   -   -   -   -  -   -  - 335 35
2782   -   -   -   -   -  -   -  - 345 45
2783   -   -   -   -   -  -   -  - 355 55
2784   -   -   -   -   -  -   -  - 365 65
2785   -   -   -   -   -  -   -  - 375 75
2786   -   -   -   -   -  -   -  - 385 85
2787   -   -   -   -   -  -   -  - 395 95
2788}
2789do_execsql_test joinD-119 {
2790  SELECT t1.*, t2.*, t3.*, t4.*
2791  FROM t1 INNER JOIN t2 ON true
2792  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2793  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2794  WHERE t1.b=t2.b AND t2.x>0
2795  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2796} {
2797  10 110 210 310 110 10   -  - 310 10
2798  20 120 220 320 120 20   -  - 320 20
2799  30 130 230 330 130 30 230 30 330 30
2800  40 140 240 340 140 40   -  - 340 40
2801  50 150 250 350 150 50   -  - 350 50
2802  60 160 260 360 160 60 260 60 360 60
2803  70 170 270 370 170 70   -  - 370 70
2804  80 180 280 380 180 80   -  - 380 80
2805  90 190 290 390 190 90 290 90 390 90
2806}
2807do_execsql_test joinD-120 {
2808  SELECT t1.*, t2.*, t3.*, t4.*
2809  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2810  LEFT JOIN t3 ON t1.c=t3.c
2811  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2812  WHERE t3.y>0
2813  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2814} {
2815  30 130 230 330 130 30 230 30 330 30
2816  60 160 260 360 160 60 260 60 360 60
2817  90 190 290 390 190 90 290 90 390 90
2818}
2819do_execsql_test joinD-121 {
2820  SELECT t1.*, t2.*, t3.*, t4.*
2821  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2822  LEFT JOIN t3 ON t1.c=t3.c
2823  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2824  WHERE t3.y>0 OR t3.y IS NULL
2825  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2826} {
2827  10 110 210 310 110 10   -  - 310 10
2828  20 120 220 320 120 20   -  - 320 20
2829  30 130 230 330 130 30 230 30 330 30
2830  40 140 240 340 140 40   -  - 340 40
2831  50 150 250 350 150 50   -  - 350 50
2832  60 160 260 360 160 60 260 60 360 60
2833  70 170 270 370 170 70   -  - 370 70
2834  80 180 280 380 180 80   -  - 380 80
2835  90 190 290 390 190 90 290 90 390 90
2836   -   -   -   -   -  -   -  - 300  0
2837   -   -   -   -   -  -   -  - 305  5
2838   -   -   -   -   -  -   -  - 315 15
2839   -   -   -   -   -  -   -  - 325 25
2840   -   -   -   -   -  -   -  - 335 35
2841   -   -   -   -   -  -   -  - 345 45
2842   -   -   -   -   -  -   -  - 355 55
2843   -   -   -   -   -  -   -  - 365 65
2844   -   -   -   -   -  -   -  - 375 75
2845   -   -   -   -   -  -   -  - 385 85
2846   -   -   -   -   -  -   -  - 395 95
2847}
2848do_execsql_test joinD-122 {
2849  SELECT t1.*, t2.*, t3.*, t4.*
2850  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2851  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2852  RIGHT JOIN t4 ON t1.d=t4.d
2853  WHERE t4.z>0
2854  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2855} {
2856  10 110 210 310 110 10   -  - 310 10
2857  20 120 220 320 120 20   -  - 320 20
2858  30 130 230 330 130 30 230 30 330 30
2859  40 140 240 340 140 40   -  - 340 40
2860  50 150 250 350 150 50   -  - 350 50
2861  60 160 260 360 160 60 260 60 360 60
2862  70 170 270 370 170 70   -  - 370 70
2863  80 180 280 380 180 80   -  - 380 80
2864  90 190 290 390 190 90 290 90 390 90
2865   -   -   -   -   -  -   -  - 305  5
2866   -   -   -   -   -  -   -  - 315 15
2867   -   -   -   -   -  -   -  - 325 25
2868   -   -   -   -   -  -   -  - 335 35
2869   -   -   -   -   -  -   -  - 345 45
2870   -   -   -   -   -  -   -  - 355 55
2871   -   -   -   -   -  -   -  - 365 65
2872   -   -   -   -   -  -   -  - 375 75
2873   -   -   -   -   -  -   -  - 385 85
2874   -   -   -   -   -  -   -  - 395 95
2875}
2876do_execsql_test joinD-123 {
2877  SELECT t1.*, t2.*, t3.*, t4.*
2878  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2879  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2880  RIGHT JOIN t4 ON t1.d=t4.d
2881  WHERE t4.z IS NULL OR t4.z>0
2882  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2883} {
2884  10 110 210 310 110 10   -  - 310 10
2885  20 120 220 320 120 20   -  - 320 20
2886  30 130 230 330 130 30 230 30 330 30
2887  40 140 240 340 140 40   -  - 340 40
2888  50 150 250 350 150 50   -  - 350 50
2889  60 160 260 360 160 60 260 60 360 60
2890  70 170 270 370 170 70   -  - 370 70
2891  80 180 280 380 180 80   -  - 380 80
2892  90 190 290 390 190 90 290 90 390 90
2893   -   -   -   -   -  -   -  - 305  5
2894   -   -   -   -   -  -   -  - 315 15
2895   -   -   -   -   -  -   -  - 325 25
2896   -   -   -   -   -  -   -  - 335 35
2897   -   -   -   -   -  -   -  - 345 45
2898   -   -   -   -   -  -   -  - 355 55
2899   -   -   -   -   -  -   -  - 365 65
2900   -   -   -   -   -  -   -  - 375 75
2901   -   -   -   -   -  -   -  - 385 85
2902   -   -   -   -   -  -   -  - 395 95
2903}
2904do_execsql_test joinD-124 {
2905  SELECT t1.*, t2.*, t3.*, t4.*
2906  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2907  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2908  RIGHT JOIN t4 ON t1.d=t4.d
2909  WHERE t2.x>0 AND t4.z>0
2910  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2911} {
2912  10 110 210 310 110 10   -  - 310 10
2913  20 120 220 320 120 20   -  - 320 20
2914  30 130 230 330 130 30 230 30 330 30
2915  40 140 240 340 140 40   -  - 340 40
2916  50 150 250 350 150 50   -  - 350 50
2917  60 160 260 360 160 60 260 60 360 60
2918  70 170 270 370 170 70   -  - 370 70
2919  80 180 280 380 180 80   -  - 380 80
2920  90 190 290 390 190 90 290 90 390 90
2921}
2922do_execsql_test joinD-125 {
2923  SELECT t1.*, t2.*, t3.*, t4.*
2924  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2925  LEFT JOIN t3 ON t1.c=t3.c
2926  RIGHT JOIN t4 ON t1.d=t4.d
2927  WHERE t4.z>0 AND t3.y>0
2928  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2929} {
2930  30 130 230 330 130 30 230 30 330 30
2931  60 160 260 360 160 60 260 60 360 60
2932  90 190 290 390 190 90 290 90 390 90
2933}
2934do_execsql_test joinD-126 {
2935  SELECT t1.*, t2.*, t3.*, t4.*
2936  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2937  LEFT JOIN t3 ON t1.c=t3.c
2938  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2939  WHERE t2.x>0 AND t3.y>0
2940  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2941} {
2942  30 130 230 330 130 30 230 30 330 30
2943  60 160 260 360 160 60 260 60 360 60
2944  90 190 290 390 190 90 290 90 390 90
2945}
2946do_execsql_test joinD-127 {
2947  SELECT t1.*, t2.*, t3.*, t4.*
2948  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2949  LEFT JOIN t3 ON t1.c=t3.c
2950  RIGHT JOIN t4 ON t1.d=t4.d
2951  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
2952  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2953} {
2954  30 130 230 330 130 30 230 30 330 30
2955  60 160 260 360 160 60 260 60 360 60
2956  90 190 290 390 190 90 290 90 390 90
2957}
2958do_execsql_test joinD-128 {
2959  SELECT t1.*, t2.*, t3.*, t4.*
2960  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
2961  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2962  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2963  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2964} {
2965  10 110 210 310 110 10   -  - 310 10
2966  20 120 220 320 120 20   -  - 320 20
2967  30 130 230 330 130 30 230 30 330 30
2968  40 140 240 340 140 40   -  - 340 40
2969  50 150 250 350 150 50   -  - 350 50
2970  60 160 260 360 160 60 260 60 360 60
2971  70 170 270 370 170 70   -  - 370 70
2972  80 180 280 380 180 80   -  - 380 80
2973  90 190 290 390 190 90 290 90 390 90
2974   -   -   -   -   -  -   -  - 300  0
2975   -   -   -   -   -  -   -  - 305  5
2976   -   -   -   -   -  -   -  - 315 15
2977   -   -   -   -   -  -   -  - 325 25
2978   -   -   -   -   -  -   -  - 335 35
2979   -   -   -   -   -  -   -  - 345 45
2980   -   -   -   -   -  -   -  - 355 55
2981   -   -   -   -   -  -   -  - 365 65
2982   -   -   -   -   -  -   -  - 375 75
2983   -   -   -   -   -  -   -  - 385 85
2984   -   -   -   -   -  -   -  - 395 95
2985}
2986do_execsql_test joinD-129 {
2987  SELECT t1.*, t2.*, t3.*, t4.*
2988  FROM t1 INNER JOIN t2 ON t2.x>0
2989  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2990  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2991  WHERE t1.b IS NOT DISTINCT FROM t2.b
2992  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2993} {
2994  10 110 210 310 110 10   -  - 310 10
2995  20 120 220 320 120 20   -  - 320 20
2996  30 130 230 330 130 30 230 30 330 30
2997  40 140 240 340 140 40   -  - 340 40
2998  50 150 250 350 150 50   -  - 350 50
2999  60 160 260 360 160 60 260 60 360 60
3000  70 170 270 370 170 70   -  - 370 70
3001  80 180 280 380 180 80   -  - 380 80
3002  90 190 290 390 190 90 290 90 390 90
3003   -   -   -   -   -  -   -  - 300  0
3004}
3005do_execsql_test joinD-130 {
3006  SELECT t1.*, t2.*, t3.*, t4.*
3007  FROM t1 INNER JOIN t2 ON t2.x>0
3008  LEFT JOIN t3 ON t3.y>0
3009  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
3010  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
3011  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3012} {
3013  30 130 230 330 130 30 230 30 330 30
3014  60 160 260 360 160 60 260 60 360 60
3015  90 190 290 390 190 90 290 90 390 90
3016   -   -   -   -   -  -   -  - 300  0
3017}
3018do_execsql_test joinD-131 {
3019  SELECT t1.*, t2.*, t3.*, t4.*
3020  FROM t1 INNER JOIN t2 ON t2.x>0
3021  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3022  RIGHT JOIN t4 ON t4.z>0
3023  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
3024  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3025} {
3026  10 110 210 310 110 10   -  - 310 10
3027  20 120 220 320 120 20   -  - 320 20
3028  30 130 230 330 130 30 230 30 330 30
3029  40 140 240 340 140 40   -  - 340 40
3030  50 150 250 350 150 50   -  - 350 50
3031  60 160 260 360 160 60 260 60 360 60
3032  70 170 270 370 170 70   -  - 370 70
3033  80 180 280 380 180 80   -  - 380 80
3034  90 190 290 390 190 90 290 90 390 90
3035}
3036do_execsql_test joinD-132 {
3037  SELECT t1.*, t2.*, t3.*, t4.*
3038  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
3039  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3040  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
3041  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3042} {
3043  10 110 210 310 110 10   -  - 310 10
3044  20 120 220 320 120 20   -  - 320 20
3045  30 130 230 330 130 30 230 30 330 30
3046  40 140 240 340 140 40   -  - 340 40
3047  50 150 250 350 150 50   -  - 350 50
3048  60 160 260 360 160 60 260 60 360 60
3049  70 170 270 370 170 70   -  - 370 70
3050  80 180 280 380 180 80   -  - 380 80
3051  90 190 290 390 190 90 290 90 390 90
3052   -   -   -   -   -  -   -  - 300  0
3053   -   -   -   -   -  -   -  - 305  5
3054   -   -   -   -   -  -   -  - 315 15
3055   -   -   -   -   -  -   -  - 325 25
3056   -   -   -   -   -  -   -  - 335 35
3057   -   -   -   -   -  -   -  - 345 45
3058   -   -   -   -   -  -   -  - 355 55
3059   -   -   -   -   -  -   -  - 365 65
3060   -   -   -   -   -  -   -  - 375 75
3061   -   -   -   -   -  -   -  - 385 85
3062   -   -   -   -   -  -   -  - 395 95
3063}
3064do_execsql_test joinD-133 {
3065  SELECT t1.*, t2.*, t3.*, t4.*
3066  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3067  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
3068  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
3069  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3070} {
3071  10 110 210 310 110 10   -  - 310 10
3072  20 120 220 320 120 20   -  - 320 20
3073  30 130 230 330 130 30 230 30 330 30
3074  40 140 240 340 140 40   -  - 340 40
3075  50 150 250 350 150 50   -  - 350 50
3076  60 160 260 360 160 60 260 60 360 60
3077  70 170 270 370 170 70   -  - 370 70
3078  80 180 280 380 180 80   -  - 380 80
3079  90 190 290 390 190 90 290 90 390 90
3080   -   -   -   -   -  -   -  - 300  0
3081   -   -   -   -   -  -   -  - 305  5
3082   -   -   -   -   -  -   -  - 315 15
3083   -   -   -   -   -  -   -  - 325 25
3084   -   -   -   -   -  -   -  - 335 35
3085   -   -   -   -   -  -   -  - 345 45
3086   -   -   -   -   -  -   -  - 355 55
3087   -   -   -   -   -  -   -  - 365 65
3088   -   -   -   -   -  -   -  - 375 75
3089   -   -   -   -   -  -   -  - 385 85
3090   -   -   -   -   -  -   -  - 395 95
3091}
3092do_execsql_test joinD-134 {
3093  SELECT t1.*, t2.*, t3.*, t4.*
3094  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3095  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3096  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3097  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3098} {
3099   2 102 202 302 102  2   -  -   -  -
3100   4 104 204 304 104  4   -  -   -  -
3101   6 106 206 306 106  6 206  6   -  -
3102   8 108 208 308 108  8   -  -   -  -
3103  10 110 210 310 110 10   -  - 310 10
3104  12 112 212 312 112 12 212 12   -  -
3105  14 114 214 314 114 14   -  -   -  -
3106  16 116 216 316 116 16   -  -   -  -
3107  18 118 218 318 118 18 218 18   -  -
3108  20 120 220 320 120 20   -  - 320 20
3109  22 122 222 322 122 22   -  -   -  -
3110  24 124 224 324 124 24 224 24   -  -
3111  26 126 226 326 126 26   -  -   -  -
3112  28 128 228 328 128 28   -  -   -  -
3113  30 130 230 330 130 30 230 30 330 30
3114  32 132 232 332 132 32   -  -   -  -
3115  34 134 234 334 134 34   -  -   -  -
3116  36 136 236 336 136 36 236 36   -  -
3117  38 138 238 338 138 38   -  -   -  -
3118  40 140 240 340 140 40   -  - 340 40
3119  42 142 242 342 142 42 242 42   -  -
3120  44 144 244 344 144 44   -  -   -  -
3121  46 146 246 346 146 46   -  -   -  -
3122  48 148 248 348 148 48 248 48   -  -
3123  50 150 250 350 150 50   -  - 350 50
3124  52 152 252 352 152 52   -  -   -  -
3125  54 154 254 354 154 54 254 54   -  -
3126  56 156 256 356 156 56   -  -   -  -
3127  58 158 258 358 158 58   -  -   -  -
3128  60 160 260 360 160 60 260 60 360 60
3129  62 162 262 362 162 62   -  -   -  -
3130  64 164 264 364 164 64   -  -   -  -
3131  66 166 266 366 166 66 266 66   -  -
3132  68 168 268 368 168 68   -  -   -  -
3133  70 170 270 370 170 70   -  - 370 70
3134  72 172 272 372 172 72 272 72   -  -
3135  74 174 274 374 174 74   -  -   -  -
3136  76 176 276 376 176 76   -  -   -  -
3137  78 178 278 378 178 78 278 78   -  -
3138  80 180 280 380 180 80   -  - 380 80
3139  82 182 282 382 182 82   -  -   -  -
3140  84 184 284 384 184 84 284 84   -  -
3141  86 186 286 386 186 86   -  -   -  -
3142  88 188 288 388 188 88   -  -   -  -
3143  90 190 290 390 190 90 290 90 390 90
3144  92 192 292 392 192 92   -  -   -  -
3145  94 194 294 394 194 94   -  -   -  -
3146   -   -   -   -   -  -   -  - 300  0
3147   -   -   -   -   -  -   -  - 305  5
3148   -   -   -   -   -  -   -  - 315 15
3149   -   -   -   -   -  -   -  - 325 25
3150   -   -   -   -   -  -   -  - 335 35
3151   -   -   -   -   -  -   -  - 345 45
3152   -   -   -   -   -  -   -  - 355 55
3153   -   -   -   -   -  -   -  - 365 65
3154   -   -   -   -   -  -   -  - 375 75
3155   -   -   -   -   -  -   -  - 385 85
3156   -   -   -   -   -  -   -  - 395 95
3157}
3158do_execsql_test joinD-135 {
3159  SELECT t1.*, t2.*, t3.*, t4.*
3160  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
3161  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3162  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3163  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3164} {
3165   2 102 202 302 102  2   -  -   -  -
3166   4 104 204 304 104  4   -  -   -  -
3167   6 106 206 306 106  6 206  6   -  -
3168   8 108 208 308 108  8   -  -   -  -
3169  10 110 210 310 110 10   -  - 310 10
3170  12 112 212 312 112 12 212 12   -  -
3171  14 114 214 314 114 14   -  -   -  -
3172  16 116 216 316 116 16   -  -   -  -
3173  18 118 218 318 118 18 218 18   -  -
3174  20 120 220 320 120 20   -  - 320 20
3175  22 122 222 322 122 22   -  -   -  -
3176  24 124 224 324 124 24 224 24   -  -
3177  26 126 226 326 126 26   -  -   -  -
3178  28 128 228 328 128 28   -  -   -  -
3179  30 130 230 330 130 30 230 30 330 30
3180  32 132 232 332 132 32   -  -   -  -
3181  34 134 234 334 134 34   -  -   -  -
3182  36 136 236 336 136 36 236 36   -  -
3183  38 138 238 338 138 38   -  -   -  -
3184  40 140 240 340 140 40   -  - 340 40
3185  42 142 242 342 142 42 242 42   -  -
3186  44 144 244 344 144 44   -  -   -  -
3187  46 146 246 346 146 46   -  -   -  -
3188  48 148 248 348 148 48 248 48   -  -
3189  50 150 250 350 150 50   -  - 350 50
3190  52 152 252 352 152 52   -  -   -  -
3191  54 154 254 354 154 54 254 54   -  -
3192  56 156 256 356 156 56   -  -   -  -
3193  58 158 258 358 158 58   -  -   -  -
3194  60 160 260 360 160 60 260 60 360 60
3195  62 162 262 362 162 62   -  -   -  -
3196  64 164 264 364 164 64   -  -   -  -
3197  66 166 266 366 166 66 266 66   -  -
3198  68 168 268 368 168 68   -  -   -  -
3199  70 170 270 370 170 70   -  - 370 70
3200  72 172 272 372 172 72 272 72   -  -
3201  74 174 274 374 174 74   -  -   -  -
3202  76 176 276 376 176 76   -  -   -  -
3203  78 178 278 378 178 78 278 78   -  -
3204  80 180 280 380 180 80   -  - 380 80
3205  82 182 282 382 182 82   -  -   -  -
3206  84 184 284 384 184 84 284 84   -  -
3207  86 186 286 386 186 86   -  -   -  -
3208  88 188 288 388 188 88   -  -   -  -
3209  90 190 290 390 190 90 290 90 390 90
3210  92 192 292 392 192 92   -  -   -  -
3211  94 194 294 394 194 94   -  -   -  -
3212   -   -   -   -   -  -   -  - 300  0
3213   -   -   -   -   -  -   -  - 305  5
3214   -   -   -   -   -  -   -  - 315 15
3215   -   -   -   -   -  -   -  - 325 25
3216   -   -   -   -   -  -   -  - 335 35
3217   -   -   -   -   -  -   -  - 345 45
3218   -   -   -   -   -  -   -  - 355 55
3219   -   -   -   -   -  -   -  - 365 65
3220   -   -   -   -   -  -   -  - 375 75
3221   -   -   -   -   -  -   -  - 385 85
3222   -   -   -   -   -  -   -  - 395 95
3223}
3224do_execsql_test joinD-136 {
3225  SELECT t1.*, t2.*, t3.*, t4.*
3226  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3227  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3228  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3229  WHERE t2.x>0
3230  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3231} {
3232   2 102 202 302 102  2   -  -   -  -
3233   4 104 204 304 104  4   -  -   -  -
3234   6 106 206 306 106  6 206  6   -  -
3235   8 108 208 308 108  8   -  -   -  -
3236  10 110 210 310 110 10   -  - 310 10
3237  12 112 212 312 112 12 212 12   -  -
3238  14 114 214 314 114 14   -  -   -  -
3239  16 116 216 316 116 16   -  -   -  -
3240  18 118 218 318 118 18 218 18   -  -
3241  20 120 220 320 120 20   -  - 320 20
3242  22 122 222 322 122 22   -  -   -  -
3243  24 124 224 324 124 24 224 24   -  -
3244  26 126 226 326 126 26   -  -   -  -
3245  28 128 228 328 128 28   -  -   -  -
3246  30 130 230 330 130 30 230 30 330 30
3247  32 132 232 332 132 32   -  -   -  -
3248  34 134 234 334 134 34   -  -   -  -
3249  36 136 236 336 136 36 236 36   -  -
3250  38 138 238 338 138 38   -  -   -  -
3251  40 140 240 340 140 40   -  - 340 40
3252  42 142 242 342 142 42 242 42   -  -
3253  44 144 244 344 144 44   -  -   -  -
3254  46 146 246 346 146 46   -  -   -  -
3255  48 148 248 348 148 48 248 48   -  -
3256  50 150 250 350 150 50   -  - 350 50
3257  52 152 252 352 152 52   -  -   -  -
3258  54 154 254 354 154 54 254 54   -  -
3259  56 156 256 356 156 56   -  -   -  -
3260  58 158 258 358 158 58   -  -   -  -
3261  60 160 260 360 160 60 260 60 360 60
3262  62 162 262 362 162 62   -  -   -  -
3263  64 164 264 364 164 64   -  -   -  -
3264  66 166 266 366 166 66 266 66   -  -
3265  68 168 268 368 168 68   -  -   -  -
3266  70 170 270 370 170 70   -  - 370 70
3267  72 172 272 372 172 72 272 72   -  -
3268  74 174 274 374 174 74   -  -   -  -
3269  76 176 276 376 176 76   -  -   -  -
3270  78 178 278 378 178 78 278 78   -  -
3271  80 180 280 380 180 80   -  - 380 80
3272  82 182 282 382 182 82   -  -   -  -
3273  84 184 284 384 184 84 284 84   -  -
3274  86 186 286 386 186 86   -  -   -  -
3275  88 188 288 388 188 88   -  -   -  -
3276  90 190 290 390 190 90 290 90 390 90
3277  92 192 292 392 192 92   -  -   -  -
3278  94 194 294 394 194 94   -  -   -  -
3279}
3280do_execsql_test joinD-137 {
3281  SELECT t1.*, t2.*, t3.*, t4.*
3282  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3283  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3284  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3285  WHERE (t2.x>0 OR t2.x IS NULL)
3286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3287} {
3288   2 102 202 302 102  2   -  -   -  -
3289   4 104 204 304 104  4   -  -   -  -
3290   6 106 206 306 106  6 206  6   -  -
3291   8 108 208 308 108  8   -  -   -  -
3292  10 110 210 310 110 10   -  - 310 10
3293  12 112 212 312 112 12 212 12   -  -
3294  14 114 214 314 114 14   -  -   -  -
3295  16 116 216 316 116 16   -  -   -  -
3296  18 118 218 318 118 18 218 18   -  -
3297  20 120 220 320 120 20   -  - 320 20
3298  22 122 222 322 122 22   -  -   -  -
3299  24 124 224 324 124 24 224 24   -  -
3300  26 126 226 326 126 26   -  -   -  -
3301  28 128 228 328 128 28   -  -   -  -
3302  30 130 230 330 130 30 230 30 330 30
3303  32 132 232 332 132 32   -  -   -  -
3304  34 134 234 334 134 34   -  -   -  -
3305  36 136 236 336 136 36 236 36   -  -
3306  38 138 238 338 138 38   -  -   -  -
3307  40 140 240 340 140 40   -  - 340 40
3308  42 142 242 342 142 42 242 42   -  -
3309  44 144 244 344 144 44   -  -   -  -
3310  46 146 246 346 146 46   -  -   -  -
3311  48 148 248 348 148 48 248 48   -  -
3312  50 150 250 350 150 50   -  - 350 50
3313  52 152 252 352 152 52   -  -   -  -
3314  54 154 254 354 154 54 254 54   -  -
3315  56 156 256 356 156 56   -  -   -  -
3316  58 158 258 358 158 58   -  -   -  -
3317  60 160 260 360 160 60 260 60 360 60
3318  62 162 262 362 162 62   -  -   -  -
3319  64 164 264 364 164 64   -  -   -  -
3320  66 166 266 366 166 66 266 66   -  -
3321  68 168 268 368 168 68   -  -   -  -
3322  70 170 270 370 170 70   -  - 370 70
3323  72 172 272 372 172 72 272 72   -  -
3324  74 174 274 374 174 74   -  -   -  -
3325  76 176 276 376 176 76   -  -   -  -
3326  78 178 278 378 178 78 278 78   -  -
3327  80 180 280 380 180 80   -  - 380 80
3328  82 182 282 382 182 82   -  -   -  -
3329  84 184 284 384 184 84 284 84   -  -
3330  86 186 286 386 186 86   -  -   -  -
3331  88 188 288 388 188 88   -  -   -  -
3332  90 190 290 390 190 90 290 90 390 90
3333  92 192 292 392 192 92   -  -   -  -
3334  94 194 294 394 194 94   -  -   -  -
3335   -   -   -   -   -  -   -  - 300  0
3336   -   -   -   -   -  -   -  - 305  5
3337   -   -   -   -   -  -   -  - 315 15
3338   -   -   -   -   -  -   -  - 325 25
3339   -   -   -   -   -  -   -  - 335 35
3340   -   -   -   -   -  -   -  - 345 45
3341   -   -   -   -   -  -   -  - 355 55
3342   -   -   -   -   -  -   -  - 365 65
3343   -   -   -   -   -  -   -  - 375 75
3344   -   -   -   -   -  -   -  - 385 85
3345   -   -   -   -   -  -   -  - 395 95
3346}
3347do_execsql_test joinD-138 {
3348  SELECT t1.*, t2.*, t3.*, t4.*
3349  FROM t1 INNER JOIN t2 ON true
3350  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3351  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3352  WHERE t1.b=t2.b AND t2.x>0
3353  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3354} {
3355   2 102 202 302 102  2   -  -   -  -
3356   4 104 204 304 104  4   -  -   -  -
3357   6 106 206 306 106  6 206  6   -  -
3358   8 108 208 308 108  8   -  -   -  -
3359  10 110 210 310 110 10   -  - 310 10
3360  12 112 212 312 112 12 212 12   -  -
3361  14 114 214 314 114 14   -  -   -  -
3362  16 116 216 316 116 16   -  -   -  -
3363  18 118 218 318 118 18 218 18   -  -
3364  20 120 220 320 120 20   -  - 320 20
3365  22 122 222 322 122 22   -  -   -  -
3366  24 124 224 324 124 24 224 24   -  -
3367  26 126 226 326 126 26   -  -   -  -
3368  28 128 228 328 128 28   -  -   -  -
3369  30 130 230 330 130 30 230 30 330 30
3370  32 132 232 332 132 32   -  -   -  -
3371  34 134 234 334 134 34   -  -   -  -
3372  36 136 236 336 136 36 236 36   -  -
3373  38 138 238 338 138 38   -  -   -  -
3374  40 140 240 340 140 40   -  - 340 40
3375  42 142 242 342 142 42 242 42   -  -
3376  44 144 244 344 144 44   -  -   -  -
3377  46 146 246 346 146 46   -  -   -  -
3378  48 148 248 348 148 48 248 48   -  -
3379  50 150 250 350 150 50   -  - 350 50
3380  52 152 252 352 152 52   -  -   -  -
3381  54 154 254 354 154 54 254 54   -  -
3382  56 156 256 356 156 56   -  -   -  -
3383  58 158 258 358 158 58   -  -   -  -
3384  60 160 260 360 160 60 260 60 360 60
3385  62 162 262 362 162 62   -  -   -  -
3386  64 164 264 364 164 64   -  -   -  -
3387  66 166 266 366 166 66 266 66   -  -
3388  68 168 268 368 168 68   -  -   -  -
3389  70 170 270 370 170 70   -  - 370 70
3390  72 172 272 372 172 72 272 72   -  -
3391  74 174 274 374 174 74   -  -   -  -
3392  76 176 276 376 176 76   -  -   -  -
3393  78 178 278 378 178 78 278 78   -  -
3394  80 180 280 380 180 80   -  - 380 80
3395  82 182 282 382 182 82   -  -   -  -
3396  84 184 284 384 184 84 284 84   -  -
3397  86 186 286 386 186 86   -  -   -  -
3398  88 188 288 388 188 88   -  -   -  -
3399  90 190 290 390 190 90 290 90 390 90
3400  92 192 292 392 192 92   -  -   -  -
3401  94 194 294 394 194 94   -  -   -  -
3402}
3403do_execsql_test joinD-139 {
3404  SELECT t1.*, t2.*, t3.*, t4.*
3405  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3406  LEFT JOIN t3 ON t1.c=t3.c
3407  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3408  WHERE t3.y>0
3409  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3410} {
3411   6 106 206 306 106  6 206  6   -  -
3412  12 112 212 312 112 12 212 12   -  -
3413  18 118 218 318 118 18 218 18   -  -
3414  24 124 224 324 124 24 224 24   -  -
3415  30 130 230 330 130 30 230 30 330 30
3416  36 136 236 336 136 36 236 36   -  -
3417  42 142 242 342 142 42 242 42   -  -
3418  48 148 248 348 148 48 248 48   -  -
3419  54 154 254 354 154 54 254 54   -  -
3420  60 160 260 360 160 60 260 60 360 60
3421  66 166 266 366 166 66 266 66   -  -
3422  72 172 272 372 172 72 272 72   -  -
3423  78 178 278 378 178 78 278 78   -  -
3424  84 184 284 384 184 84 284 84   -  -
3425  90 190 290 390 190 90 290 90 390 90
3426}
3427do_execsql_test joinD-140 {
3428  SELECT t1.*, t2.*, t3.*, t4.*
3429  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3430  LEFT JOIN t3 ON t1.c=t3.c
3431  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3432  WHERE t3.y>0 OR t3.y IS NULL
3433  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3434} {
3435   2 102 202 302 102  2   -  -   -  -
3436   4 104 204 304 104  4   -  -   -  -
3437   6 106 206 306 106  6 206  6   -  -
3438   8 108 208 308 108  8   -  -   -  -
3439  10 110 210 310 110 10   -  - 310 10
3440  12 112 212 312 112 12 212 12   -  -
3441  14 114 214 314 114 14   -  -   -  -
3442  16 116 216 316 116 16   -  -   -  -
3443  18 118 218 318 118 18 218 18   -  -
3444  20 120 220 320 120 20   -  - 320 20
3445  22 122 222 322 122 22   -  -   -  -
3446  24 124 224 324 124 24 224 24   -  -
3447  26 126 226 326 126 26   -  -   -  -
3448  28 128 228 328 128 28   -  -   -  -
3449  30 130 230 330 130 30 230 30 330 30
3450  32 132 232 332 132 32   -  -   -  -
3451  34 134 234 334 134 34   -  -   -  -
3452  36 136 236 336 136 36 236 36   -  -
3453  38 138 238 338 138 38   -  -   -  -
3454  40 140 240 340 140 40   -  - 340 40
3455  42 142 242 342 142 42 242 42   -  -
3456  44 144 244 344 144 44   -  -   -  -
3457  46 146 246 346 146 46   -  -   -  -
3458  48 148 248 348 148 48 248 48   -  -
3459  50 150 250 350 150 50   -  - 350 50
3460  52 152 252 352 152 52   -  -   -  -
3461  54 154 254 354 154 54 254 54   -  -
3462  56 156 256 356 156 56   -  -   -  -
3463  58 158 258 358 158 58   -  -   -  -
3464  60 160 260 360 160 60 260 60 360 60
3465  62 162 262 362 162 62   -  -   -  -
3466  64 164 264 364 164 64   -  -   -  -
3467  66 166 266 366 166 66 266 66   -  -
3468  68 168 268 368 168 68   -  -   -  -
3469  70 170 270 370 170 70   -  - 370 70
3470  72 172 272 372 172 72 272 72   -  -
3471  74 174 274 374 174 74   -  -   -  -
3472  76 176 276 376 176 76   -  -   -  -
3473  78 178 278 378 178 78 278 78   -  -
3474  80 180 280 380 180 80   -  - 380 80
3475  82 182 282 382 182 82   -  -   -  -
3476  84 184 284 384 184 84 284 84   -  -
3477  86 186 286 386 186 86   -  -   -  -
3478  88 188 288 388 188 88   -  -   -  -
3479  90 190 290 390 190 90 290 90 390 90
3480  92 192 292 392 192 92   -  -   -  -
3481  94 194 294 394 194 94   -  -   -  -
3482   -   -   -   -   -  -   -  - 300  0
3483   -   -   -   -   -  -   -  - 305  5
3484   -   -   -   -   -  -   -  - 315 15
3485   -   -   -   -   -  -   -  - 325 25
3486   -   -   -   -   -  -   -  - 335 35
3487   -   -   -   -   -  -   -  - 345 45
3488   -   -   -   -   -  -   -  - 355 55
3489   -   -   -   -   -  -   -  - 365 65
3490   -   -   -   -   -  -   -  - 375 75
3491   -   -   -   -   -  -   -  - 385 85
3492   -   -   -   -   -  -   -  - 395 95
3493}
3494do_execsql_test joinD-141 {
3495  SELECT t1.*, t2.*, t3.*, t4.*
3496  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3497  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3498  FULL JOIN t4 ON t1.d=t4.d
3499  WHERE t4.z>0
3500  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3501} {
3502  10 110 210 310 110 10   -  - 310 10
3503  20 120 220 320 120 20   -  - 320 20
3504  30 130 230 330 130 30 230 30 330 30
3505  40 140 240 340 140 40   -  - 340 40
3506  50 150 250 350 150 50   -  - 350 50
3507  60 160 260 360 160 60 260 60 360 60
3508  70 170 270 370 170 70   -  - 370 70
3509  80 180 280 380 180 80   -  - 380 80
3510  90 190 290 390 190 90 290 90 390 90
3511   -   -   -   -   -  -   -  - 305  5
3512   -   -   -   -   -  -   -  - 315 15
3513   -   -   -   -   -  -   -  - 325 25
3514   -   -   -   -   -  -   -  - 335 35
3515   -   -   -   -   -  -   -  - 345 45
3516   -   -   -   -   -  -   -  - 355 55
3517   -   -   -   -   -  -   -  - 365 65
3518   -   -   -   -   -  -   -  - 375 75
3519   -   -   -   -   -  -   -  - 385 85
3520   -   -   -   -   -  -   -  - 395 95
3521}
3522do_execsql_test joinD-142 {
3523  SELECT t1.*, t2.*, t3.*, t4.*
3524  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3525  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3526  FULL JOIN t4 ON t1.d=t4.d
3527  WHERE t4.z IS NULL OR t4.z>0
3528  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3529} {
3530   2 102 202 302 102  2   -  -   -  -
3531   4 104 204 304 104  4   -  -   -  -
3532   6 106 206 306 106  6 206  6   -  -
3533   8 108 208 308 108  8   -  -   -  -
3534  10 110 210 310 110 10   -  - 310 10
3535  12 112 212 312 112 12 212 12   -  -
3536  14 114 214 314 114 14   -  -   -  -
3537  16 116 216 316 116 16   -  -   -  -
3538  18 118 218 318 118 18 218 18   -  -
3539  20 120 220 320 120 20   -  - 320 20
3540  22 122 222 322 122 22   -  -   -  -
3541  24 124 224 324 124 24 224 24   -  -
3542  26 126 226 326 126 26   -  -   -  -
3543  28 128 228 328 128 28   -  -   -  -
3544  30 130 230 330 130 30 230 30 330 30
3545  32 132 232 332 132 32   -  -   -  -
3546  34 134 234 334 134 34   -  -   -  -
3547  36 136 236 336 136 36 236 36   -  -
3548  38 138 238 338 138 38   -  -   -  -
3549  40 140 240 340 140 40   -  - 340 40
3550  42 142 242 342 142 42 242 42   -  -
3551  44 144 244 344 144 44   -  -   -  -
3552  46 146 246 346 146 46   -  -   -  -
3553  48 148 248 348 148 48 248 48   -  -
3554  50 150 250 350 150 50   -  - 350 50
3555  52 152 252 352 152 52   -  -   -  -
3556  54 154 254 354 154 54 254 54   -  -
3557  56 156 256 356 156 56   -  -   -  -
3558  58 158 258 358 158 58   -  -   -  -
3559  60 160 260 360 160 60 260 60 360 60
3560  62 162 262 362 162 62   -  -   -  -
3561  64 164 264 364 164 64   -  -   -  -
3562  66 166 266 366 166 66 266 66   -  -
3563  68 168 268 368 168 68   -  -   -  -
3564  70 170 270 370 170 70   -  - 370 70
3565  72 172 272 372 172 72 272 72   -  -
3566  74 174 274 374 174 74   -  -   -  -
3567  76 176 276 376 176 76   -  -   -  -
3568  78 178 278 378 178 78 278 78   -  -
3569  80 180 280 380 180 80   -  - 380 80
3570  82 182 282 382 182 82   -  -   -  -
3571  84 184 284 384 184 84 284 84   -  -
3572  86 186 286 386 186 86   -  -   -  -
3573  88 188 288 388 188 88   -  -   -  -
3574  90 190 290 390 190 90 290 90 390 90
3575  92 192 292 392 192 92   -  -   -  -
3576  94 194 294 394 194 94   -  -   -  -
3577   -   -   -   -   -  -   -  - 305  5
3578   -   -   -   -   -  -   -  - 315 15
3579   -   -   -   -   -  -   -  - 325 25
3580   -   -   -   -   -  -   -  - 335 35
3581   -   -   -   -   -  -   -  - 345 45
3582   -   -   -   -   -  -   -  - 355 55
3583   -   -   -   -   -  -   -  - 365 65
3584   -   -   -   -   -  -   -  - 375 75
3585   -   -   -   -   -  -   -  - 385 85
3586   -   -   -   -   -  -   -  - 395 95
3587}
3588do_execsql_test joinD-143 {
3589  SELECT t1.*, t2.*, t3.*, t4.*
3590  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3591  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3592  FULL JOIN t4 ON t1.d=t4.d
3593  WHERE t2.x>0 AND t4.z>0
3594  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3595} {
3596  10 110 210 310 110 10   -  - 310 10
3597  20 120 220 320 120 20   -  - 320 20
3598  30 130 230 330 130 30 230 30 330 30
3599  40 140 240 340 140 40   -  - 340 40
3600  50 150 250 350 150 50   -  - 350 50
3601  60 160 260 360 160 60 260 60 360 60
3602  70 170 270 370 170 70   -  - 370 70
3603  80 180 280 380 180 80   -  - 380 80
3604  90 190 290 390 190 90 290 90 390 90
3605}
3606do_execsql_test joinD-144 {
3607  SELECT t1.*, t2.*, t3.*, t4.*
3608  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3609  LEFT JOIN t3 ON t1.c=t3.c
3610  FULL JOIN t4 ON t1.d=t4.d
3611  WHERE t4.z>0 AND t3.y>0
3612  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3613} {
3614  30 130 230 330 130 30 230 30 330 30
3615  60 160 260 360 160 60 260 60 360 60
3616  90 190 290 390 190 90 290 90 390 90
3617}
3618do_execsql_test joinD-145 {
3619  SELECT t1.*, t2.*, t3.*, t4.*
3620  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3621  LEFT JOIN t3 ON t1.c=t3.c
3622  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3623  WHERE t2.x>0 AND t3.y>0
3624  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3625} {
3626   6 106 206 306 106  6 206  6   -  -
3627  12 112 212 312 112 12 212 12   -  -
3628  18 118 218 318 118 18 218 18   -  -
3629  24 124 224 324 124 24 224 24   -  -
3630  30 130 230 330 130 30 230 30 330 30
3631  36 136 236 336 136 36 236 36   -  -
3632  42 142 242 342 142 42 242 42   -  -
3633  48 148 248 348 148 48 248 48   -  -
3634  54 154 254 354 154 54 254 54   -  -
3635  60 160 260 360 160 60 260 60 360 60
3636  66 166 266 366 166 66 266 66   -  -
3637  72 172 272 372 172 72 272 72   -  -
3638  78 178 278 378 178 78 278 78   -  -
3639  84 184 284 384 184 84 284 84   -  -
3640  90 190 290 390 190 90 290 90 390 90
3641}
3642do_execsql_test joinD-146 {
3643  SELECT t1.*, t2.*, t3.*, t4.*
3644  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3645  LEFT JOIN t3 ON t1.c=t3.c
3646  FULL JOIN t4 ON t1.d=t4.d
3647  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
3648  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3649} {
3650  30 130 230 330 130 30 230 30 330 30
3651  60 160 260 360 160 60 260 60 360 60
3652  90 190 290 390 190 90 290 90 390 90
3653}
3654do_execsql_test joinD-147 {
3655  SELECT t1.*, t2.*, t3.*, t4.*
3656  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
3657  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3658  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
3659  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3660} {
3661   2 102 202 302 102  2   -  -   -  -
3662   4 104 204 304 104  4   -  -   -  -
3663   6 106 206 306 106  6 206  6   -  -
3664   8 108 208 308 108  8   -  -   -  -
3665  10 110 210 310 110 10   -  - 310 10
3666  12 112 212 312 112 12 212 12   -  -
3667  14 114 214 314 114 14   -  -   -  -
3668  16 116 216 316 116 16   -  -   -  -
3669  18 118 218 318 118 18 218 18   -  -
3670  20 120 220 320 120 20   -  - 320 20
3671  22 122 222 322 122 22   -  -   -  -
3672  24 124 224 324 124 24 224 24   -  -
3673  26 126 226 326 126 26   -  -   -  -
3674  28 128 228 328 128 28   -  -   -  -
3675  30 130 230 330 130 30 230 30 330 30
3676  32 132 232 332 132 32   -  -   -  -
3677  34 134 234 334 134 34   -  -   -  -
3678  36 136 236 336 136 36 236 36   -  -
3679  38 138 238 338 138 38   -  -   -  -
3680  40 140 240 340 140 40   -  - 340 40
3681  42 142 242 342 142 42 242 42   -  -
3682  44 144 244 344 144 44   -  -   -  -
3683  46 146 246 346 146 46   -  -   -  -
3684  48 148 248 348 148 48 248 48   -  -
3685  50 150 250 350 150 50   -  - 350 50
3686  52 152 252 352 152 52   -  -   -  -
3687  54 154 254 354 154 54 254 54   -  -
3688  56 156 256 356 156 56   -  -   -  -
3689  58 158 258 358 158 58   -  -   -  -
3690  60 160 260 360 160 60 260 60 360 60
3691  62 162 262 362 162 62   -  -   -  -
3692  64 164 264 364 164 64   -  -   -  -
3693  66 166 266 366 166 66 266 66   -  -
3694  68 168 268 368 168 68   -  -   -  -
3695  70 170 270 370 170 70   -  - 370 70
3696  72 172 272 372 172 72 272 72   -  -
3697  74 174 274 374 174 74   -  -   -  -
3698  76 176 276 376 176 76   -  -   -  -
3699  78 178 278 378 178 78 278 78   -  -
3700  80 180 280 380 180 80   -  - 380 80
3701  82 182 282 382 182 82   -  -   -  -
3702  84 184 284 384 184 84 284 84   -  -
3703  86 186 286 386 186 86   -  -   -  -
3704  88 188 288 388 188 88   -  -   -  -
3705  90 190 290 390 190 90 290 90 390 90
3706  92 192 292 392 192 92   -  -   -  -
3707  94 194 294 394 194 94   -  -   -  -
3708   -   -   -   -   -  -   -  - 300  0
3709   -   -   -   -   -  -   -  - 305  5
3710   -   -   -   -   -  -   -  - 315 15
3711   -   -   -   -   -  -   -  - 325 25
3712   -   -   -   -   -  -   -  - 335 35
3713   -   -   -   -   -  -   -  - 345 45
3714   -   -   -   -   -  -   -  - 355 55
3715   -   -   -   -   -  -   -  - 365 65
3716   -   -   -   -   -  -   -  - 375 75
3717   -   -   -   -   -  -   -  - 385 85
3718   -   -   -   -   -  -   -  - 395 95
3719}
3720do_execsql_test joinD-148 {
3721  SELECT t1.*, t2.*, t3.*, t4.*
3722  FROM t1 INNER JOIN t2 ON t2.x>0
3723  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3724  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
3725  WHERE t1.b IS NOT DISTINCT FROM t2.b
3726  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3727} {
3728   2 102 202 302 102  2   -  -   -  -
3729   4 104 204 304 104  4   -  -   -  -
3730   6 106 206 306 106  6 206  6   -  -
3731   8 108 208 308 108  8   -  -   -  -
3732  10 110 210 310 110 10   -  - 310 10
3733  12 112 212 312 112 12 212 12   -  -
3734  14 114 214 314 114 14   -  -   -  -
3735  16 116 216 316 116 16   -  -   -  -
3736  18 118 218 318 118 18 218 18   -  -
3737  20 120 220 320 120 20   -  - 320 20
3738  22 122 222 322 122 22   -  -   -  -
3739  24 124 224 324 124 24 224 24   -  -
3740  26 126 226 326 126 26   -  -   -  -
3741  28 128 228 328 128 28   -  -   -  -
3742  30 130 230 330 130 30 230 30 330 30
3743  32 132 232 332 132 32   -  -   -  -
3744  34 134 234 334 134 34   -  -   -  -
3745  36 136 236 336 136 36 236 36   -  -
3746  38 138 238 338 138 38   -  -   -  -
3747  40 140 240 340 140 40   -  - 340 40
3748  42 142 242 342 142 42 242 42   -  -
3749  44 144 244 344 144 44   -  -   -  -
3750  46 146 246 346 146 46   -  -   -  -
3751  48 148 248 348 148 48 248 48   -  -
3752  50 150 250 350 150 50   -  - 350 50
3753  52 152 252 352 152 52   -  -   -  -
3754  54 154 254 354 154 54 254 54   -  -
3755  56 156 256 356 156 56   -  -   -  -
3756  58 158 258 358 158 58   -  -   -  -
3757  60 160 260 360 160 60 260 60 360 60
3758  62 162 262 362 162 62   -  -   -  -
3759  64 164 264 364 164 64   -  -   -  -
3760  66 166 266 366 166 66 266 66   -  -
3761  68 168 268 368 168 68   -  -   -  -
3762  70 170 270 370 170 70   -  - 370 70
3763  72 172 272 372 172 72 272 72   -  -
3764  74 174 274 374 174 74   -  -   -  -
3765  76 176 276 376 176 76   -  -   -  -
3766  78 178 278 378 178 78 278 78   -  -
3767  80 180 280 380 180 80   -  - 380 80
3768  82 182 282 382 182 82   -  -   -  -
3769  84 184 284 384 184 84 284 84   -  -
3770  86 186 286 386 186 86   -  -   -  -
3771  88 188 288 388 188 88   -  -   -  -
3772  90 190 290 390 190 90 290 90 390 90
3773  92 192 292 392 192 92   -  -   -  -
3774  94 194 294 394 194 94   -  -   -  -
3775   -   -   -   -   -  -   -  - 300  0
3776}
3777do_execsql_test joinD-149 {
3778  SELECT t1.*, t2.*, t3.*, t4.*
3779  FROM t1 INNER JOIN t2 ON t2.x>0
3780  LEFT JOIN t3 ON t3.y>0
3781  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
3782  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
3783  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3784} {
3785   6 106 206 306 106  6 206  6   -  -
3786  12 112 212 312 112 12 212 12   -  -
3787  18 118 218 318 118 18 218 18   -  -
3788  24 124 224 324 124 24 224 24   -  -
3789  30 130 230 330 130 30 230 30 330 30
3790  36 136 236 336 136 36 236 36   -  -
3791  42 142 242 342 142 42 242 42   -  -
3792  48 148 248 348 148 48 248 48   -  -
3793  54 154 254 354 154 54 254 54   -  -
3794  60 160 260 360 160 60 260 60 360 60
3795  66 166 266 366 166 66 266 66   -  -
3796  72 172 272 372 172 72 272 72   -  -
3797  78 178 278 378 178 78 278 78   -  -
3798  84 184 284 384 184 84 284 84   -  -
3799  90 190 290 390 190 90 290 90 390 90
3800   -   -   -   -   -  -   -  - 300  0
3801}
3802do_execsql_test joinD-150 {
3803  SELECT t1.*, t2.*, t3.*, t4.*
3804  FROM t1 INNER JOIN t2 ON t2.x>0
3805  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3806  FULL JOIN t4 ON t4.z>0
3807  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
3808  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3809} {
3810  10 110 210 310 110 10   -  - 310 10
3811  20 120 220 320 120 20   -  - 320 20
3812  30 130 230 330 130 30 230 30 330 30
3813  40 140 240 340 140 40   -  - 340 40
3814  50 150 250 350 150 50   -  - 350 50
3815  60 160 260 360 160 60 260 60 360 60
3816  70 170 270 370 170 70   -  - 370 70
3817  80 180 280 380 180 80   -  - 380 80
3818  90 190 290 390 190 90 290 90 390 90
3819}
3820do_execsql_test joinD-151 {
3821  SELECT t1.*, t2.*, t3.*, t4.*
3822  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
3823  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3824  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3825  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3826} {
3827   2 102 202 302 102  2   -  -   -  -
3828   4 104 204 304 104  4   -  -   -  -
3829   6 106 206 306 106  6 206  6   -  -
3830   8 108 208 308 108  8   -  -   -  -
3831  10 110 210 310 110 10   -  - 310 10
3832  12 112 212 312 112 12 212 12   -  -
3833  14 114 214 314 114 14   -  -   -  -
3834  16 116 216 316 116 16   -  -   -  -
3835  18 118 218 318 118 18 218 18   -  -
3836  20 120 220 320 120 20   -  - 320 20
3837  22 122 222 322 122 22   -  -   -  -
3838  24 124 224 324 124 24 224 24   -  -
3839  26 126 226 326 126 26   -  -   -  -
3840  28 128 228 328 128 28   -  -   -  -
3841  30 130 230 330 130 30 230 30 330 30
3842  32 132 232 332 132 32   -  -   -  -
3843  34 134 234 334 134 34   -  -   -  -
3844  36 136 236 336 136 36 236 36   -  -
3845  38 138 238 338 138 38   -  -   -  -
3846  40 140 240 340 140 40   -  - 340 40
3847  42 142 242 342 142 42 242 42   -  -
3848  44 144 244 344 144 44   -  -   -  -
3849  46 146 246 346 146 46   -  -   -  -
3850  48 148 248 348 148 48 248 48   -  -
3851  50 150 250 350 150 50   -  - 350 50
3852  52 152 252 352 152 52   -  -   -  -
3853  54 154 254 354 154 54 254 54   -  -
3854  56 156 256 356 156 56   -  -   -  -
3855  58 158 258 358 158 58   -  -   -  -
3856  60 160 260 360 160 60 260 60 360 60
3857  62 162 262 362 162 62   -  -   -  -
3858  64 164 264 364 164 64   -  -   -  -
3859  66 166 266 366 166 66 266 66   -  -
3860  68 168 268 368 168 68   -  -   -  -
3861  70 170 270 370 170 70   -  - 370 70
3862  72 172 272 372 172 72 272 72   -  -
3863  74 174 274 374 174 74   -  -   -  -
3864  76 176 276 376 176 76   -  -   -  -
3865  78 178 278 378 178 78 278 78   -  -
3866  80 180 280 380 180 80   -  - 380 80
3867  82 182 282 382 182 82   -  -   -  -
3868  84 184 284 384 184 84 284 84   -  -
3869  86 186 286 386 186 86   -  -   -  -
3870  88 188 288 388 188 88   -  -   -  -
3871  90 190 290 390 190 90 290 90 390 90
3872  92 192 292 392 192 92   -  -   -  -
3873  94 194 294 394 194 94   -  -   -  -
3874   -   -   -   -   -  -   -  - 300  0
3875   -   -   -   -   -  -   -  - 305  5
3876   -   -   -   -   -  -   -  - 315 15
3877   -   -   -   -   -  -   -  - 325 25
3878   -   -   -   -   -  -   -  - 335 35
3879   -   -   -   -   -  -   -  - 345 45
3880   -   -   -   -   -  -   -  - 355 55
3881   -   -   -   -   -  -   -  - 365 65
3882   -   -   -   -   -  -   -  - 375 75
3883   -   -   -   -   -  -   -  - 385 85
3884   -   -   -   -   -  -   -  - 395 95
3885}
3886do_execsql_test joinD-152 {
3887  SELECT t1.*, t2.*, t3.*, t4.*
3888  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3889  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
3890  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3891  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3892} {
3893   2 102 202 302 102  2   -  -   -  -
3894   4 104 204 304 104  4   -  -   -  -
3895   6 106 206 306 106  6 206  6   -  -
3896   8 108 208 308 108  8   -  -   -  -
3897  10 110 210 310 110 10   -  - 310 10
3898  12 112 212 312 112 12 212 12   -  -
3899  14 114 214 314 114 14   -  -   -  -
3900  16 116 216 316 116 16   -  -   -  -
3901  18 118 218 318 118 18 218 18   -  -
3902  20 120 220 320 120 20   -  - 320 20
3903  22 122 222 322 122 22   -  -   -  -
3904  24 124 224 324 124 24 224 24   -  -
3905  26 126 226 326 126 26   -  -   -  -
3906  28 128 228 328 128 28   -  -   -  -
3907  30 130 230 330 130 30 230 30 330 30
3908  32 132 232 332 132 32   -  -   -  -
3909  34 134 234 334 134 34   -  -   -  -
3910  36 136 236 336 136 36 236 36   -  -
3911  38 138 238 338 138 38   -  -   -  -
3912  40 140 240 340 140 40   -  - 340 40
3913  42 142 242 342 142 42 242 42   -  -
3914  44 144 244 344 144 44   -  -   -  -
3915  46 146 246 346 146 46   -  -   -  -
3916  48 148 248 348 148 48 248 48   -  -
3917  50 150 250 350 150 50   -  - 350 50
3918  52 152 252 352 152 52   -  -   -  -
3919  54 154 254 354 154 54 254 54   -  -
3920  56 156 256 356 156 56   -  -   -  -
3921  58 158 258 358 158 58   -  -   -  -
3922  60 160 260 360 160 60 260 60 360 60
3923  62 162 262 362 162 62   -  -   -  -
3924  64 164 264 364 164 64   -  -   -  -
3925  66 166 266 366 166 66 266 66   -  -
3926  68 168 268 368 168 68   -  -   -  -
3927  70 170 270 370 170 70   -  - 370 70
3928  72 172 272 372 172 72 272 72   -  -
3929  74 174 274 374 174 74   -  -   -  -
3930  76 176 276 376 176 76   -  -   -  -
3931  78 178 278 378 178 78 278 78   -  -
3932  80 180 280 380 180 80   -  - 380 80
3933  82 182 282 382 182 82   -  -   -  -
3934  84 184 284 384 184 84 284 84   -  -
3935  86 186 286 386 186 86   -  -   -  -
3936  88 188 288 388 188 88   -  -   -  -
3937  90 190 290 390 190 90 290 90 390 90
3938  92 192 292 392 192 92   -  -   -  -
3939  94 194 294 394 194 94   -  -   -  -
3940   -   -   -   -   -  -   -  - 300  0
3941   -   -   -   -   -  -   -  - 305  5
3942   -   -   -   -   -  -   -  - 315 15
3943   -   -   -   -   -  -   -  - 325 25
3944   -   -   -   -   -  -   -  - 335 35
3945   -   -   -   -   -  -   -  - 345 45
3946   -   -   -   -   -  -   -  - 355 55
3947   -   -   -   -   -  -   -  - 365 65
3948   -   -   -   -   -  -   -  - 375 75
3949   -   -   -   -   -  -   -  - 385 85
3950   -   -   -   -   -  -   -  - 395 95
3951}
3952do_execsql_test joinD-153 {
3953  SELECT t1.*, t2.*, t3.*, t4.*
3954  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3955  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3956  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3957  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3958} {
3959  30 130 230 330 130 30 230 30 330 30
3960  60 160 260 360 160 60 260 60 360 60
3961  90 190 290 390 190 90 290 90 390 90
3962}
3963do_execsql_test joinD-154 {
3964  SELECT t1.*, t2.*, t3.*, t4.*
3965  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
3966  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3967  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3968  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3969} {
3970  30 130 230 330 130 30 230 30 330 30
3971  60 160 260 360 160 60 260 60 360 60
3972  90 190 290 390 190 90 290 90 390 90
3973}
3974do_execsql_test joinD-155 {
3975  SELECT t1.*, t2.*, t3.*, t4.*
3976  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3977  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3978  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3979  WHERE t2.x>0
3980  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3981} {
3982  30 130 230 330 130 30 230 30 330 30
3983  60 160 260 360 160 60 260 60 360 60
3984  90 190 290 390 190 90 290 90 390 90
3985}
3986do_execsql_test joinD-156 {
3987  SELECT t1.*, t2.*, t3.*, t4.*
3988  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3989  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3990  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3991  WHERE (t2.x>0 OR t2.x IS NULL)
3992  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3993} {
3994  30 130 230 330 130 30 230 30 330 30
3995  60 160 260 360 160 60 260 60 360 60
3996  90 190 290 390 190 90 290 90 390 90
3997}
3998do_execsql_test joinD-157 {
3999  SELECT t1.*, t2.*, t3.*, t4.*
4000  FROM t1 INNER JOIN t2 ON true
4001  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4002  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4003  WHERE t1.b=t2.b AND t2.x>0
4004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4005} {
4006  30 130 230 330 130 30 230 30 330 30
4007  60 160 260 360 160 60 260 60 360 60
4008  90 190 290 390 190 90 290 90 390 90
4009}
4010do_execsql_test joinD-158 {
4011  SELECT t1.*, t2.*, t3.*, t4.*
4012  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4013  RIGHT JOIN t3 ON t1.c=t3.c
4014  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4015  WHERE t3.y>0
4016  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4017} {
4018  30 130 230 330 130 30 230 30 330 30
4019  60 160 260 360 160 60 260 60 360 60
4020  90 190 290 390 190 90 290 90 390 90
4021}
4022do_execsql_test joinD-159 {
4023  SELECT t1.*, t2.*, t3.*, t4.*
4024  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4025  RIGHT JOIN t3 ON t1.c=t3.c
4026  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4027  WHERE t3.y>0 OR t3.y IS NULL
4028  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4029} {
4030  30 130 230 330 130 30 230 30 330 30
4031  60 160 260 360 160 60 260 60 360 60
4032  90 190 290 390 190 90 290 90 390 90
4033}
4034do_execsql_test joinD-160 {
4035  SELECT t1.*, t2.*, t3.*, t4.*
4036  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4037  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4038  INNER JOIN t4 ON t1.d=t4.d
4039  WHERE t4.z>0
4040  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4041} {
4042  30 130 230 330 130 30 230 30 330 30
4043  60 160 260 360 160 60 260 60 360 60
4044  90 190 290 390 190 90 290 90 390 90
4045}
4046do_execsql_test joinD-161 {
4047  SELECT t1.*, t2.*, t3.*, t4.*
4048  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4049  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4050  INNER JOIN t4 ON t1.d=t4.d
4051  WHERE t4.z IS NULL OR t4.z>0
4052  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4053} {
4054  30 130 230 330 130 30 230 30 330 30
4055  60 160 260 360 160 60 260 60 360 60
4056  90 190 290 390 190 90 290 90 390 90
4057}
4058do_execsql_test joinD-162 {
4059  SELECT t1.*, t2.*, t3.*, t4.*
4060  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4061  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4062  INNER JOIN t4 ON t1.d=t4.d
4063  WHERE t2.x>0 AND t4.z>0
4064  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4065} {
4066  30 130 230 330 130 30 230 30 330 30
4067  60 160 260 360 160 60 260 60 360 60
4068  90 190 290 390 190 90 290 90 390 90
4069}
4070do_execsql_test joinD-163 {
4071  SELECT t1.*, t2.*, t3.*, t4.*
4072  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4073  RIGHT JOIN t3 ON t1.c=t3.c
4074  INNER JOIN t4 ON t1.d=t4.d
4075  WHERE t4.z>0 AND t3.y>0
4076  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4077} {
4078  30 130 230 330 130 30 230 30 330 30
4079  60 160 260 360 160 60 260 60 360 60
4080  90 190 290 390 190 90 290 90 390 90
4081}
4082do_execsql_test joinD-164 {
4083  SELECT t1.*, t2.*, t3.*, t4.*
4084  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4085  RIGHT JOIN t3 ON t1.c=t3.c
4086  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4087  WHERE t2.x>0 AND t3.y>0
4088  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4089} {
4090  30 130 230 330 130 30 230 30 330 30
4091  60 160 260 360 160 60 260 60 360 60
4092  90 190 290 390 190 90 290 90 390 90
4093}
4094do_execsql_test joinD-165 {
4095  SELECT t1.*, t2.*, t3.*, t4.*
4096  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4097  RIGHT JOIN t3 ON t1.c=t3.c
4098  INNER JOIN t4 ON t1.d=t4.d
4099  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
4100  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4101} {
4102  30 130 230 330 130 30 230 30 330 30
4103  60 160 260 360 160 60 260 60 360 60
4104  90 190 290 390 190 90 290 90 390 90
4105}
4106do_execsql_test joinD-166 {
4107  SELECT t1.*, t2.*, t3.*, t4.*
4108  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4109  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4110  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4111  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4112} {
4113  30 130 230 330 130 30 230 30 330 30
4114  60 160 260 360 160 60 260 60 360 60
4115  90 190 290 390 190 90 290 90 390 90
4116}
4117do_execsql_test joinD-167 {
4118  SELECT t1.*, t2.*, t3.*, t4.*
4119  FROM t1 INNER JOIN t2 ON t2.x>0
4120  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4121  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4122  WHERE t1.b IS NOT DISTINCT FROM t2.b
4123  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4124} {
4125  30 130 230 330 130 30 230 30 330 30
4126  60 160 260 360 160 60 260 60 360 60
4127  90 190 290 390 190 90 290 90 390 90
4128}
4129do_execsql_test joinD-168 {
4130  SELECT t1.*, t2.*, t3.*, t4.*
4131  FROM t1 INNER JOIN t2 ON t2.x>0
4132  RIGHT JOIN t3 ON t3.y>0
4133  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4134  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
4135  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4136} {
4137  30 130 230 330 130 30 230 30 330 30
4138  60 160 260 360 160 60 260 60 360 60
4139  90 190 290 390 190 90 290 90 390 90
4140}
4141do_execsql_test joinD-169 {
4142  SELECT t1.*, t2.*, t3.*, t4.*
4143  FROM t1 INNER JOIN t2 ON t2.x>0
4144  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4145  INNER JOIN t4 ON t4.z>0
4146  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
4147  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4148} {
4149  30 130 230 330 130 30 230 30 330 30
4150  60 160 260 360 160 60 260 60 360 60
4151  90 190 290 390 190 90 290 90 390 90
4152}
4153do_execsql_test joinD-170 {
4154  SELECT t1.*, t2.*, t3.*, t4.*
4155  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
4156  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4157  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4158  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4159} {
4160  30 130 230 330 130 30 230 30 330 30
4161  60 160 260 360 160 60 260 60 360 60
4162  90 190 290 390 190 90 290 90 390 90
4163}
4164do_execsql_test joinD-171 {
4165  SELECT t1.*, t2.*, t3.*, t4.*
4166  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4167  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
4168  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4169  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4170} {
4171  30 130 230 330 130 30 230 30 330 30
4172  60 160 260 360 160 60 260 60 360 60
4173  90 190 290 390 190 90 290 90 390 90
4174}
4175do_execsql_test joinD-172 {
4176  SELECT t1.*, t2.*, t3.*, t4.*
4177  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4178  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4179  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4180  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4181} {
4182   6 106 206 306 106  6 206  6   -  -
4183  12 112 212 312 112 12 212 12   -  -
4184  18 118 218 318 118 18 218 18   -  -
4185  24 124 224 324 124 24 224 24   -  -
4186  30 130 230 330 130 30 230 30 330 30
4187  36 136 236 336 136 36 236 36   -  -
4188  42 142 242 342 142 42 242 42   -  -
4189  48 148 248 348 148 48 248 48   -  -
4190  54 154 254 354 154 54 254 54   -  -
4191  60 160 260 360 160 60 260 60 360 60
4192  66 166 266 366 166 66 266 66   -  -
4193  72 172 272 372 172 72 272 72   -  -
4194  78 178 278 378 178 78 278 78   -  -
4195  84 184 284 384 184 84 284 84   -  -
4196  90 190 290 390 190 90 290 90 390 90
4197   -   -   -   -   -  - 200  0   -  -
4198   -   -   -   -   -  - 203  3   -  -
4199   -   -   -   -   -  - 209  9   -  -
4200   -   -   -   -   -  - 215 15   -  -
4201   -   -   -   -   -  - 221 21   -  -
4202   -   -   -   -   -  - 227 27   -  -
4203   -   -   -   -   -  - 233 33   -  -
4204   -   -   -   -   -  - 239 39   -  -
4205   -   -   -   -   -  - 245 45   -  -
4206   -   -   -   -   -  - 251 51   -  -
4207   -   -   -   -   -  - 257 57   -  -
4208   -   -   -   -   -  - 263 63   -  -
4209   -   -   -   -   -  - 269 69   -  -
4210   -   -   -   -   -  - 275 75   -  -
4211   -   -   -   -   -  - 281 81   -  -
4212   -   -   -   -   -  - 287 87   -  -
4213   -   -   -   -   -  - 293 93   -  -
4214}
4215do_execsql_test joinD-173 {
4216  SELECT t1.*, t2.*, t3.*, t4.*
4217  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4218  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4219  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4220  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4221} {
4222   6 106 206 306 106  6 206  6   -  -
4223  12 112 212 312 112 12 212 12   -  -
4224  18 118 218 318 118 18 218 18   -  -
4225  24 124 224 324 124 24 224 24   -  -
4226  30 130 230 330 130 30 230 30 330 30
4227  36 136 236 336 136 36 236 36   -  -
4228  42 142 242 342 142 42 242 42   -  -
4229  48 148 248 348 148 48 248 48   -  -
4230  54 154 254 354 154 54 254 54   -  -
4231  60 160 260 360 160 60 260 60 360 60
4232  66 166 266 366 166 66 266 66   -  -
4233  72 172 272 372 172 72 272 72   -  -
4234  78 178 278 378 178 78 278 78   -  -
4235  84 184 284 384 184 84 284 84   -  -
4236  90 190 290 390 190 90 290 90 390 90
4237   -   -   -   -   -  - 200  0   -  -
4238   -   -   -   -   -  - 203  3   -  -
4239   -   -   -   -   -  - 209  9   -  -
4240   -   -   -   -   -  - 215 15   -  -
4241   -   -   -   -   -  - 221 21   -  -
4242   -   -   -   -   -  - 227 27   -  -
4243   -   -   -   -   -  - 233 33   -  -
4244   -   -   -   -   -  - 239 39   -  -
4245   -   -   -   -   -  - 245 45   -  -
4246   -   -   -   -   -  - 251 51   -  -
4247   -   -   -   -   -  - 257 57   -  -
4248   -   -   -   -   -  - 263 63   -  -
4249   -   -   -   -   -  - 269 69   -  -
4250   -   -   -   -   -  - 275 75   -  -
4251   -   -   -   -   -  - 281 81   -  -
4252   -   -   -   -   -  - 287 87   -  -
4253   -   -   -   -   -  - 293 93   -  -
4254}
4255do_execsql_test joinD-174 {
4256  SELECT t1.*, t2.*, t3.*, t4.*
4257  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4258  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4259  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4260  WHERE t2.x>0
4261  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4262} {
4263   6 106 206 306 106  6 206  6   -  -
4264  12 112 212 312 112 12 212 12   -  -
4265  18 118 218 318 118 18 218 18   -  -
4266  24 124 224 324 124 24 224 24   -  -
4267  30 130 230 330 130 30 230 30 330 30
4268  36 136 236 336 136 36 236 36   -  -
4269  42 142 242 342 142 42 242 42   -  -
4270  48 148 248 348 148 48 248 48   -  -
4271  54 154 254 354 154 54 254 54   -  -
4272  60 160 260 360 160 60 260 60 360 60
4273  66 166 266 366 166 66 266 66   -  -
4274  72 172 272 372 172 72 272 72   -  -
4275  78 178 278 378 178 78 278 78   -  -
4276  84 184 284 384 184 84 284 84   -  -
4277  90 190 290 390 190 90 290 90 390 90
4278}
4279do_execsql_test joinD-175 {
4280  SELECT t1.*, t2.*, t3.*, t4.*
4281  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4282  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4283  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4284  WHERE (t2.x>0 OR t2.x IS NULL)
4285  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4286} {
4287   6 106 206 306 106  6 206  6   -  -
4288  12 112 212 312 112 12 212 12   -  -
4289  18 118 218 318 118 18 218 18   -  -
4290  24 124 224 324 124 24 224 24   -  -
4291  30 130 230 330 130 30 230 30 330 30
4292  36 136 236 336 136 36 236 36   -  -
4293  42 142 242 342 142 42 242 42   -  -
4294  48 148 248 348 148 48 248 48   -  -
4295  54 154 254 354 154 54 254 54   -  -
4296  60 160 260 360 160 60 260 60 360 60
4297  66 166 266 366 166 66 266 66   -  -
4298  72 172 272 372 172 72 272 72   -  -
4299  78 178 278 378 178 78 278 78   -  -
4300  84 184 284 384 184 84 284 84   -  -
4301  90 190 290 390 190 90 290 90 390 90
4302   -   -   -   -   -  - 200  0   -  -
4303   -   -   -   -   -  - 203  3   -  -
4304   -   -   -   -   -  - 209  9   -  -
4305   -   -   -   -   -  - 215 15   -  -
4306   -   -   -   -   -  - 221 21   -  -
4307   -   -   -   -   -  - 227 27   -  -
4308   -   -   -   -   -  - 233 33   -  -
4309   -   -   -   -   -  - 239 39   -  -
4310   -   -   -   -   -  - 245 45   -  -
4311   -   -   -   -   -  - 251 51   -  -
4312   -   -   -   -   -  - 257 57   -  -
4313   -   -   -   -   -  - 263 63   -  -
4314   -   -   -   -   -  - 269 69   -  -
4315   -   -   -   -   -  - 275 75   -  -
4316   -   -   -   -   -  - 281 81   -  -
4317   -   -   -   -   -  - 287 87   -  -
4318   -   -   -   -   -  - 293 93   -  -
4319}
4320do_execsql_test joinD-176 {
4321  SELECT t1.*, t2.*, t3.*, t4.*
4322  FROM t1 INNER JOIN t2 ON true
4323  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4324  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4325  WHERE t1.b=t2.b AND t2.x>0
4326  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4327} {
4328   6 106 206 306 106  6 206  6   -  -
4329  12 112 212 312 112 12 212 12   -  -
4330  18 118 218 318 118 18 218 18   -  -
4331  24 124 224 324 124 24 224 24   -  -
4332  30 130 230 330 130 30 230 30 330 30
4333  36 136 236 336 136 36 236 36   -  -
4334  42 142 242 342 142 42 242 42   -  -
4335  48 148 248 348 148 48 248 48   -  -
4336  54 154 254 354 154 54 254 54   -  -
4337  60 160 260 360 160 60 260 60 360 60
4338  66 166 266 366 166 66 266 66   -  -
4339  72 172 272 372 172 72 272 72   -  -
4340  78 178 278 378 178 78 278 78   -  -
4341  84 184 284 384 184 84 284 84   -  -
4342  90 190 290 390 190 90 290 90 390 90
4343}
4344do_execsql_test joinD-177 {
4345  SELECT t1.*, t2.*, t3.*, t4.*
4346  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4347  RIGHT JOIN t3 ON t1.c=t3.c
4348  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4349  WHERE t3.y>0
4350  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4351} {
4352   6 106 206 306 106  6 206  6   -  -
4353  12 112 212 312 112 12 212 12   -  -
4354  18 118 218 318 118 18 218 18   -  -
4355  24 124 224 324 124 24 224 24   -  -
4356  30 130 230 330 130 30 230 30 330 30
4357  36 136 236 336 136 36 236 36   -  -
4358  42 142 242 342 142 42 242 42   -  -
4359  48 148 248 348 148 48 248 48   -  -
4360  54 154 254 354 154 54 254 54   -  -
4361  60 160 260 360 160 60 260 60 360 60
4362  66 166 266 366 166 66 266 66   -  -
4363  72 172 272 372 172 72 272 72   -  -
4364  78 178 278 378 178 78 278 78   -  -
4365  84 184 284 384 184 84 284 84   -  -
4366  90 190 290 390 190 90 290 90 390 90
4367   -   -   -   -   -  - 203  3   -  -
4368   -   -   -   -   -  - 209  9   -  -
4369   -   -   -   -   -  - 215 15   -  -
4370   -   -   -   -   -  - 221 21   -  -
4371   -   -   -   -   -  - 227 27   -  -
4372   -   -   -   -   -  - 233 33   -  -
4373   -   -   -   -   -  - 239 39   -  -
4374   -   -   -   -   -  - 245 45   -  -
4375   -   -   -   -   -  - 251 51   -  -
4376   -   -   -   -   -  - 257 57   -  -
4377   -   -   -   -   -  - 263 63   -  -
4378   -   -   -   -   -  - 269 69   -  -
4379   -   -   -   -   -  - 275 75   -  -
4380   -   -   -   -   -  - 281 81   -  -
4381   -   -   -   -   -  - 287 87   -  -
4382   -   -   -   -   -  - 293 93   -  -
4383}
4384do_execsql_test joinD-178 {
4385  SELECT t1.*, t2.*, t3.*, t4.*
4386  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4387  RIGHT JOIN t3 ON t1.c=t3.c
4388  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4389  WHERE t3.y>0 OR t3.y IS NULL
4390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4391} {
4392   6 106 206 306 106  6 206  6   -  -
4393  12 112 212 312 112 12 212 12   -  -
4394  18 118 218 318 118 18 218 18   -  -
4395  24 124 224 324 124 24 224 24   -  -
4396  30 130 230 330 130 30 230 30 330 30
4397  36 136 236 336 136 36 236 36   -  -
4398  42 142 242 342 142 42 242 42   -  -
4399  48 148 248 348 148 48 248 48   -  -
4400  54 154 254 354 154 54 254 54   -  -
4401  60 160 260 360 160 60 260 60 360 60
4402  66 166 266 366 166 66 266 66   -  -
4403  72 172 272 372 172 72 272 72   -  -
4404  78 178 278 378 178 78 278 78   -  -
4405  84 184 284 384 184 84 284 84   -  -
4406  90 190 290 390 190 90 290 90 390 90
4407   -   -   -   -   -  - 203  3   -  -
4408   -   -   -   -   -  - 209  9   -  -
4409   -   -   -   -   -  - 215 15   -  -
4410   -   -   -   -   -  - 221 21   -  -
4411   -   -   -   -   -  - 227 27   -  -
4412   -   -   -   -   -  - 233 33   -  -
4413   -   -   -   -   -  - 239 39   -  -
4414   -   -   -   -   -  - 245 45   -  -
4415   -   -   -   -   -  - 251 51   -  -
4416   -   -   -   -   -  - 257 57   -  -
4417   -   -   -   -   -  - 263 63   -  -
4418   -   -   -   -   -  - 269 69   -  -
4419   -   -   -   -   -  - 275 75   -  -
4420   -   -   -   -   -  - 281 81   -  -
4421   -   -   -   -   -  - 287 87   -  -
4422   -   -   -   -   -  - 293 93   -  -
4423}
4424do_execsql_test joinD-179 {
4425  SELECT t1.*, t2.*, t3.*, t4.*
4426  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4427  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4428  LEFT JOIN t4 ON t1.d=t4.d
4429  WHERE t4.z>0
4430  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4431} {
4432  30 130 230 330 130 30 230 30 330 30
4433  60 160 260 360 160 60 260 60 360 60
4434  90 190 290 390 190 90 290 90 390 90
4435}
4436do_execsql_test joinD-180 {
4437  SELECT t1.*, t2.*, t3.*, t4.*
4438  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4439  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4440  LEFT JOIN t4 ON t1.d=t4.d
4441  WHERE t4.z IS NULL OR t4.z>0
4442  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4443} {
4444   6 106 206 306 106  6 206  6   -  -
4445  12 112 212 312 112 12 212 12   -  -
4446  18 118 218 318 118 18 218 18   -  -
4447  24 124 224 324 124 24 224 24   -  -
4448  30 130 230 330 130 30 230 30 330 30
4449  36 136 236 336 136 36 236 36   -  -
4450  42 142 242 342 142 42 242 42   -  -
4451  48 148 248 348 148 48 248 48   -  -
4452  54 154 254 354 154 54 254 54   -  -
4453  60 160 260 360 160 60 260 60 360 60
4454  66 166 266 366 166 66 266 66   -  -
4455  72 172 272 372 172 72 272 72   -  -
4456  78 178 278 378 178 78 278 78   -  -
4457  84 184 284 384 184 84 284 84   -  -
4458  90 190 290 390 190 90 290 90 390 90
4459   -   -   -   -   -  - 200  0   -  -
4460   -   -   -   -   -  - 203  3   -  -
4461   -   -   -   -   -  - 209  9   -  -
4462   -   -   -   -   -  - 215 15   -  -
4463   -   -   -   -   -  - 221 21   -  -
4464   -   -   -   -   -  - 227 27   -  -
4465   -   -   -   -   -  - 233 33   -  -
4466   -   -   -   -   -  - 239 39   -  -
4467   -   -   -   -   -  - 245 45   -  -
4468   -   -   -   -   -  - 251 51   -  -
4469   -   -   -   -   -  - 257 57   -  -
4470   -   -   -   -   -  - 263 63   -  -
4471   -   -   -   -   -  - 269 69   -  -
4472   -   -   -   -   -  - 275 75   -  -
4473   -   -   -   -   -  - 281 81   -  -
4474   -   -   -   -   -  - 287 87   -  -
4475   -   -   -   -   -  - 293 93   -  -
4476}
4477do_execsql_test joinD-181 {
4478  SELECT t1.*, t2.*, t3.*, t4.*
4479  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4480  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4481  LEFT JOIN t4 ON t1.d=t4.d
4482  WHERE t2.x>0 AND t4.z>0
4483  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4484} {
4485  30 130 230 330 130 30 230 30 330 30
4486  60 160 260 360 160 60 260 60 360 60
4487  90 190 290 390 190 90 290 90 390 90
4488}
4489do_execsql_test joinD-182 {
4490  SELECT t1.*, t2.*, t3.*, t4.*
4491  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4492  RIGHT JOIN t3 ON t1.c=t3.c
4493  LEFT JOIN t4 ON t1.d=t4.d
4494  WHERE t4.z>0 AND t3.y>0
4495  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4496} {
4497  30 130 230 330 130 30 230 30 330 30
4498  60 160 260 360 160 60 260 60 360 60
4499  90 190 290 390 190 90 290 90 390 90
4500}
4501do_execsql_test joinD-183 {
4502  SELECT t1.*, t2.*, t3.*, t4.*
4503  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4504  RIGHT JOIN t3 ON t1.c=t3.c
4505  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4506  WHERE t2.x>0 AND t3.y>0
4507  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4508} {
4509   6 106 206 306 106  6 206  6   -  -
4510  12 112 212 312 112 12 212 12   -  -
4511  18 118 218 318 118 18 218 18   -  -
4512  24 124 224 324 124 24 224 24   -  -
4513  30 130 230 330 130 30 230 30 330 30
4514  36 136 236 336 136 36 236 36   -  -
4515  42 142 242 342 142 42 242 42   -  -
4516  48 148 248 348 148 48 248 48   -  -
4517  54 154 254 354 154 54 254 54   -  -
4518  60 160 260 360 160 60 260 60 360 60
4519  66 166 266 366 166 66 266 66   -  -
4520  72 172 272 372 172 72 272 72   -  -
4521  78 178 278 378 178 78 278 78   -  -
4522  84 184 284 384 184 84 284 84   -  -
4523  90 190 290 390 190 90 290 90 390 90
4524}
4525do_execsql_test joinD-184 {
4526  SELECT t1.*, t2.*, t3.*, t4.*
4527  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4528  RIGHT JOIN t3 ON t1.c=t3.c
4529  LEFT JOIN t4 ON t1.d=t4.d
4530  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
4531  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4532} {
4533  30 130 230 330 130 30 230 30 330 30
4534  60 160 260 360 160 60 260 60 360 60
4535  90 190 290 390 190 90 290 90 390 90
4536}
4537do_execsql_test joinD-185 {
4538  SELECT t1.*, t2.*, t3.*, t4.*
4539  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4540  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4541  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4542  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4543} {
4544   6 106 206 306 106  6 206  6   -  -
4545  12 112 212 312 112 12 212 12   -  -
4546  18 118 218 318 118 18 218 18   -  -
4547  24 124 224 324 124 24 224 24   -  -
4548  30 130 230 330 130 30 230 30 330 30
4549  36 136 236 336 136 36 236 36   -  -
4550  42 142 242 342 142 42 242 42   -  -
4551  48 148 248 348 148 48 248 48   -  -
4552  54 154 254 354 154 54 254 54   -  -
4553  60 160 260 360 160 60 260 60 360 60
4554  66 166 266 366 166 66 266 66   -  -
4555  72 172 272 372 172 72 272 72   -  -
4556  78 178 278 378 178 78 278 78   -  -
4557  84 184 284 384 184 84 284 84   -  -
4558  90 190 290 390 190 90 290 90 390 90
4559   -   -   -   -   -  - 200  0   -  -
4560   -   -   -   -   -  - 203  3   -  -
4561   -   -   -   -   -  - 209  9   -  -
4562   -   -   -   -   -  - 215 15   -  -
4563   -   -   -   -   -  - 221 21   -  -
4564   -   -   -   -   -  - 227 27   -  -
4565   -   -   -   -   -  - 233 33   -  -
4566   -   -   -   -   -  - 239 39   -  -
4567   -   -   -   -   -  - 245 45   -  -
4568   -   -   -   -   -  - 251 51   -  -
4569   -   -   -   -   -  - 257 57   -  -
4570   -   -   -   -   -  - 263 63   -  -
4571   -   -   -   -   -  - 269 69   -  -
4572   -   -   -   -   -  - 275 75   -  -
4573   -   -   -   -   -  - 281 81   -  -
4574   -   -   -   -   -  - 287 87   -  -
4575   -   -   -   -   -  - 293 93   -  -
4576}
4577do_execsql_test joinD-186 {
4578  SELECT t1.*, t2.*, t3.*, t4.*
4579  FROM t1 INNER JOIN t2 ON t2.x>0
4580  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4581  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4582  WHERE t1.b IS NOT DISTINCT FROM t2.b
4583  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4584} {
4585   6 106 206 306 106  6 206  6   -  -
4586  12 112 212 312 112 12 212 12   -  -
4587  18 118 218 318 118 18 218 18   -  -
4588  24 124 224 324 124 24 224 24   -  -
4589  30 130 230 330 130 30 230 30 330 30
4590  36 136 236 336 136 36 236 36   -  -
4591  42 142 242 342 142 42 242 42   -  -
4592  48 148 248 348 148 48 248 48   -  -
4593  54 154 254 354 154 54 254 54   -  -
4594  60 160 260 360 160 60 260 60 360 60
4595  66 166 266 366 166 66 266 66   -  -
4596  72 172 272 372 172 72 272 72   -  -
4597  78 178 278 378 178 78 278 78   -  -
4598  84 184 284 384 184 84 284 84   -  -
4599  90 190 290 390 190 90 290 90 390 90
4600   -   -   -   -   -  - 200  0   -  -
4601}
4602do_execsql_test joinD-187 {
4603  SELECT t1.*, t2.*, t3.*, t4.*
4604  FROM t1 INNER JOIN t2 ON t2.x>0
4605  RIGHT JOIN t3 ON t3.y>0
4606  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4607  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
4608  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4609} {
4610   6 106 206 306 106  6 206  6   -  -
4611  12 112 212 312 112 12 212 12   -  -
4612  18 118 218 318 118 18 218 18   -  -
4613  24 124 224 324 124 24 224 24   -  -
4614  30 130 230 330 130 30 230 30 330 30
4615  36 136 236 336 136 36 236 36   -  -
4616  42 142 242 342 142 42 242 42   -  -
4617  48 148 248 348 148 48 248 48   -  -
4618  54 154 254 354 154 54 254 54   -  -
4619  60 160 260 360 160 60 260 60 360 60
4620  66 166 266 366 166 66 266 66   -  -
4621  72 172 272 372 172 72 272 72   -  -
4622  78 178 278 378 178 78 278 78   -  -
4623  84 184 284 384 184 84 284 84   -  -
4624  90 190 290 390 190 90 290 90 390 90
4625}
4626do_execsql_test joinD-188 {
4627  SELECT t1.*, t2.*, t3.*, t4.*
4628  FROM t1 INNER JOIN t2 ON t2.x>0
4629  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4630  LEFT JOIN t4 ON t4.z>0
4631  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
4632  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4633} {
4634  30 130 230 330 130 30 230 30 330 30
4635  60 160 260 360 160 60 260 60 360 60
4636  90 190 290 390 190 90 290 90 390 90
4637}
4638do_execsql_test joinD-189 {
4639  SELECT t1.*, t2.*, t3.*, t4.*
4640  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
4641  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4642  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4643  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4644} {
4645   6 106 206 306 106  6 206  6   -  -
4646  12 112 212 312 112 12 212 12   -  -
4647  18 118 218 318 118 18 218 18   -  -
4648  24 124 224 324 124 24 224 24   -  -
4649  30 130 230 330 130 30 230 30 330 30
4650  36 136 236 336 136 36 236 36   -  -
4651  42 142 242 342 142 42 242 42   -  -
4652  48 148 248 348 148 48 248 48   -  -
4653  54 154 254 354 154 54 254 54   -  -
4654  60 160 260 360 160 60 260 60 360 60
4655  66 166 266 366 166 66 266 66   -  -
4656  72 172 272 372 172 72 272 72   -  -
4657  78 178 278 378 178 78 278 78   -  -
4658  84 184 284 384 184 84 284 84   -  -
4659  90 190 290 390 190 90 290 90 390 90
4660   -   -   -   -   -  - 200  0   -  -
4661   -   -   -   -   -  - 203  3   -  -
4662   -   -   -   -   -  - 209  9   -  -
4663   -   -   -   -   -  - 215 15   -  -
4664   -   -   -   -   -  - 221 21   -  -
4665   -   -   -   -   -  - 227 27   -  -
4666   -   -   -   -   -  - 233 33   -  -
4667   -   -   -   -   -  - 239 39   -  -
4668   -   -   -   -   -  - 245 45   -  -
4669   -   -   -   -   -  - 251 51   -  -
4670   -   -   -   -   -  - 257 57   -  -
4671   -   -   -   -   -  - 263 63   -  -
4672   -   -   -   -   -  - 269 69   -  -
4673   -   -   -   -   -  - 275 75   -  -
4674   -   -   -   -   -  - 281 81   -  -
4675   -   -   -   -   -  - 287 87   -  -
4676   -   -   -   -   -  - 293 93   -  -
4677}
4678do_execsql_test joinD-190 {
4679  SELECT t1.*, t2.*, t3.*, t4.*
4680  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4681  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
4682  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4683  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4684} {
4685   6 106 206 306 106  6 206  6   -  -
4686  12 112 212 312 112 12 212 12   -  -
4687  18 118 218 318 118 18 218 18   -  -
4688  24 124 224 324 124 24 224 24   -  -
4689  30 130 230 330 130 30 230 30 330 30
4690  36 136 236 336 136 36 236 36   -  -
4691  42 142 242 342 142 42 242 42   -  -
4692  48 148 248 348 148 48 248 48   -  -
4693  54 154 254 354 154 54 254 54   -  -
4694  60 160 260 360 160 60 260 60 360 60
4695  66 166 266 366 166 66 266 66   -  -
4696  72 172 272 372 172 72 272 72   -  -
4697  78 178 278 378 178 78 278 78   -  -
4698  84 184 284 384 184 84 284 84   -  -
4699  90 190 290 390 190 90 290 90 390 90
4700   -   -   -   -   -  - 200  0   -  -
4701   -   -   -   -   -  - 203  3   -  -
4702   -   -   -   -   -  - 209  9   -  -
4703   -   -   -   -   -  - 215 15   -  -
4704   -   -   -   -   -  - 221 21   -  -
4705   -   -   -   -   -  - 227 27   -  -
4706   -   -   -   -   -  - 233 33   -  -
4707   -   -   -   -   -  - 239 39   -  -
4708   -   -   -   -   -  - 245 45   -  -
4709   -   -   -   -   -  - 251 51   -  -
4710   -   -   -   -   -  - 257 57   -  -
4711   -   -   -   -   -  - 263 63   -  -
4712   -   -   -   -   -  - 269 69   -  -
4713   -   -   -   -   -  - 275 75   -  -
4714   -   -   -   -   -  - 281 81   -  -
4715   -   -   -   -   -  - 287 87   -  -
4716   -   -   -   -   -  - 293 93   -  -
4717}
4718do_execsql_test joinD-191 {
4719  SELECT t1.*, t2.*, t3.*, t4.*
4720  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4721  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4722  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4723  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4724} {
4725  30 130 230 330 130 30 230 30 330 30
4726  60 160 260 360 160 60 260 60 360 60
4727  90 190 290 390 190 90 290 90 390 90
4728   -   -   -   -   -  -   -  - 300  0
4729   -   -   -   -   -  -   -  - 305  5
4730   -   -   -   -   -  -   -  - 310 10
4731   -   -   -   -   -  -   -  - 315 15
4732   -   -   -   -   -  -   -  - 320 20
4733   -   -   -   -   -  -   -  - 325 25
4734   -   -   -   -   -  -   -  - 335 35
4735   -   -   -   -   -  -   -  - 340 40
4736   -   -   -   -   -  -   -  - 345 45
4737   -   -   -   -   -  -   -  - 350 50
4738   -   -   -   -   -  -   -  - 355 55
4739   -   -   -   -   -  -   -  - 365 65
4740   -   -   -   -   -  -   -  - 370 70
4741   -   -   -   -   -  -   -  - 375 75
4742   -   -   -   -   -  -   -  - 380 80
4743   -   -   -   -   -  -   -  - 385 85
4744   -   -   -   -   -  -   -  - 395 95
4745}
4746do_execsql_test joinD-192 {
4747  SELECT t1.*, t2.*, t3.*, t4.*
4748  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4749  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4750  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4751  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4752} {
4753  30 130 230 330 130 30 230 30 330 30
4754  60 160 260 360 160 60 260 60 360 60
4755  90 190 290 390 190 90 290 90 390 90
4756   -   -   -   -   -  -   -  - 300  0
4757   -   -   -   -   -  -   -  - 305  5
4758   -   -   -   -   -  -   -  - 310 10
4759   -   -   -   -   -  -   -  - 315 15
4760   -   -   -   -   -  -   -  - 320 20
4761   -   -   -   -   -  -   -  - 325 25
4762   -   -   -   -   -  -   -  - 335 35
4763   -   -   -   -   -  -   -  - 340 40
4764   -   -   -   -   -  -   -  - 345 45
4765   -   -   -   -   -  -   -  - 350 50
4766   -   -   -   -   -  -   -  - 355 55
4767   -   -   -   -   -  -   -  - 365 65
4768   -   -   -   -   -  -   -  - 370 70
4769   -   -   -   -   -  -   -  - 375 75
4770   -   -   -   -   -  -   -  - 380 80
4771   -   -   -   -   -  -   -  - 385 85
4772   -   -   -   -   -  -   -  - 395 95
4773}
4774do_execsql_test joinD-193 {
4775  SELECT t1.*, t2.*, t3.*, t4.*
4776  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4777  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4778  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4779  WHERE t2.x>0
4780  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4781} {
4782  30 130 230 330 130 30 230 30 330 30
4783  60 160 260 360 160 60 260 60 360 60
4784  90 190 290 390 190 90 290 90 390 90
4785}
4786do_execsql_test joinD-194 {
4787  SELECT t1.*, t2.*, t3.*, t4.*
4788  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4789  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4790  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4791  WHERE (t2.x>0 OR t2.x IS NULL)
4792  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4793} {
4794  30 130 230 330 130 30 230 30 330 30
4795  60 160 260 360 160 60 260 60 360 60
4796  90 190 290 390 190 90 290 90 390 90
4797   -   -   -   -   -  -   -  - 300  0
4798   -   -   -   -   -  -   -  - 305  5
4799   -   -   -   -   -  -   -  - 310 10
4800   -   -   -   -   -  -   -  - 315 15
4801   -   -   -   -   -  -   -  - 320 20
4802   -   -   -   -   -  -   -  - 325 25
4803   -   -   -   -   -  -   -  - 335 35
4804   -   -   -   -   -  -   -  - 340 40
4805   -   -   -   -   -  -   -  - 345 45
4806   -   -   -   -   -  -   -  - 350 50
4807   -   -   -   -   -  -   -  - 355 55
4808   -   -   -   -   -  -   -  - 365 65
4809   -   -   -   -   -  -   -  - 370 70
4810   -   -   -   -   -  -   -  - 375 75
4811   -   -   -   -   -  -   -  - 380 80
4812   -   -   -   -   -  -   -  - 385 85
4813   -   -   -   -   -  -   -  - 395 95
4814}
4815do_execsql_test joinD-195 {
4816  SELECT t1.*, t2.*, t3.*, t4.*
4817  FROM t1 INNER JOIN t2 ON true
4818  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4819  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4820  WHERE t1.b=t2.b AND t2.x>0
4821  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4822} {
4823  30 130 230 330 130 30 230 30 330 30
4824  60 160 260 360 160 60 260 60 360 60
4825  90 190 290 390 190 90 290 90 390 90
4826}
4827do_execsql_test joinD-196 {
4828  SELECT t1.*, t2.*, t3.*, t4.*
4829  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4830  RIGHT JOIN t3 ON t1.c=t3.c
4831  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4832  WHERE t3.y>0
4833  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4834} {
4835  30 130 230 330 130 30 230 30 330 30
4836  60 160 260 360 160 60 260 60 360 60
4837  90 190 290 390 190 90 290 90 390 90
4838}
4839do_execsql_test joinD-197 {
4840  SELECT t1.*, t2.*, t3.*, t4.*
4841  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4842  RIGHT JOIN t3 ON t1.c=t3.c
4843  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4844  WHERE t3.y>0 OR t3.y IS NULL
4845  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4846} {
4847  30 130 230 330 130 30 230 30 330 30
4848  60 160 260 360 160 60 260 60 360 60
4849  90 190 290 390 190 90 290 90 390 90
4850   -   -   -   -   -  -   -  - 300  0
4851   -   -   -   -   -  -   -  - 305  5
4852   -   -   -   -   -  -   -  - 310 10
4853   -   -   -   -   -  -   -  - 315 15
4854   -   -   -   -   -  -   -  - 320 20
4855   -   -   -   -   -  -   -  - 325 25
4856   -   -   -   -   -  -   -  - 335 35
4857   -   -   -   -   -  -   -  - 340 40
4858   -   -   -   -   -  -   -  - 345 45
4859   -   -   -   -   -  -   -  - 350 50
4860   -   -   -   -   -  -   -  - 355 55
4861   -   -   -   -   -  -   -  - 365 65
4862   -   -   -   -   -  -   -  - 370 70
4863   -   -   -   -   -  -   -  - 375 75
4864   -   -   -   -   -  -   -  - 380 80
4865   -   -   -   -   -  -   -  - 385 85
4866   -   -   -   -   -  -   -  - 395 95
4867}
4868do_execsql_test joinD-198 {
4869  SELECT t1.*, t2.*, t3.*, t4.*
4870  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4871  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4872  RIGHT JOIN t4 ON t1.d=t4.d
4873  WHERE t4.z>0
4874  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4875} {
4876  30 130 230 330 130 30 230 30 330 30
4877  60 160 260 360 160 60 260 60 360 60
4878  90 190 290 390 190 90 290 90 390 90
4879   -   -   -   -   -  -   -  - 305  5
4880   -   -   -   -   -  -   -  - 310 10
4881   -   -   -   -   -  -   -  - 315 15
4882   -   -   -   -   -  -   -  - 320 20
4883   -   -   -   -   -  -   -  - 325 25
4884   -   -   -   -   -  -   -  - 335 35
4885   -   -   -   -   -  -   -  - 340 40
4886   -   -   -   -   -  -   -  - 345 45
4887   -   -   -   -   -  -   -  - 350 50
4888   -   -   -   -   -  -   -  - 355 55
4889   -   -   -   -   -  -   -  - 365 65
4890   -   -   -   -   -  -   -  - 370 70
4891   -   -   -   -   -  -   -  - 375 75
4892   -   -   -   -   -  -   -  - 380 80
4893   -   -   -   -   -  -   -  - 385 85
4894   -   -   -   -   -  -   -  - 395 95
4895}
4896do_execsql_test joinD-199 {
4897  SELECT t1.*, t2.*, t3.*, t4.*
4898  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4899  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4900  RIGHT JOIN t4 ON t1.d=t4.d
4901  WHERE t4.z IS NULL OR t4.z>0
4902  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4903} {
4904  30 130 230 330 130 30 230 30 330 30
4905  60 160 260 360 160 60 260 60 360 60
4906  90 190 290 390 190 90 290 90 390 90
4907   -   -   -   -   -  -   -  - 305  5
4908   -   -   -   -   -  -   -  - 310 10
4909   -   -   -   -   -  -   -  - 315 15
4910   -   -   -   -   -  -   -  - 320 20
4911   -   -   -   -   -  -   -  - 325 25
4912   -   -   -   -   -  -   -  - 335 35
4913   -   -   -   -   -  -   -  - 340 40
4914   -   -   -   -   -  -   -  - 345 45
4915   -   -   -   -   -  -   -  - 350 50
4916   -   -   -   -   -  -   -  - 355 55
4917   -   -   -   -   -  -   -  - 365 65
4918   -   -   -   -   -  -   -  - 370 70
4919   -   -   -   -   -  -   -  - 375 75
4920   -   -   -   -   -  -   -  - 380 80
4921   -   -   -   -   -  -   -  - 385 85
4922   -   -   -   -   -  -   -  - 395 95
4923}
4924do_execsql_test joinD-200 {
4925  SELECT t1.*, t2.*, t3.*, t4.*
4926  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4927  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4928  RIGHT JOIN t4 ON t1.d=t4.d
4929  WHERE t2.x>0 AND t4.z>0
4930  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4931} {
4932  30 130 230 330 130 30 230 30 330 30
4933  60 160 260 360 160 60 260 60 360 60
4934  90 190 290 390 190 90 290 90 390 90
4935}
4936do_execsql_test joinD-201 {
4937  SELECT t1.*, t2.*, t3.*, t4.*
4938  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4939  RIGHT JOIN t3 ON t1.c=t3.c
4940  RIGHT JOIN t4 ON t1.d=t4.d
4941  WHERE t4.z>0 AND t3.y>0
4942  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4943} {
4944  30 130 230 330 130 30 230 30 330 30
4945  60 160 260 360 160 60 260 60 360 60
4946  90 190 290 390 190 90 290 90 390 90
4947}
4948do_execsql_test joinD-202 {
4949  SELECT t1.*, t2.*, t3.*, t4.*
4950  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4951  RIGHT JOIN t3 ON t1.c=t3.c
4952  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4953  WHERE t2.x>0 AND t3.y>0
4954  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4955} {
4956  30 130 230 330 130 30 230 30 330 30
4957  60 160 260 360 160 60 260 60 360 60
4958  90 190 290 390 190 90 290 90 390 90
4959}
4960do_execsql_test joinD-203 {
4961  SELECT t1.*, t2.*, t3.*, t4.*
4962  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4963  RIGHT JOIN t3 ON t1.c=t3.c
4964  RIGHT JOIN t4 ON t1.d=t4.d
4965  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
4966  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4967} {
4968  30 130 230 330 130 30 230 30 330 30
4969  60 160 260 360 160 60 260 60 360 60
4970  90 190 290 390 190 90 290 90 390 90
4971}
4972do_execsql_test joinD-204 {
4973  SELECT t1.*, t2.*, t3.*, t4.*
4974  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4975  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4976  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4977  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4978} {
4979  30 130 230 330 130 30 230 30 330 30
4980  60 160 260 360 160 60 260 60 360 60
4981  90 190 290 390 190 90 290 90 390 90
4982   -   -   -   -   -  -   -  - 300  0
4983   -   -   -   -   -  -   -  - 305  5
4984   -   -   -   -   -  -   -  - 310 10
4985   -   -   -   -   -  -   -  - 315 15
4986   -   -   -   -   -  -   -  - 320 20
4987   -   -   -   -   -  -   -  - 325 25
4988   -   -   -   -   -  -   -  - 335 35
4989   -   -   -   -   -  -   -  - 340 40
4990   -   -   -   -   -  -   -  - 345 45
4991   -   -   -   -   -  -   -  - 350 50
4992   -   -   -   -   -  -   -  - 355 55
4993   -   -   -   -   -  -   -  - 365 65
4994   -   -   -   -   -  -   -  - 370 70
4995   -   -   -   -   -  -   -  - 375 75
4996   -   -   -   -   -  -   -  - 380 80
4997   -   -   -   -   -  -   -  - 385 85
4998   -   -   -   -   -  -   -  - 395 95
4999}
5000do_execsql_test joinD-205 {
5001  SELECT t1.*, t2.*, t3.*, t4.*
5002  FROM t1 INNER JOIN t2 ON t2.x>0
5003  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5004  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
5005  WHERE t1.b IS NOT DISTINCT FROM t2.b
5006  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5007} {
5008  30 130 230 330 130 30 230 30 330 30
5009  60 160 260 360 160 60 260 60 360 60
5010  90 190 290 390 190 90 290 90 390 90
5011   -   -   -   -   -  -   -  - 300  0
5012   -   -   -   -   -  -   -  - 305  5
5013   -   -   -   -   -  -   -  - 310 10
5014   -   -   -   -   -  -   -  - 320 20
5015   -   -   -   -   -  -   -  - 325 25
5016   -   -   -   -   -  -   -  - 335 35
5017   -   -   -   -   -  -   -  - 340 40
5018   -   -   -   -   -  -   -  - 350 50
5019   -   -   -   -   -  -   -  - 355 55
5020   -   -   -   -   -  -   -  - 365 65
5021   -   -   -   -   -  -   -  - 370 70
5022   -   -   -   -   -  -   -  - 380 80
5023   -   -   -   -   -  -   -  - 385 85
5024   -   -   -   -   -  -   -  - 395 95
5025}
5026do_execsql_test joinD-206 {
5027  SELECT t1.*, t2.*, t3.*, t4.*
5028  FROM t1 INNER JOIN t2 ON t2.x>0
5029  RIGHT JOIN t3 ON t3.y>0
5030  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
5031  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
5032  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5033} {
5034  30 130 230 330 130 30 230 30 330 30
5035  60 160 260 360 160 60 260 60 360 60
5036  90 190 290 390 190 90 290 90 390 90
5037   -   -   -   -   -  -   -  - 300  0
5038}
5039do_execsql_test joinD-207 {
5040  SELECT t1.*, t2.*, t3.*, t4.*
5041  FROM t1 INNER JOIN t2 ON t2.x>0
5042  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5043  RIGHT JOIN t4 ON t4.z>0
5044  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
5045  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5046} {
5047  30 130 230 330 130 30 230 30 330 30
5048  60 160 260 360 160 60 260 60 360 60
5049  90 190 290 390 190 90 290 90 390 90
5050}
5051do_execsql_test joinD-208 {
5052  SELECT t1.*, t2.*, t3.*, t4.*
5053  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
5054  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5055  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
5056  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5057} {
5058  30 130 230 330 130 30 230 30 330 30
5059  60 160 260 360 160 60 260 60 360 60
5060  90 190 290 390 190 90 290 90 390 90
5061   -   -   -   -   -  -   -  - 300  0
5062   -   -   -   -   -  -   -  - 305  5
5063   -   -   -   -   -  -   -  - 310 10
5064   -   -   -   -   -  -   -  - 315 15
5065   -   -   -   -   -  -   -  - 320 20
5066   -   -   -   -   -  -   -  - 325 25
5067   -   -   -   -   -  -   -  - 335 35
5068   -   -   -   -   -  -   -  - 340 40
5069   -   -   -   -   -  -   -  - 345 45
5070   -   -   -   -   -  -   -  - 350 50
5071   -   -   -   -   -  -   -  - 355 55
5072   -   -   -   -   -  -   -  - 365 65
5073   -   -   -   -   -  -   -  - 370 70
5074   -   -   -   -   -  -   -  - 375 75
5075   -   -   -   -   -  -   -  - 380 80
5076   -   -   -   -   -  -   -  - 385 85
5077   -   -   -   -   -  -   -  - 395 95
5078}
5079do_execsql_test joinD-209 {
5080  SELECT t1.*, t2.*, t3.*, t4.*
5081  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5082  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
5083  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
5084  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5085} {
5086  30 130 230 330 130 30 230 30 330 30
5087  60 160 260 360 160 60 260 60 360 60
5088  90 190 290 390 190 90 290 90 390 90
5089   -   -   -   -   -  -   -  - 300  0
5090   -   -   -   -   -  -   -  - 305  5
5091   -   -   -   -   -  -   -  - 310 10
5092   -   -   -   -   -  -   -  - 315 15
5093   -   -   -   -   -  -   -  - 320 20
5094   -   -   -   -   -  -   -  - 325 25
5095   -   -   -   -   -  -   -  - 335 35
5096   -   -   -   -   -  -   -  - 340 40
5097   -   -   -   -   -  -   -  - 345 45
5098   -   -   -   -   -  -   -  - 350 50
5099   -   -   -   -   -  -   -  - 355 55
5100   -   -   -   -   -  -   -  - 365 65
5101   -   -   -   -   -  -   -  - 370 70
5102   -   -   -   -   -  -   -  - 375 75
5103   -   -   -   -   -  -   -  - 380 80
5104   -   -   -   -   -  -   -  - 385 85
5105   -   -   -   -   -  -   -  - 395 95
5106}
5107do_execsql_test joinD-210 {
5108  SELECT t1.*, t2.*, t3.*, t4.*
5109  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5110  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5111  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5112  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5113} {
5114   6 106 206 306 106  6 206  6   -  -
5115  12 112 212 312 112 12 212 12   -  -
5116  18 118 218 318 118 18 218 18   -  -
5117  24 124 224 324 124 24 224 24   -  -
5118  30 130 230 330 130 30 230 30 330 30
5119  36 136 236 336 136 36 236 36   -  -
5120  42 142 242 342 142 42 242 42   -  -
5121  48 148 248 348 148 48 248 48   -  -
5122  54 154 254 354 154 54 254 54   -  -
5123  60 160 260 360 160 60 260 60 360 60
5124  66 166 266 366 166 66 266 66   -  -
5125  72 172 272 372 172 72 272 72   -  -
5126  78 178 278 378 178 78 278 78   -  -
5127  84 184 284 384 184 84 284 84   -  -
5128  90 190 290 390 190 90 290 90 390 90
5129   -   -   -   -   -  - 200  0   -  -
5130   -   -   -   -   -  - 203  3   -  -
5131   -   -   -   -   -  - 209  9   -  -
5132   -   -   -   -   -  - 215 15   -  -
5133   -   -   -   -   -  - 221 21   -  -
5134   -   -   -   -   -  - 227 27   -  -
5135   -   -   -   -   -  - 233 33   -  -
5136   -   -   -   -   -  - 239 39   -  -
5137   -   -   -   -   -  - 245 45   -  -
5138   -   -   -   -   -  - 251 51   -  -
5139   -   -   -   -   -  - 257 57   -  -
5140   -   -   -   -   -  - 263 63   -  -
5141   -   -   -   -   -  - 269 69   -  -
5142   -   -   -   -   -  - 275 75   -  -
5143   -   -   -   -   -  - 281 81   -  -
5144   -   -   -   -   -  - 287 87   -  -
5145   -   -   -   -   -  - 293 93   -  -
5146   -   -   -   -   -  -   -  - 300  0
5147   -   -   -   -   -  -   -  - 305  5
5148   -   -   -   -   -  -   -  - 310 10
5149   -   -   -   -   -  -   -  - 315 15
5150   -   -   -   -   -  -   -  - 320 20
5151   -   -   -   -   -  -   -  - 325 25
5152   -   -   -   -   -  -   -  - 335 35
5153   -   -   -   -   -  -   -  - 340 40
5154   -   -   -   -   -  -   -  - 345 45
5155   -   -   -   -   -  -   -  - 350 50
5156   -   -   -   -   -  -   -  - 355 55
5157   -   -   -   -   -  -   -  - 365 65
5158   -   -   -   -   -  -   -  - 370 70
5159   -   -   -   -   -  -   -  - 375 75
5160   -   -   -   -   -  -   -  - 380 80
5161   -   -   -   -   -  -   -  - 385 85
5162   -   -   -   -   -  -   -  - 395 95
5163}
5164do_execsql_test joinD-211 {
5165  SELECT t1.*, t2.*, t3.*, t4.*
5166  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
5167  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5168  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5169  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5170} {
5171   6 106 206 306 106  6 206  6   -  -
5172  12 112 212 312 112 12 212 12   -  -
5173  18 118 218 318 118 18 218 18   -  -
5174  24 124 224 324 124 24 224 24   -  -
5175  30 130 230 330 130 30 230 30 330 30
5176  36 136 236 336 136 36 236 36   -  -
5177  42 142 242 342 142 42 242 42   -  -
5178  48 148 248 348 148 48 248 48   -  -
5179  54 154 254 354 154 54 254 54   -  -
5180  60 160 260 360 160 60 260 60 360 60
5181  66 166 266 366 166 66 266 66   -  -
5182  72 172 272 372 172 72 272 72   -  -
5183  78 178 278 378 178 78 278 78   -  -
5184  84 184 284 384 184 84 284 84   -  -
5185  90 190 290 390 190 90 290 90 390 90
5186   -   -   -   -   -  - 200  0   -  -
5187   -   -   -   -   -  - 203  3   -  -
5188   -   -   -   -   -  - 209  9   -  -
5189   -   -   -   -   -  - 215 15   -  -
5190   -   -   -   -   -  - 221 21   -  -
5191   -   -   -   -   -  - 227 27   -  -
5192   -   -   -   -   -  - 233 33   -  -
5193   -   -   -   -   -  - 239 39   -  -
5194   -   -   -   -   -  - 245 45   -  -
5195   -   -   -   -   -  - 251 51   -  -
5196   -   -   -   -   -  - 257 57   -  -
5197   -   -   -   -   -  - 263 63   -  -
5198   -   -   -   -   -  - 269 69   -  -
5199   -   -   -   -   -  - 275 75   -  -
5200   -   -   -   -   -  - 281 81   -  -
5201   -   -   -   -   -  - 287 87   -  -
5202   -   -   -   -   -  - 293 93   -  -
5203   -   -   -   -   -  -   -  - 300  0
5204   -   -   -   -   -  -   -  - 305  5
5205   -   -   -   -   -  -   -  - 310 10
5206   -   -   -   -   -  -   -  - 315 15
5207   -   -   -   -   -  -   -  - 320 20
5208   -   -   -   -   -  -   -  - 325 25
5209   -   -   -   -   -  -   -  - 335 35
5210   -   -   -   -   -  -   -  - 340 40
5211   -   -   -   -   -  -   -  - 345 45
5212   -   -   -   -   -  -   -  - 350 50
5213   -   -   -   -   -  -   -  - 355 55
5214   -   -   -   -   -  -   -  - 365 65
5215   -   -   -   -   -  -   -  - 370 70
5216   -   -   -   -   -  -   -  - 375 75
5217   -   -   -   -   -  -   -  - 380 80
5218   -   -   -   -   -  -   -  - 385 85
5219   -   -   -   -   -  -   -  - 395 95
5220}
5221do_execsql_test joinD-212 {
5222  SELECT t1.*, t2.*, t3.*, t4.*
5223  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5224  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5225  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5226  WHERE t2.x>0
5227  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5228} {
5229   6 106 206 306 106  6 206  6   -  -
5230  12 112 212 312 112 12 212 12   -  -
5231  18 118 218 318 118 18 218 18   -  -
5232  24 124 224 324 124 24 224 24   -  -
5233  30 130 230 330 130 30 230 30 330 30
5234  36 136 236 336 136 36 236 36   -  -
5235  42 142 242 342 142 42 242 42   -  -
5236  48 148 248 348 148 48 248 48   -  -
5237  54 154 254 354 154 54 254 54   -  -
5238  60 160 260 360 160 60 260 60 360 60
5239  66 166 266 366 166 66 266 66   -  -
5240  72 172 272 372 172 72 272 72   -  -
5241  78 178 278 378 178 78 278 78   -  -
5242  84 184 284 384 184 84 284 84   -  -
5243  90 190 290 390 190 90 290 90 390 90
5244}
5245do_execsql_test joinD-213 {
5246  SELECT t1.*, t2.*, t3.*, t4.*
5247  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5248  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5249  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5250  WHERE (t2.x>0 OR t2.x IS NULL)
5251  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5252} {
5253   6 106 206 306 106  6 206  6   -  -
5254  12 112 212 312 112 12 212 12   -  -
5255  18 118 218 318 118 18 218 18   -  -
5256  24 124 224 324 124 24 224 24   -  -
5257  30 130 230 330 130 30 230 30 330 30
5258  36 136 236 336 136 36 236 36   -  -
5259  42 142 242 342 142 42 242 42   -  -
5260  48 148 248 348 148 48 248 48   -  -
5261  54 154 254 354 154 54 254 54   -  -
5262  60 160 260 360 160 60 260 60 360 60
5263  66 166 266 366 166 66 266 66   -  -
5264  72 172 272 372 172 72 272 72   -  -
5265  78 178 278 378 178 78 278 78   -  -
5266  84 184 284 384 184 84 284 84   -  -
5267  90 190 290 390 190 90 290 90 390 90
5268   -   -   -   -   -  - 200  0   -  -
5269   -   -   -   -   -  - 203  3   -  -
5270   -   -   -   -   -  - 209  9   -  -
5271   -   -   -   -   -  - 215 15   -  -
5272   -   -   -   -   -  - 221 21   -  -
5273   -   -   -   -   -  - 227 27   -  -
5274   -   -   -   -   -  - 233 33   -  -
5275   -   -   -   -   -  - 239 39   -  -
5276   -   -   -   -   -  - 245 45   -  -
5277   -   -   -   -   -  - 251 51   -  -
5278   -   -   -   -   -  - 257 57   -  -
5279   -   -   -   -   -  - 263 63   -  -
5280   -   -   -   -   -  - 269 69   -  -
5281   -   -   -   -   -  - 275 75   -  -
5282   -   -   -   -   -  - 281 81   -  -
5283   -   -   -   -   -  - 287 87   -  -
5284   -   -   -   -   -  - 293 93   -  -
5285   -   -   -   -   -  -   -  - 300  0
5286   -   -   -   -   -  -   -  - 305  5
5287   -   -   -   -   -  -   -  - 310 10
5288   -   -   -   -   -  -   -  - 315 15
5289   -   -   -   -   -  -   -  - 320 20
5290   -   -   -   -   -  -   -  - 325 25
5291   -   -   -   -   -  -   -  - 335 35
5292   -   -   -   -   -  -   -  - 340 40
5293   -   -   -   -   -  -   -  - 345 45
5294   -   -   -   -   -  -   -  - 350 50
5295   -   -   -   -   -  -   -  - 355 55
5296   -   -   -   -   -  -   -  - 365 65
5297   -   -   -   -   -  -   -  - 370 70
5298   -   -   -   -   -  -   -  - 375 75
5299   -   -   -   -   -  -   -  - 380 80
5300   -   -   -   -   -  -   -  - 385 85
5301   -   -   -   -   -  -   -  - 395 95
5302}
5303do_execsql_test joinD-214 {
5304  SELECT t1.*, t2.*, t3.*, t4.*
5305  FROM t1 INNER JOIN t2 ON true
5306  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5307  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5308  WHERE t1.b=t2.b AND t2.x>0
5309  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5310} {
5311   6 106 206 306 106  6 206  6   -  -
5312  12 112 212 312 112 12 212 12   -  -
5313  18 118 218 318 118 18 218 18   -  -
5314  24 124 224 324 124 24 224 24   -  -
5315  30 130 230 330 130 30 230 30 330 30
5316  36 136 236 336 136 36 236 36   -  -
5317  42 142 242 342 142 42 242 42   -  -
5318  48 148 248 348 148 48 248 48   -  -
5319  54 154 254 354 154 54 254 54   -  -
5320  60 160 260 360 160 60 260 60 360 60
5321  66 166 266 366 166 66 266 66   -  -
5322  72 172 272 372 172 72 272 72   -  -
5323  78 178 278 378 178 78 278 78   -  -
5324  84 184 284 384 184 84 284 84   -  -
5325  90 190 290 390 190 90 290 90 390 90
5326}
5327do_execsql_test joinD-215 {
5328  SELECT t1.*, t2.*, t3.*, t4.*
5329  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5330  RIGHT JOIN t3 ON t1.c=t3.c
5331  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5332  WHERE t3.y>0
5333  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5334} {
5335   6 106 206 306 106  6 206  6   -  -
5336  12 112 212 312 112 12 212 12   -  -
5337  18 118 218 318 118 18 218 18   -  -
5338  24 124 224 324 124 24 224 24   -  -
5339  30 130 230 330 130 30 230 30 330 30
5340  36 136 236 336 136 36 236 36   -  -
5341  42 142 242 342 142 42 242 42   -  -
5342  48 148 248 348 148 48 248 48   -  -
5343  54 154 254 354 154 54 254 54   -  -
5344  60 160 260 360 160 60 260 60 360 60
5345  66 166 266 366 166 66 266 66   -  -
5346  72 172 272 372 172 72 272 72   -  -
5347  78 178 278 378 178 78 278 78   -  -
5348  84 184 284 384 184 84 284 84   -  -
5349  90 190 290 390 190 90 290 90 390 90
5350   -   -   -   -   -  - 203  3   -  -
5351   -   -   -   -   -  - 209  9   -  -
5352   -   -   -   -   -  - 215 15   -  -
5353   -   -   -   -   -  - 221 21   -  -
5354   -   -   -   -   -  - 227 27   -  -
5355   -   -   -   -   -  - 233 33   -  -
5356   -   -   -   -   -  - 239 39   -  -
5357   -   -   -   -   -  - 245 45   -  -
5358   -   -   -   -   -  - 251 51   -  -
5359   -   -   -   -   -  - 257 57   -  -
5360   -   -   -   -   -  - 263 63   -  -
5361   -   -   -   -   -  - 269 69   -  -
5362   -   -   -   -   -  - 275 75   -  -
5363   -   -   -   -   -  - 281 81   -  -
5364   -   -   -   -   -  - 287 87   -  -
5365   -   -   -   -   -  - 293 93   -  -
5366}
5367do_execsql_test joinD-216 {
5368  SELECT t1.*, t2.*, t3.*, t4.*
5369  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5370  RIGHT JOIN t3 ON t1.c=t3.c
5371  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5372  WHERE t3.y>0 OR t3.y IS NULL
5373  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5374} {
5375   6 106 206 306 106  6 206  6   -  -
5376  12 112 212 312 112 12 212 12   -  -
5377  18 118 218 318 118 18 218 18   -  -
5378  24 124 224 324 124 24 224 24   -  -
5379  30 130 230 330 130 30 230 30 330 30
5380  36 136 236 336 136 36 236 36   -  -
5381  42 142 242 342 142 42 242 42   -  -
5382  48 148 248 348 148 48 248 48   -  -
5383  54 154 254 354 154 54 254 54   -  -
5384  60 160 260 360 160 60 260 60 360 60
5385  66 166 266 366 166 66 266 66   -  -
5386  72 172 272 372 172 72 272 72   -  -
5387  78 178 278 378 178 78 278 78   -  -
5388  84 184 284 384 184 84 284 84   -  -
5389  90 190 290 390 190 90 290 90 390 90
5390   -   -   -   -   -  - 203  3   -  -
5391   -   -   -   -   -  - 209  9   -  -
5392   -   -   -   -   -  - 215 15   -  -
5393   -   -   -   -   -  - 221 21   -  -
5394   -   -   -   -   -  - 227 27   -  -
5395   -   -   -   -   -  - 233 33   -  -
5396   -   -   -   -   -  - 239 39   -  -
5397   -   -   -   -   -  - 245 45   -  -
5398   -   -   -   -   -  - 251 51   -  -
5399   -   -   -   -   -  - 257 57   -  -
5400   -   -   -   -   -  - 263 63   -  -
5401   -   -   -   -   -  - 269 69   -  -
5402   -   -   -   -   -  - 275 75   -  -
5403   -   -   -   -   -  - 281 81   -  -
5404   -   -   -   -   -  - 287 87   -  -
5405   -   -   -   -   -  - 293 93   -  -
5406   -   -   -   -   -  -   -  - 300  0
5407   -   -   -   -   -  -   -  - 305  5
5408   -   -   -   -   -  -   -  - 310 10
5409   -   -   -   -   -  -   -  - 315 15
5410   -   -   -   -   -  -   -  - 320 20
5411   -   -   -   -   -  -   -  - 325 25
5412   -   -   -   -   -  -   -  - 335 35
5413   -   -   -   -   -  -   -  - 340 40
5414   -   -   -   -   -  -   -  - 345 45
5415   -   -   -   -   -  -   -  - 350 50
5416   -   -   -   -   -  -   -  - 355 55
5417   -   -   -   -   -  -   -  - 365 65
5418   -   -   -   -   -  -   -  - 370 70
5419   -   -   -   -   -  -   -  - 375 75
5420   -   -   -   -   -  -   -  - 380 80
5421   -   -   -   -   -  -   -  - 385 85
5422   -   -   -   -   -  -   -  - 395 95
5423}
5424do_execsql_test joinD-217 {
5425  SELECT t1.*, t2.*, t3.*, t4.*
5426  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5427  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5428  FULL JOIN t4 ON t1.d=t4.d
5429  WHERE t4.z>0
5430  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5431} {
5432  30 130 230 330 130 30 230 30 330 30
5433  60 160 260 360 160 60 260 60 360 60
5434  90 190 290 390 190 90 290 90 390 90
5435   -   -   -   -   -  -   -  - 305  5
5436   -   -   -   -   -  -   -  - 310 10
5437   -   -   -   -   -  -   -  - 315 15
5438   -   -   -   -   -  -   -  - 320 20
5439   -   -   -   -   -  -   -  - 325 25
5440   -   -   -   -   -  -   -  - 335 35
5441   -   -   -   -   -  -   -  - 340 40
5442   -   -   -   -   -  -   -  - 345 45
5443   -   -   -   -   -  -   -  - 350 50
5444   -   -   -   -   -  -   -  - 355 55
5445   -   -   -   -   -  -   -  - 365 65
5446   -   -   -   -   -  -   -  - 370 70
5447   -   -   -   -   -  -   -  - 375 75
5448   -   -   -   -   -  -   -  - 380 80
5449   -   -   -   -   -  -   -  - 385 85
5450   -   -   -   -   -  -   -  - 395 95
5451}
5452do_execsql_test joinD-218 {
5453  SELECT t1.*, t2.*, t3.*, t4.*
5454  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5455  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5456  FULL JOIN t4 ON t1.d=t4.d
5457  WHERE t4.z IS NULL OR t4.z>0
5458  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5459} {
5460   6 106 206 306 106  6 206  6   -  -
5461  12 112 212 312 112 12 212 12   -  -
5462  18 118 218 318 118 18 218 18   -  -
5463  24 124 224 324 124 24 224 24   -  -
5464  30 130 230 330 130 30 230 30 330 30
5465  36 136 236 336 136 36 236 36   -  -
5466  42 142 242 342 142 42 242 42   -  -
5467  48 148 248 348 148 48 248 48   -  -
5468  54 154 254 354 154 54 254 54   -  -
5469  60 160 260 360 160 60 260 60 360 60
5470  66 166 266 366 166 66 266 66   -  -
5471  72 172 272 372 172 72 272 72   -  -
5472  78 178 278 378 178 78 278 78   -  -
5473  84 184 284 384 184 84 284 84   -  -
5474  90 190 290 390 190 90 290 90 390 90
5475   -   -   -   -   -  - 200  0   -  -
5476   -   -   -   -   -  - 203  3   -  -
5477   -   -   -   -   -  - 209  9   -  -
5478   -   -   -   -   -  - 215 15   -  -
5479   -   -   -   -   -  - 221 21   -  -
5480   -   -   -   -   -  - 227 27   -  -
5481   -   -   -   -   -  - 233 33   -  -
5482   -   -   -   -   -  - 239 39   -  -
5483   -   -   -   -   -  - 245 45   -  -
5484   -   -   -   -   -  - 251 51   -  -
5485   -   -   -   -   -  - 257 57   -  -
5486   -   -   -   -   -  - 263 63   -  -
5487   -   -   -   -   -  - 269 69   -  -
5488   -   -   -   -   -  - 275 75   -  -
5489   -   -   -   -   -  - 281 81   -  -
5490   -   -   -   -   -  - 287 87   -  -
5491   -   -   -   -   -  - 293 93   -  -
5492   -   -   -   -   -  -   -  - 305  5
5493   -   -   -   -   -  -   -  - 310 10
5494   -   -   -   -   -  -   -  - 315 15
5495   -   -   -   -   -  -   -  - 320 20
5496   -   -   -   -   -  -   -  - 325 25
5497   -   -   -   -   -  -   -  - 335 35
5498   -   -   -   -   -  -   -  - 340 40
5499   -   -   -   -   -  -   -  - 345 45
5500   -   -   -   -   -  -   -  - 350 50
5501   -   -   -   -   -  -   -  - 355 55
5502   -   -   -   -   -  -   -  - 365 65
5503   -   -   -   -   -  -   -  - 370 70
5504   -   -   -   -   -  -   -  - 375 75
5505   -   -   -   -   -  -   -  - 380 80
5506   -   -   -   -   -  -   -  - 385 85
5507   -   -   -   -   -  -   -  - 395 95
5508}
5509do_execsql_test joinD-219 {
5510  SELECT t1.*, t2.*, t3.*, t4.*
5511  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5512  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5513  FULL JOIN t4 ON t1.d=t4.d
5514  WHERE t2.x>0 AND t4.z>0
5515  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5516} {
5517  30 130 230 330 130 30 230 30 330 30
5518  60 160 260 360 160 60 260 60 360 60
5519  90 190 290 390 190 90 290 90 390 90
5520}
5521do_execsql_test joinD-220 {
5522  SELECT t1.*, t2.*, t3.*, t4.*
5523  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5524  RIGHT JOIN t3 ON t1.c=t3.c
5525  FULL JOIN t4 ON t1.d=t4.d
5526  WHERE t4.z>0 AND t3.y>0
5527  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5528} {
5529  30 130 230 330 130 30 230 30 330 30
5530  60 160 260 360 160 60 260 60 360 60
5531  90 190 290 390 190 90 290 90 390 90
5532}
5533do_execsql_test joinD-221 {
5534  SELECT t1.*, t2.*, t3.*, t4.*
5535  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5536  RIGHT JOIN t3 ON t1.c=t3.c
5537  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5538  WHERE t2.x>0 AND t3.y>0
5539  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5540} {
5541   6 106 206 306 106  6 206  6   -  -
5542  12 112 212 312 112 12 212 12   -  -
5543  18 118 218 318 118 18 218 18   -  -
5544  24 124 224 324 124 24 224 24   -  -
5545  30 130 230 330 130 30 230 30 330 30
5546  36 136 236 336 136 36 236 36   -  -
5547  42 142 242 342 142 42 242 42   -  -
5548  48 148 248 348 148 48 248 48   -  -
5549  54 154 254 354 154 54 254 54   -  -
5550  60 160 260 360 160 60 260 60 360 60
5551  66 166 266 366 166 66 266 66   -  -
5552  72 172 272 372 172 72 272 72   -  -
5553  78 178 278 378 178 78 278 78   -  -
5554  84 184 284 384 184 84 284 84   -  -
5555  90 190 290 390 190 90 290 90 390 90
5556}
5557do_execsql_test joinD-222 {
5558  SELECT t1.*, t2.*, t3.*, t4.*
5559  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5560  RIGHT JOIN t3 ON t1.c=t3.c
5561  FULL JOIN t4 ON t1.d=t4.d
5562  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
5563  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5564} {
5565  30 130 230 330 130 30 230 30 330 30
5566  60 160 260 360 160 60 260 60 360 60
5567  90 190 290 390 190 90 290 90 390 90
5568}
5569do_execsql_test joinD-223 {
5570  SELECT t1.*, t2.*, t3.*, t4.*
5571  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
5572  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5573  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
5574  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5575} {
5576   6 106 206 306 106  6 206  6   -  -
5577  12 112 212 312 112 12 212 12   -  -
5578  18 118 218 318 118 18 218 18   -  -
5579  24 124 224 324 124 24 224 24   -  -
5580  30 130 230 330 130 30 230 30 330 30
5581  36 136 236 336 136 36 236 36   -  -
5582  42 142 242 342 142 42 242 42   -  -
5583  48 148 248 348 148 48 248 48   -  -
5584  54 154 254 354 154 54 254 54   -  -
5585  60 160 260 360 160 60 260 60 360 60
5586  66 166 266 366 166 66 266 66   -  -
5587  72 172 272 372 172 72 272 72   -  -
5588  78 178 278 378 178 78 278 78   -  -
5589  84 184 284 384 184 84 284 84   -  -
5590  90 190 290 390 190 90 290 90 390 90
5591   -   -   -   -   -  - 200  0   -  -
5592   -   -   -   -   -  - 203  3   -  -
5593   -   -   -   -   -  - 209  9   -  -
5594   -   -   -   -   -  - 215 15   -  -
5595   -   -   -   -   -  - 221 21   -  -
5596   -   -   -   -   -  - 227 27   -  -
5597   -   -   -   -   -  - 233 33   -  -
5598   -   -   -   -   -  - 239 39   -  -
5599   -   -   -   -   -  - 245 45   -  -
5600   -   -   -   -   -  - 251 51   -  -
5601   -   -   -   -   -  - 257 57   -  -
5602   -   -   -   -   -  - 263 63   -  -
5603   -   -   -   -   -  - 269 69   -  -
5604   -   -   -   -   -  - 275 75   -  -
5605   -   -   -   -   -  - 281 81   -  -
5606   -   -   -   -   -  - 287 87   -  -
5607   -   -   -   -   -  - 293 93   -  -
5608   -   -   -   -   -  -   -  - 300  0
5609   -   -   -   -   -  -   -  - 305  5
5610   -   -   -   -   -  -   -  - 310 10
5611   -   -   -   -   -  -   -  - 315 15
5612   -   -   -   -   -  -   -  - 320 20
5613   -   -   -   -   -  -   -  - 325 25
5614   -   -   -   -   -  -   -  - 335 35
5615   -   -   -   -   -  -   -  - 340 40
5616   -   -   -   -   -  -   -  - 345 45
5617   -   -   -   -   -  -   -  - 350 50
5618   -   -   -   -   -  -   -  - 355 55
5619   -   -   -   -   -  -   -  - 365 65
5620   -   -   -   -   -  -   -  - 370 70
5621   -   -   -   -   -  -   -  - 375 75
5622   -   -   -   -   -  -   -  - 380 80
5623   -   -   -   -   -  -   -  - 385 85
5624   -   -   -   -   -  -   -  - 395 95
5625}
5626do_execsql_test joinD-224 {
5627  SELECT t1.*, t2.*, t3.*, t4.*
5628  FROM t1 INNER JOIN t2 ON t2.x>0
5629  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5630  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
5631  WHERE t1.b IS NOT DISTINCT FROM t2.b
5632  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5633} {
5634   6 106 206 306 106  6 206  6   -  -
5635  12 112 212 312 112 12 212 12   -  -
5636  18 118 218 318 118 18 218 18   -  -
5637  24 124 224 324 124 24 224 24   -  -
5638  30 130 230 330 130 30 230 30 330 30
5639  36 136 236 336 136 36 236 36   -  -
5640  42 142 242 342 142 42 242 42   -  -
5641  48 148 248 348 148 48 248 48   -  -
5642  54 154 254 354 154 54 254 54   -  -
5643  60 160 260 360 160 60 260 60 360 60
5644  66 166 266 366 166 66 266 66   -  -
5645  72 172 272 372 172 72 272 72   -  -
5646  78 178 278 378 178 78 278 78   -  -
5647  84 184 284 384 184 84 284 84   -  -
5648  90 190 290 390 190 90 290 90 390 90
5649   -   -   -   -   -  - 200  0   -  -
5650   -   -   -   -   -  -   -  - 300  0
5651   -   -   -   -   -  -   -  - 305  5
5652   -   -   -   -   -  -   -  - 310 10
5653   -   -   -   -   -  -   -  - 320 20
5654   -   -   -   -   -  -   -  - 325 25
5655   -   -   -   -   -  -   -  - 335 35
5656   -   -   -   -   -  -   -  - 340 40
5657   -   -   -   -   -  -   -  - 350 50
5658   -   -   -   -   -  -   -  - 355 55
5659   -   -   -   -   -  -   -  - 365 65
5660   -   -   -   -   -  -   -  - 370 70
5661   -   -   -   -   -  -   -  - 380 80
5662   -   -   -   -   -  -   -  - 385 85
5663   -   -   -   -   -  -   -  - 395 95
5664}
5665do_execsql_test joinD-225 {
5666  SELECT t1.*, t2.*, t3.*, t4.*
5667  FROM t1 INNER JOIN t2 ON t2.x>0
5668  RIGHT JOIN t3 ON t3.y>0
5669  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
5670  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
5671  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5672} {
5673   6 106 206 306 106  6 206  6   -  -
5674  12 112 212 312 112 12 212 12   -  -
5675  18 118 218 318 118 18 218 18   -  -
5676  24 124 224 324 124 24 224 24   -  -
5677  30 130 230 330 130 30 230 30 330 30
5678  36 136 236 336 136 36 236 36   -  -
5679  42 142 242 342 142 42 242 42   -  -
5680  48 148 248 348 148 48 248 48   -  -
5681  54 154 254 354 154 54 254 54   -  -
5682  60 160 260 360 160 60 260 60 360 60
5683  66 166 266 366 166 66 266 66   -  -
5684  72 172 272 372 172 72 272 72   -  -
5685  78 178 278 378 178 78 278 78   -  -
5686  84 184 284 384 184 84 284 84   -  -
5687  90 190 290 390 190 90 290 90 390 90
5688   -   -   -   -   -  -   -  - 300  0
5689}
5690do_execsql_test joinD-226 {
5691  SELECT t1.*, t2.*, t3.*, t4.*
5692  FROM t1 INNER JOIN t2 ON t2.x>0
5693  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5694  FULL JOIN t4 ON t4.z>0
5695  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
5696  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5697} {
5698  30 130 230 330 130 30 230 30 330 30
5699  60 160 260 360 160 60 260 60 360 60
5700  90 190 290 390 190 90 290 90 390 90
5701}
5702do_execsql_test joinD-227 {
5703  SELECT t1.*, t2.*, t3.*, t4.*
5704  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
5705  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5706  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5707  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5708} {
5709   6 106 206 306 106  6 206  6   -  -
5710  12 112 212 312 112 12 212 12   -  -
5711  18 118 218 318 118 18 218 18   -  -
5712  24 124 224 324 124 24 224 24   -  -
5713  30 130 230 330 130 30 230 30 330 30
5714  36 136 236 336 136 36 236 36   -  -
5715  42 142 242 342 142 42 242 42   -  -
5716  48 148 248 348 148 48 248 48   -  -
5717  54 154 254 354 154 54 254 54   -  -
5718  60 160 260 360 160 60 260 60 360 60
5719  66 166 266 366 166 66 266 66   -  -
5720  72 172 272 372 172 72 272 72   -  -
5721  78 178 278 378 178 78 278 78   -  -
5722  84 184 284 384 184 84 284 84   -  -
5723  90 190 290 390 190 90 290 90 390 90
5724   -   -   -   -   -  - 200  0   -  -
5725   -   -   -   -   -  - 203  3   -  -
5726   -   -   -   -   -  - 209  9   -  -
5727   -   -   -   -   -  - 215 15   -  -
5728   -   -   -   -   -  - 221 21   -  -
5729   -   -   -   -   -  - 227 27   -  -
5730   -   -   -   -   -  - 233 33   -  -
5731   -   -   -   -   -  - 239 39   -  -
5732   -   -   -   -   -  - 245 45   -  -
5733   -   -   -   -   -  - 251 51   -  -
5734   -   -   -   -   -  - 257 57   -  -
5735   -   -   -   -   -  - 263 63   -  -
5736   -   -   -   -   -  - 269 69   -  -
5737   -   -   -   -   -  - 275 75   -  -
5738   -   -   -   -   -  - 281 81   -  -
5739   -   -   -   -   -  - 287 87   -  -
5740   -   -   -   -   -  - 293 93   -  -
5741   -   -   -   -   -  -   -  - 300  0
5742   -   -   -   -   -  -   -  - 305  5
5743   -   -   -   -   -  -   -  - 310 10
5744   -   -   -   -   -  -   -  - 315 15
5745   -   -   -   -   -  -   -  - 320 20
5746   -   -   -   -   -  -   -  - 325 25
5747   -   -   -   -   -  -   -  - 335 35
5748   -   -   -   -   -  -   -  - 340 40
5749   -   -   -   -   -  -   -  - 345 45
5750   -   -   -   -   -  -   -  - 350 50
5751   -   -   -   -   -  -   -  - 355 55
5752   -   -   -   -   -  -   -  - 365 65
5753   -   -   -   -   -  -   -  - 370 70
5754   -   -   -   -   -  -   -  - 375 75
5755   -   -   -   -   -  -   -  - 380 80
5756   -   -   -   -   -  -   -  - 385 85
5757   -   -   -   -   -  -   -  - 395 95
5758}
5759do_execsql_test joinD-228 {
5760  SELECT t1.*, t2.*, t3.*, t4.*
5761  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5762  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
5763  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5764  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5765} {
5766   6 106 206 306 106  6 206  6   -  -
5767  12 112 212 312 112 12 212 12   -  -
5768  18 118 218 318 118 18 218 18   -  -
5769  24 124 224 324 124 24 224 24   -  -
5770  30 130 230 330 130 30 230 30 330 30
5771  36 136 236 336 136 36 236 36   -  -
5772  42 142 242 342 142 42 242 42   -  -
5773  48 148 248 348 148 48 248 48   -  -
5774  54 154 254 354 154 54 254 54   -  -
5775  60 160 260 360 160 60 260 60 360 60
5776  66 166 266 366 166 66 266 66   -  -
5777  72 172 272 372 172 72 272 72   -  -
5778  78 178 278 378 178 78 278 78   -  -
5779  84 184 284 384 184 84 284 84   -  -
5780  90 190 290 390 190 90 290 90 390 90
5781   -   -   -   -   -  - 200  0   -  -
5782   -   -   -   -   -  - 203  3   -  -
5783   -   -   -   -   -  - 209  9   -  -
5784   -   -   -   -   -  - 215 15   -  -
5785   -   -   -   -   -  - 221 21   -  -
5786   -   -   -   -   -  - 227 27   -  -
5787   -   -   -   -   -  - 233 33   -  -
5788   -   -   -   -   -  - 239 39   -  -
5789   -   -   -   -   -  - 245 45   -  -
5790   -   -   -   -   -  - 251 51   -  -
5791   -   -   -   -   -  - 257 57   -  -
5792   -   -   -   -   -  - 263 63   -  -
5793   -   -   -   -   -  - 269 69   -  -
5794   -   -   -   -   -  - 275 75   -  -
5795   -   -   -   -   -  - 281 81   -  -
5796   -   -   -   -   -  - 287 87   -  -
5797   -   -   -   -   -  - 293 93   -  -
5798   -   -   -   -   -  -   -  - 300  0
5799   -   -   -   -   -  -   -  - 305  5
5800   -   -   -   -   -  -   -  - 310 10
5801   -   -   -   -   -  -   -  - 315 15
5802   -   -   -   -   -  -   -  - 320 20
5803   -   -   -   -   -  -   -  - 325 25
5804   -   -   -   -   -  -   -  - 335 35
5805   -   -   -   -   -  -   -  - 340 40
5806   -   -   -   -   -  -   -  - 345 45
5807   -   -   -   -   -  -   -  - 350 50
5808   -   -   -   -   -  -   -  - 355 55
5809   -   -   -   -   -  -   -  - 365 65
5810   -   -   -   -   -  -   -  - 370 70
5811   -   -   -   -   -  -   -  - 375 75
5812   -   -   -   -   -  -   -  - 380 80
5813   -   -   -   -   -  -   -  - 385 85
5814   -   -   -   -   -  -   -  - 395 95
5815}
5816do_execsql_test joinD-229 {
5817  SELECT t1.*, t2.*, t3.*, t4.*
5818  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5819  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5820  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5821  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5822} {
5823  10 110 210 310 110 10   -  - 310 10
5824  20 120 220 320 120 20   -  - 320 20
5825  30 130 230 330 130 30 230 30 330 30
5826  40 140 240 340 140 40   -  - 340 40
5827  50 150 250 350 150 50   -  - 350 50
5828  60 160 260 360 160 60 260 60 360 60
5829  70 170 270 370 170 70   -  - 370 70
5830  80 180 280 380 180 80   -  - 380 80
5831  90 190 290 390 190 90 290 90 390 90
5832}
5833do_execsql_test joinD-230 {
5834  SELECT t1.*, t2.*, t3.*, t4.*
5835  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
5836  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5837  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5838  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5839} {
5840  10 110 210 310 110 10   -  - 310 10
5841  20 120 220 320 120 20   -  - 320 20
5842  30 130 230 330 130 30 230 30 330 30
5843  40 140 240 340 140 40   -  - 340 40
5844  50 150 250 350 150 50   -  - 350 50
5845  60 160 260 360 160 60 260 60 360 60
5846  70 170 270 370 170 70   -  - 370 70
5847  80 180 280 380 180 80   -  - 380 80
5848  90 190 290 390 190 90 290 90 390 90
5849}
5850do_execsql_test joinD-231 {
5851  SELECT t1.*, t2.*, t3.*, t4.*
5852  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5853  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5854  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5855  WHERE t2.x>0
5856  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5857} {
5858  10 110 210 310 110 10   -  - 310 10
5859  20 120 220 320 120 20   -  - 320 20
5860  30 130 230 330 130 30 230 30 330 30
5861  40 140 240 340 140 40   -  - 340 40
5862  50 150 250 350 150 50   -  - 350 50
5863  60 160 260 360 160 60 260 60 360 60
5864  70 170 270 370 170 70   -  - 370 70
5865  80 180 280 380 180 80   -  - 380 80
5866  90 190 290 390 190 90 290 90 390 90
5867}
5868do_execsql_test joinD-232 {
5869  SELECT t1.*, t2.*, t3.*, t4.*
5870  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5871  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5872  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5873  WHERE (t2.x>0 OR t2.x IS NULL)
5874  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5875} {
5876  10 110 210 310 110 10   -  - 310 10
5877  20 120 220 320 120 20   -  - 320 20
5878  30 130 230 330 130 30 230 30 330 30
5879  40 140 240 340 140 40   -  - 340 40
5880  50 150 250 350 150 50   -  - 350 50
5881  60 160 260 360 160 60 260 60 360 60
5882  70 170 270 370 170 70   -  - 370 70
5883  80 180 280 380 180 80   -  - 380 80
5884  90 190 290 390 190 90 290 90 390 90
5885}
5886do_execsql_test joinD-233 {
5887  SELECT t1.*, t2.*, t3.*, t4.*
5888  FROM t1 INNER JOIN t2 ON true
5889  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5890  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5891  WHERE t1.b=t2.b AND t2.x>0
5892  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5893} {
5894  10 110 210 310 110 10   -  - 310 10
5895  20 120 220 320 120 20   -  - 320 20
5896  30 130 230 330 130 30 230 30 330 30
5897  40 140 240 340 140 40   -  - 340 40
5898  50 150 250 350 150 50   -  - 350 50
5899  60 160 260 360 160 60 260 60 360 60
5900  70 170 270 370 170 70   -  - 370 70
5901  80 180 280 380 180 80   -  - 380 80
5902  90 190 290 390 190 90 290 90 390 90
5903}
5904do_execsql_test joinD-234 {
5905  SELECT t1.*, t2.*, t3.*, t4.*
5906  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5907  FULL JOIN t3 ON t1.c=t3.c
5908  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5909  WHERE t3.y>0
5910  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5911} {
5912  30 130 230 330 130 30 230 30 330 30
5913  60 160 260 360 160 60 260 60 360 60
5914  90 190 290 390 190 90 290 90 390 90
5915}
5916do_execsql_test joinD-235 {
5917  SELECT t1.*, t2.*, t3.*, t4.*
5918  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5919  FULL JOIN t3 ON t1.c=t3.c
5920  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5921  WHERE t3.y>0 OR t3.y IS NULL
5922  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5923} {
5924  10 110 210 310 110 10   -  - 310 10
5925  20 120 220 320 120 20   -  - 320 20
5926  30 130 230 330 130 30 230 30 330 30
5927  40 140 240 340 140 40   -  - 340 40
5928  50 150 250 350 150 50   -  - 350 50
5929  60 160 260 360 160 60 260 60 360 60
5930  70 170 270 370 170 70   -  - 370 70
5931  80 180 280 380 180 80   -  - 380 80
5932  90 190 290 390 190 90 290 90 390 90
5933}
5934do_execsql_test joinD-236 {
5935  SELECT t1.*, t2.*, t3.*, t4.*
5936  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5937  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5938  INNER JOIN t4 ON t1.d=t4.d
5939  WHERE t4.z>0
5940  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5941} {
5942  10 110 210 310 110 10   -  - 310 10
5943  20 120 220 320 120 20   -  - 320 20
5944  30 130 230 330 130 30 230 30 330 30
5945  40 140 240 340 140 40   -  - 340 40
5946  50 150 250 350 150 50   -  - 350 50
5947  60 160 260 360 160 60 260 60 360 60
5948  70 170 270 370 170 70   -  - 370 70
5949  80 180 280 380 180 80   -  - 380 80
5950  90 190 290 390 190 90 290 90 390 90
5951}
5952do_execsql_test joinD-237 {
5953  SELECT t1.*, t2.*, t3.*, t4.*
5954  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5955  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5956  INNER JOIN t4 ON t1.d=t4.d
5957  WHERE t4.z IS NULL OR t4.z>0
5958  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5959} {
5960  10 110 210 310 110 10   -  - 310 10
5961  20 120 220 320 120 20   -  - 320 20
5962  30 130 230 330 130 30 230 30 330 30
5963  40 140 240 340 140 40   -  - 340 40
5964  50 150 250 350 150 50   -  - 350 50
5965  60 160 260 360 160 60 260 60 360 60
5966  70 170 270 370 170 70   -  - 370 70
5967  80 180 280 380 180 80   -  - 380 80
5968  90 190 290 390 190 90 290 90 390 90
5969}
5970do_execsql_test joinD-238 {
5971  SELECT t1.*, t2.*, t3.*, t4.*
5972  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5973  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5974  INNER JOIN t4 ON t1.d=t4.d
5975  WHERE t2.x>0 AND t4.z>0
5976  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5977} {
5978  10 110 210 310 110 10   -  - 310 10
5979  20 120 220 320 120 20   -  - 320 20
5980  30 130 230 330 130 30 230 30 330 30
5981  40 140 240 340 140 40   -  - 340 40
5982  50 150 250 350 150 50   -  - 350 50
5983  60 160 260 360 160 60 260 60 360 60
5984  70 170 270 370 170 70   -  - 370 70
5985  80 180 280 380 180 80   -  - 380 80
5986  90 190 290 390 190 90 290 90 390 90
5987}
5988do_execsql_test joinD-239 {
5989  SELECT t1.*, t2.*, t3.*, t4.*
5990  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5991  FULL JOIN t3 ON t1.c=t3.c
5992  INNER JOIN t4 ON t1.d=t4.d
5993  WHERE t4.z>0 AND t3.y>0
5994  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5995} {
5996  30 130 230 330 130 30 230 30 330 30
5997  60 160 260 360 160 60 260 60 360 60
5998  90 190 290 390 190 90 290 90 390 90
5999}
6000do_execsql_test joinD-240 {
6001  SELECT t1.*, t2.*, t3.*, t4.*
6002  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6003  FULL JOIN t3 ON t1.c=t3.c
6004  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
6005  WHERE t2.x>0 AND t3.y>0
6006  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6007} {
6008  30 130 230 330 130 30 230 30 330 30
6009  60 160 260 360 160 60 260 60 360 60
6010  90 190 290 390 190 90 290 90 390 90
6011}
6012do_execsql_test joinD-241 {
6013  SELECT t1.*, t2.*, t3.*, t4.*
6014  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6015  FULL JOIN t3 ON t1.c=t3.c
6016  INNER JOIN t4 ON t1.d=t4.d
6017  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
6018  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6019} {
6020  30 130 230 330 130 30 230 30 330 30
6021  60 160 260 360 160 60 260 60 360 60
6022  90 190 290 390 190 90 290 90 390 90
6023}
6024do_execsql_test joinD-242 {
6025  SELECT t1.*, t2.*, t3.*, t4.*
6026  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6027  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6028  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6029  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6030} {
6031  10 110 210 310 110 10   -  - 310 10
6032  20 120 220 320 120 20   -  - 320 20
6033  30 130 230 330 130 30 230 30 330 30
6034  40 140 240 340 140 40   -  - 340 40
6035  50 150 250 350 150 50   -  - 350 50
6036  60 160 260 360 160 60 260 60 360 60
6037  70 170 270 370 170 70   -  - 370 70
6038  80 180 280 380 180 80   -  - 380 80
6039  90 190 290 390 190 90 290 90 390 90
6040}
6041do_execsql_test joinD-243 {
6042  SELECT t1.*, t2.*, t3.*, t4.*
6043  FROM t1 INNER JOIN t2 ON t2.x>0
6044  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6045  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6046  WHERE t1.b IS NOT DISTINCT FROM t2.b
6047  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6048} {
6049  10 110 210 310 110 10   -  - 310 10
6050  20 120 220 320 120 20   -  - 320 20
6051  30 130 230 330 130 30 230 30 330 30
6052  40 140 240 340 140 40   -  - 340 40
6053  50 150 250 350 150 50   -  - 350 50
6054  60 160 260 360 160 60 260 60 360 60
6055  70 170 270 370 170 70   -  - 370 70
6056  80 180 280 380 180 80   -  - 380 80
6057  90 190 290 390 190 90 290 90 390 90
6058}
6059do_execsql_test joinD-244 {
6060  SELECT t1.*, t2.*, t3.*, t4.*
6061  FROM t1 INNER JOIN t2 ON t2.x>0
6062  FULL JOIN t3 ON t3.y>0
6063  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6064  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
6065  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6066} {
6067  30 130 230 330 130 30 230 30 330 30
6068  60 160 260 360 160 60 260 60 360 60
6069  90 190 290 390 190 90 290 90 390 90
6070}
6071do_execsql_test joinD-245 {
6072  SELECT t1.*, t2.*, t3.*, t4.*
6073  FROM t1 INNER JOIN t2 ON t2.x>0
6074  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6075  INNER JOIN t4 ON t4.z>0
6076  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
6077  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6078} {
6079  10 110 210 310 110 10   -  - 310 10
6080  20 120 220 320 120 20   -  - 320 20
6081  30 130 230 330 130 30 230 30 330 30
6082  40 140 240 340 140 40   -  - 340 40
6083  50 150 250 350 150 50   -  - 350 50
6084  60 160 260 360 160 60 260 60 360 60
6085  70 170 270 370 170 70   -  - 370 70
6086  80 180 280 380 180 80   -  - 380 80
6087  90 190 290 390 190 90 290 90 390 90
6088}
6089do_execsql_test joinD-246 {
6090  SELECT t1.*, t2.*, t3.*, t4.*
6091  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
6092  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6093  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
6094  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6095} {
6096  10 110 210 310 110 10   -  - 310 10
6097  20 120 220 320 120 20   -  - 320 20
6098  30 130 230 330 130 30 230 30 330 30
6099  40 140 240 340 140 40   -  - 340 40
6100  50 150 250 350 150 50   -  - 350 50
6101  60 160 260 360 160 60 260 60 360 60
6102  70 170 270 370 170 70   -  - 370 70
6103  80 180 280 380 180 80   -  - 380 80
6104  90 190 290 390 190 90 290 90 390 90
6105}
6106do_execsql_test joinD-247 {
6107  SELECT t1.*, t2.*, t3.*, t4.*
6108  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6109  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6110  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6111  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6112} {
6113   2 102 202 302 102  2   -  -   -  -
6114   4 104 204 304 104  4   -  -   -  -
6115   6 106 206 306 106  6 206  6   -  -
6116   8 108 208 308 108  8   -  -   -  -
6117  10 110 210 310 110 10   -  - 310 10
6118  12 112 212 312 112 12 212 12   -  -
6119  14 114 214 314 114 14   -  -   -  -
6120  16 116 216 316 116 16   -  -   -  -
6121  18 118 218 318 118 18 218 18   -  -
6122  20 120 220 320 120 20   -  - 320 20
6123  22 122 222 322 122 22   -  -   -  -
6124  24 124 224 324 124 24 224 24   -  -
6125  26 126 226 326 126 26   -  -   -  -
6126  28 128 228 328 128 28   -  -   -  -
6127  30 130 230 330 130 30 230 30 330 30
6128  32 132 232 332 132 32   -  -   -  -
6129  34 134 234 334 134 34   -  -   -  -
6130  36 136 236 336 136 36 236 36   -  -
6131  38 138 238 338 138 38   -  -   -  -
6132  40 140 240 340 140 40   -  - 340 40
6133  42 142 242 342 142 42 242 42   -  -
6134  44 144 244 344 144 44   -  -   -  -
6135  46 146 246 346 146 46   -  -   -  -
6136  48 148 248 348 148 48 248 48   -  -
6137  50 150 250 350 150 50   -  - 350 50
6138  52 152 252 352 152 52   -  -   -  -
6139  54 154 254 354 154 54 254 54   -  -
6140  56 156 256 356 156 56   -  -   -  -
6141  58 158 258 358 158 58   -  -   -  -
6142  60 160 260 360 160 60 260 60 360 60
6143  62 162 262 362 162 62   -  -   -  -
6144  64 164 264 364 164 64   -  -   -  -
6145  66 166 266 366 166 66 266 66   -  -
6146  68 168 268 368 168 68   -  -   -  -
6147  70 170 270 370 170 70   -  - 370 70
6148  72 172 272 372 172 72 272 72   -  -
6149  74 174 274 374 174 74   -  -   -  -
6150  76 176 276 376 176 76   -  -   -  -
6151  78 178 278 378 178 78 278 78   -  -
6152  80 180 280 380 180 80   -  - 380 80
6153  82 182 282 382 182 82   -  -   -  -
6154  84 184 284 384 184 84 284 84   -  -
6155  86 186 286 386 186 86   -  -   -  -
6156  88 188 288 388 188 88   -  -   -  -
6157  90 190 290 390 190 90 290 90 390 90
6158  92 192 292 392 192 92   -  -   -  -
6159  94 194 294 394 194 94   -  -   -  -
6160   -   -   -   -   -  - 200  0   -  -
6161   -   -   -   -   -  - 203  3   -  -
6162   -   -   -   -   -  - 209  9   -  -
6163   -   -   -   -   -  - 215 15   -  -
6164   -   -   -   -   -  - 221 21   -  -
6165   -   -   -   -   -  - 227 27   -  -
6166   -   -   -   -   -  - 233 33   -  -
6167   -   -   -   -   -  - 239 39   -  -
6168   -   -   -   -   -  - 245 45   -  -
6169   -   -   -   -   -  - 251 51   -  -
6170   -   -   -   -   -  - 257 57   -  -
6171   -   -   -   -   -  - 263 63   -  -
6172   -   -   -   -   -  - 269 69   -  -
6173   -   -   -   -   -  - 275 75   -  -
6174   -   -   -   -   -  - 281 81   -  -
6175   -   -   -   -   -  - 287 87   -  -
6176   -   -   -   -   -  - 293 93   -  -
6177}
6178do_execsql_test joinD-248 {
6179  SELECT t1.*, t2.*, t3.*, t4.*
6180  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6181  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6182  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6183  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6184} {
6185   2 102 202 302 102  2   -  -   -  -
6186   4 104 204 304 104  4   -  -   -  -
6187   6 106 206 306 106  6 206  6   -  -
6188   8 108 208 308 108  8   -  -   -  -
6189  10 110 210 310 110 10   -  - 310 10
6190  12 112 212 312 112 12 212 12   -  -
6191  14 114 214 314 114 14   -  -   -  -
6192  16 116 216 316 116 16   -  -   -  -
6193  18 118 218 318 118 18 218 18   -  -
6194  20 120 220 320 120 20   -  - 320 20
6195  22 122 222 322 122 22   -  -   -  -
6196  24 124 224 324 124 24 224 24   -  -
6197  26 126 226 326 126 26   -  -   -  -
6198  28 128 228 328 128 28   -  -   -  -
6199  30 130 230 330 130 30 230 30 330 30
6200  32 132 232 332 132 32   -  -   -  -
6201  34 134 234 334 134 34   -  -   -  -
6202  36 136 236 336 136 36 236 36   -  -
6203  38 138 238 338 138 38   -  -   -  -
6204  40 140 240 340 140 40   -  - 340 40
6205  42 142 242 342 142 42 242 42   -  -
6206  44 144 244 344 144 44   -  -   -  -
6207  46 146 246 346 146 46   -  -   -  -
6208  48 148 248 348 148 48 248 48   -  -
6209  50 150 250 350 150 50   -  - 350 50
6210  52 152 252 352 152 52   -  -   -  -
6211  54 154 254 354 154 54 254 54   -  -
6212  56 156 256 356 156 56   -  -   -  -
6213  58 158 258 358 158 58   -  -   -  -
6214  60 160 260 360 160 60 260 60 360 60
6215  62 162 262 362 162 62   -  -   -  -
6216  64 164 264 364 164 64   -  -   -  -
6217  66 166 266 366 166 66 266 66   -  -
6218  68 168 268 368 168 68   -  -   -  -
6219  70 170 270 370 170 70   -  - 370 70
6220  72 172 272 372 172 72 272 72   -  -
6221  74 174 274 374 174 74   -  -   -  -
6222  76 176 276 376 176 76   -  -   -  -
6223  78 178 278 378 178 78 278 78   -  -
6224  80 180 280 380 180 80   -  - 380 80
6225  82 182 282 382 182 82   -  -   -  -
6226  84 184 284 384 184 84 284 84   -  -
6227  86 186 286 386 186 86   -  -   -  -
6228  88 188 288 388 188 88   -  -   -  -
6229  90 190 290 390 190 90 290 90 390 90
6230  92 192 292 392 192 92   -  -   -  -
6231  94 194 294 394 194 94   -  -   -  -
6232   -   -   -   -   -  - 200  0   -  -
6233   -   -   -   -   -  - 203  3   -  -
6234   -   -   -   -   -  - 209  9   -  -
6235   -   -   -   -   -  - 215 15   -  -
6236   -   -   -   -   -  - 221 21   -  -
6237   -   -   -   -   -  - 227 27   -  -
6238   -   -   -   -   -  - 233 33   -  -
6239   -   -   -   -   -  - 239 39   -  -
6240   -   -   -   -   -  - 245 45   -  -
6241   -   -   -   -   -  - 251 51   -  -
6242   -   -   -   -   -  - 257 57   -  -
6243   -   -   -   -   -  - 263 63   -  -
6244   -   -   -   -   -  - 269 69   -  -
6245   -   -   -   -   -  - 275 75   -  -
6246   -   -   -   -   -  - 281 81   -  -
6247   -   -   -   -   -  - 287 87   -  -
6248   -   -   -   -   -  - 293 93   -  -
6249}
6250do_execsql_test joinD-249 {
6251  SELECT t1.*, t2.*, t3.*, t4.*
6252  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6253  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6254  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6255  WHERE t2.x>0
6256  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6257} {
6258   2 102 202 302 102  2   -  -   -  -
6259   4 104 204 304 104  4   -  -   -  -
6260   6 106 206 306 106  6 206  6   -  -
6261   8 108 208 308 108  8   -  -   -  -
6262  10 110 210 310 110 10   -  - 310 10
6263  12 112 212 312 112 12 212 12   -  -
6264  14 114 214 314 114 14   -  -   -  -
6265  16 116 216 316 116 16   -  -   -  -
6266  18 118 218 318 118 18 218 18   -  -
6267  20 120 220 320 120 20   -  - 320 20
6268  22 122 222 322 122 22   -  -   -  -
6269  24 124 224 324 124 24 224 24   -  -
6270  26 126 226 326 126 26   -  -   -  -
6271  28 128 228 328 128 28   -  -   -  -
6272  30 130 230 330 130 30 230 30 330 30
6273  32 132 232 332 132 32   -  -   -  -
6274  34 134 234 334 134 34   -  -   -  -
6275  36 136 236 336 136 36 236 36   -  -
6276  38 138 238 338 138 38   -  -   -  -
6277  40 140 240 340 140 40   -  - 340 40
6278  42 142 242 342 142 42 242 42   -  -
6279  44 144 244 344 144 44   -  -   -  -
6280  46 146 246 346 146 46   -  -   -  -
6281  48 148 248 348 148 48 248 48   -  -
6282  50 150 250 350 150 50   -  - 350 50
6283  52 152 252 352 152 52   -  -   -  -
6284  54 154 254 354 154 54 254 54   -  -
6285  56 156 256 356 156 56   -  -   -  -
6286  58 158 258 358 158 58   -  -   -  -
6287  60 160 260 360 160 60 260 60 360 60
6288  62 162 262 362 162 62   -  -   -  -
6289  64 164 264 364 164 64   -  -   -  -
6290  66 166 266 366 166 66 266 66   -  -
6291  68 168 268 368 168 68   -  -   -  -
6292  70 170 270 370 170 70   -  - 370 70
6293  72 172 272 372 172 72 272 72   -  -
6294  74 174 274 374 174 74   -  -   -  -
6295  76 176 276 376 176 76   -  -   -  -
6296  78 178 278 378 178 78 278 78   -  -
6297  80 180 280 380 180 80   -  - 380 80
6298  82 182 282 382 182 82   -  -   -  -
6299  84 184 284 384 184 84 284 84   -  -
6300  86 186 286 386 186 86   -  -   -  -
6301  88 188 288 388 188 88   -  -   -  -
6302  90 190 290 390 190 90 290 90 390 90
6303  92 192 292 392 192 92   -  -   -  -
6304  94 194 294 394 194 94   -  -   -  -
6305}
6306do_execsql_test joinD-250 {
6307  SELECT t1.*, t2.*, t3.*, t4.*
6308  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6309  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6310  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6311  WHERE (t2.x>0 OR t2.x IS NULL)
6312  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6313} {
6314   2 102 202 302 102  2   -  -   -  -
6315   4 104 204 304 104  4   -  -   -  -
6316   6 106 206 306 106  6 206  6   -  -
6317   8 108 208 308 108  8   -  -   -  -
6318  10 110 210 310 110 10   -  - 310 10
6319  12 112 212 312 112 12 212 12   -  -
6320  14 114 214 314 114 14   -  -   -  -
6321  16 116 216 316 116 16   -  -   -  -
6322  18 118 218 318 118 18 218 18   -  -
6323  20 120 220 320 120 20   -  - 320 20
6324  22 122 222 322 122 22   -  -   -  -
6325  24 124 224 324 124 24 224 24   -  -
6326  26 126 226 326 126 26   -  -   -  -
6327  28 128 228 328 128 28   -  -   -  -
6328  30 130 230 330 130 30 230 30 330 30
6329  32 132 232 332 132 32   -  -   -  -
6330  34 134 234 334 134 34   -  -   -  -
6331  36 136 236 336 136 36 236 36   -  -
6332  38 138 238 338 138 38   -  -   -  -
6333  40 140 240 340 140 40   -  - 340 40
6334  42 142 242 342 142 42 242 42   -  -
6335  44 144 244 344 144 44   -  -   -  -
6336  46 146 246 346 146 46   -  -   -  -
6337  48 148 248 348 148 48 248 48   -  -
6338  50 150 250 350 150 50   -  - 350 50
6339  52 152 252 352 152 52   -  -   -  -
6340  54 154 254 354 154 54 254 54   -  -
6341  56 156 256 356 156 56   -  -   -  -
6342  58 158 258 358 158 58   -  -   -  -
6343  60 160 260 360 160 60 260 60 360 60
6344  62 162 262 362 162 62   -  -   -  -
6345  64 164 264 364 164 64   -  -   -  -
6346  66 166 266 366 166 66 266 66   -  -
6347  68 168 268 368 168 68   -  -   -  -
6348  70 170 270 370 170 70   -  - 370 70
6349  72 172 272 372 172 72 272 72   -  -
6350  74 174 274 374 174 74   -  -   -  -
6351  76 176 276 376 176 76   -  -   -  -
6352  78 178 278 378 178 78 278 78   -  -
6353  80 180 280 380 180 80   -  - 380 80
6354  82 182 282 382 182 82   -  -   -  -
6355  84 184 284 384 184 84 284 84   -  -
6356  86 186 286 386 186 86   -  -   -  -
6357  88 188 288 388 188 88   -  -   -  -
6358  90 190 290 390 190 90 290 90 390 90
6359  92 192 292 392 192 92   -  -   -  -
6360  94 194 294 394 194 94   -  -   -  -
6361   -   -   -   -   -  - 200  0   -  -
6362   -   -   -   -   -  - 203  3   -  -
6363   -   -   -   -   -  - 209  9   -  -
6364   -   -   -   -   -  - 215 15   -  -
6365   -   -   -   -   -  - 221 21   -  -
6366   -   -   -   -   -  - 227 27   -  -
6367   -   -   -   -   -  - 233 33   -  -
6368   -   -   -   -   -  - 239 39   -  -
6369   -   -   -   -   -  - 245 45   -  -
6370   -   -   -   -   -  - 251 51   -  -
6371   -   -   -   -   -  - 257 57   -  -
6372   -   -   -   -   -  - 263 63   -  -
6373   -   -   -   -   -  - 269 69   -  -
6374   -   -   -   -   -  - 275 75   -  -
6375   -   -   -   -   -  - 281 81   -  -
6376   -   -   -   -   -  - 287 87   -  -
6377   -   -   -   -   -  - 293 93   -  -
6378}
6379do_execsql_test joinD-251 {
6380  SELECT t1.*, t2.*, t3.*, t4.*
6381  FROM t1 INNER JOIN t2 ON true
6382  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6383  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6384  WHERE t1.b=t2.b AND t2.x>0
6385  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6386} {
6387   2 102 202 302 102  2   -  -   -  -
6388   4 104 204 304 104  4   -  -   -  -
6389   6 106 206 306 106  6 206  6   -  -
6390   8 108 208 308 108  8   -  -   -  -
6391  10 110 210 310 110 10   -  - 310 10
6392  12 112 212 312 112 12 212 12   -  -
6393  14 114 214 314 114 14   -  -   -  -
6394  16 116 216 316 116 16   -  -   -  -
6395  18 118 218 318 118 18 218 18   -  -
6396  20 120 220 320 120 20   -  - 320 20
6397  22 122 222 322 122 22   -  -   -  -
6398  24 124 224 324 124 24 224 24   -  -
6399  26 126 226 326 126 26   -  -   -  -
6400  28 128 228 328 128 28   -  -   -  -
6401  30 130 230 330 130 30 230 30 330 30
6402  32 132 232 332 132 32   -  -   -  -
6403  34 134 234 334 134 34   -  -   -  -
6404  36 136 236 336 136 36 236 36   -  -
6405  38 138 238 338 138 38   -  -   -  -
6406  40 140 240 340 140 40   -  - 340 40
6407  42 142 242 342 142 42 242 42   -  -
6408  44 144 244 344 144 44   -  -   -  -
6409  46 146 246 346 146 46   -  -   -  -
6410  48 148 248 348 148 48 248 48   -  -
6411  50 150 250 350 150 50   -  - 350 50
6412  52 152 252 352 152 52   -  -   -  -
6413  54 154 254 354 154 54 254 54   -  -
6414  56 156 256 356 156 56   -  -   -  -
6415  58 158 258 358 158 58   -  -   -  -
6416  60 160 260 360 160 60 260 60 360 60
6417  62 162 262 362 162 62   -  -   -  -
6418  64 164 264 364 164 64   -  -   -  -
6419  66 166 266 366 166 66 266 66   -  -
6420  68 168 268 368 168 68   -  -   -  -
6421  70 170 270 370 170 70   -  - 370 70
6422  72 172 272 372 172 72 272 72   -  -
6423  74 174 274 374 174 74   -  -   -  -
6424  76 176 276 376 176 76   -  -   -  -
6425  78 178 278 378 178 78 278 78   -  -
6426  80 180 280 380 180 80   -  - 380 80
6427  82 182 282 382 182 82   -  -   -  -
6428  84 184 284 384 184 84 284 84   -  -
6429  86 186 286 386 186 86   -  -   -  -
6430  88 188 288 388 188 88   -  -   -  -
6431  90 190 290 390 190 90 290 90 390 90
6432  92 192 292 392 192 92   -  -   -  -
6433  94 194 294 394 194 94   -  -   -  -
6434}
6435do_execsql_test joinD-252 {
6436  SELECT t1.*, t2.*, t3.*, t4.*
6437  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6438  FULL JOIN t3 ON t1.c=t3.c
6439  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6440  WHERE t3.y>0
6441  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6442} {
6443   6 106 206 306 106  6 206  6   -  -
6444  12 112 212 312 112 12 212 12   -  -
6445  18 118 218 318 118 18 218 18   -  -
6446  24 124 224 324 124 24 224 24   -  -
6447  30 130 230 330 130 30 230 30 330 30
6448  36 136 236 336 136 36 236 36   -  -
6449  42 142 242 342 142 42 242 42   -  -
6450  48 148 248 348 148 48 248 48   -  -
6451  54 154 254 354 154 54 254 54   -  -
6452  60 160 260 360 160 60 260 60 360 60
6453  66 166 266 366 166 66 266 66   -  -
6454  72 172 272 372 172 72 272 72   -  -
6455  78 178 278 378 178 78 278 78   -  -
6456  84 184 284 384 184 84 284 84   -  -
6457  90 190 290 390 190 90 290 90 390 90
6458   -   -   -   -   -  - 203  3   -  -
6459   -   -   -   -   -  - 209  9   -  -
6460   -   -   -   -   -  - 215 15   -  -
6461   -   -   -   -   -  - 221 21   -  -
6462   -   -   -   -   -  - 227 27   -  -
6463   -   -   -   -   -  - 233 33   -  -
6464   -   -   -   -   -  - 239 39   -  -
6465   -   -   -   -   -  - 245 45   -  -
6466   -   -   -   -   -  - 251 51   -  -
6467   -   -   -   -   -  - 257 57   -  -
6468   -   -   -   -   -  - 263 63   -  -
6469   -   -   -   -   -  - 269 69   -  -
6470   -   -   -   -   -  - 275 75   -  -
6471   -   -   -   -   -  - 281 81   -  -
6472   -   -   -   -   -  - 287 87   -  -
6473   -   -   -   -   -  - 293 93   -  -
6474}
6475do_execsql_test joinD-253 {
6476  SELECT t1.*, t2.*, t3.*, t4.*
6477  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6478  FULL JOIN t3 ON t1.c=t3.c
6479  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6480  WHERE t3.y>0 OR t3.y IS NULL
6481  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6482} {
6483   2 102 202 302 102  2   -  -   -  -
6484   4 104 204 304 104  4   -  -   -  -
6485   6 106 206 306 106  6 206  6   -  -
6486   8 108 208 308 108  8   -  -   -  -
6487  10 110 210 310 110 10   -  - 310 10
6488  12 112 212 312 112 12 212 12   -  -
6489  14 114 214 314 114 14   -  -   -  -
6490  16 116 216 316 116 16   -  -   -  -
6491  18 118 218 318 118 18 218 18   -  -
6492  20 120 220 320 120 20   -  - 320 20
6493  22 122 222 322 122 22   -  -   -  -
6494  24 124 224 324 124 24 224 24   -  -
6495  26 126 226 326 126 26   -  -   -  -
6496  28 128 228 328 128 28   -  -   -  -
6497  30 130 230 330 130 30 230 30 330 30
6498  32 132 232 332 132 32   -  -   -  -
6499  34 134 234 334 134 34   -  -   -  -
6500  36 136 236 336 136 36 236 36   -  -
6501  38 138 238 338 138 38   -  -   -  -
6502  40 140 240 340 140 40   -  - 340 40
6503  42 142 242 342 142 42 242 42   -  -
6504  44 144 244 344 144 44   -  -   -  -
6505  46 146 246 346 146 46   -  -   -  -
6506  48 148 248 348 148 48 248 48   -  -
6507  50 150 250 350 150 50   -  - 350 50
6508  52 152 252 352 152 52   -  -   -  -
6509  54 154 254 354 154 54 254 54   -  -
6510  56 156 256 356 156 56   -  -   -  -
6511  58 158 258 358 158 58   -  -   -  -
6512  60 160 260 360 160 60 260 60 360 60
6513  62 162 262 362 162 62   -  -   -  -
6514  64 164 264 364 164 64   -  -   -  -
6515  66 166 266 366 166 66 266 66   -  -
6516  68 168 268 368 168 68   -  -   -  -
6517  70 170 270 370 170 70   -  - 370 70
6518  72 172 272 372 172 72 272 72   -  -
6519  74 174 274 374 174 74   -  -   -  -
6520  76 176 276 376 176 76   -  -   -  -
6521  78 178 278 378 178 78 278 78   -  -
6522  80 180 280 380 180 80   -  - 380 80
6523  82 182 282 382 182 82   -  -   -  -
6524  84 184 284 384 184 84 284 84   -  -
6525  86 186 286 386 186 86   -  -   -  -
6526  88 188 288 388 188 88   -  -   -  -
6527  90 190 290 390 190 90 290 90 390 90
6528  92 192 292 392 192 92   -  -   -  -
6529  94 194 294 394 194 94   -  -   -  -
6530   -   -   -   -   -  - 203  3   -  -
6531   -   -   -   -   -  - 209  9   -  -
6532   -   -   -   -   -  - 215 15   -  -
6533   -   -   -   -   -  - 221 21   -  -
6534   -   -   -   -   -  - 227 27   -  -
6535   -   -   -   -   -  - 233 33   -  -
6536   -   -   -   -   -  - 239 39   -  -
6537   -   -   -   -   -  - 245 45   -  -
6538   -   -   -   -   -  - 251 51   -  -
6539   -   -   -   -   -  - 257 57   -  -
6540   -   -   -   -   -  - 263 63   -  -
6541   -   -   -   -   -  - 269 69   -  -
6542   -   -   -   -   -  - 275 75   -  -
6543   -   -   -   -   -  - 281 81   -  -
6544   -   -   -   -   -  - 287 87   -  -
6545   -   -   -   -   -  - 293 93   -  -
6546}
6547do_execsql_test joinD-254 {
6548  SELECT t1.*, t2.*, t3.*, t4.*
6549  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6550  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6551  LEFT JOIN t4 ON t1.d=t4.d
6552  WHERE t4.z>0
6553  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6554} {
6555  10 110 210 310 110 10   -  - 310 10
6556  20 120 220 320 120 20   -  - 320 20
6557  30 130 230 330 130 30 230 30 330 30
6558  40 140 240 340 140 40   -  - 340 40
6559  50 150 250 350 150 50   -  - 350 50
6560  60 160 260 360 160 60 260 60 360 60
6561  70 170 270 370 170 70   -  - 370 70
6562  80 180 280 380 180 80   -  - 380 80
6563  90 190 290 390 190 90 290 90 390 90
6564}
6565do_execsql_test joinD-255 {
6566  SELECT t1.*, t2.*, t3.*, t4.*
6567  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6568  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6569  LEFT JOIN t4 ON t1.d=t4.d
6570  WHERE t4.z IS NULL OR t4.z>0
6571  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6572} {
6573   2 102 202 302 102  2   -  -   -  -
6574   4 104 204 304 104  4   -  -   -  -
6575   6 106 206 306 106  6 206  6   -  -
6576   8 108 208 308 108  8   -  -   -  -
6577  10 110 210 310 110 10   -  - 310 10
6578  12 112 212 312 112 12 212 12   -  -
6579  14 114 214 314 114 14   -  -   -  -
6580  16 116 216 316 116 16   -  -   -  -
6581  18 118 218 318 118 18 218 18   -  -
6582  20 120 220 320 120 20   -  - 320 20
6583  22 122 222 322 122 22   -  -   -  -
6584  24 124 224 324 124 24 224 24   -  -
6585  26 126 226 326 126 26   -  -   -  -
6586  28 128 228 328 128 28   -  -   -  -
6587  30 130 230 330 130 30 230 30 330 30
6588  32 132 232 332 132 32   -  -   -  -
6589  34 134 234 334 134 34   -  -   -  -
6590  36 136 236 336 136 36 236 36   -  -
6591  38 138 238 338 138 38   -  -   -  -
6592  40 140 240 340 140 40   -  - 340 40
6593  42 142 242 342 142 42 242 42   -  -
6594  44 144 244 344 144 44   -  -   -  -
6595  46 146 246 346 146 46   -  -   -  -
6596  48 148 248 348 148 48 248 48   -  -
6597  50 150 250 350 150 50   -  - 350 50
6598  52 152 252 352 152 52   -  -   -  -
6599  54 154 254 354 154 54 254 54   -  -
6600  56 156 256 356 156 56   -  -   -  -
6601  58 158 258 358 158 58   -  -   -  -
6602  60 160 260 360 160 60 260 60 360 60
6603  62 162 262 362 162 62   -  -   -  -
6604  64 164 264 364 164 64   -  -   -  -
6605  66 166 266 366 166 66 266 66   -  -
6606  68 168 268 368 168 68   -  -   -  -
6607  70 170 270 370 170 70   -  - 370 70
6608  72 172 272 372 172 72 272 72   -  -
6609  74 174 274 374 174 74   -  -   -  -
6610  76 176 276 376 176 76   -  -   -  -
6611  78 178 278 378 178 78 278 78   -  -
6612  80 180 280 380 180 80   -  - 380 80
6613  82 182 282 382 182 82   -  -   -  -
6614  84 184 284 384 184 84 284 84   -  -
6615  86 186 286 386 186 86   -  -   -  -
6616  88 188 288 388 188 88   -  -   -  -
6617  90 190 290 390 190 90 290 90 390 90
6618  92 192 292 392 192 92   -  -   -  -
6619  94 194 294 394 194 94   -  -   -  -
6620   -   -   -   -   -  - 200  0   -  -
6621   -   -   -   -   -  - 203  3   -  -
6622   -   -   -   -   -  - 209  9   -  -
6623   -   -   -   -   -  - 215 15   -  -
6624   -   -   -   -   -  - 221 21   -  -
6625   -   -   -   -   -  - 227 27   -  -
6626   -   -   -   -   -  - 233 33   -  -
6627   -   -   -   -   -  - 239 39   -  -
6628   -   -   -   -   -  - 245 45   -  -
6629   -   -   -   -   -  - 251 51   -  -
6630   -   -   -   -   -  - 257 57   -  -
6631   -   -   -   -   -  - 263 63   -  -
6632   -   -   -   -   -  - 269 69   -  -
6633   -   -   -   -   -  - 275 75   -  -
6634   -   -   -   -   -  - 281 81   -  -
6635   -   -   -   -   -  - 287 87   -  -
6636   -   -   -   -   -  - 293 93   -  -
6637}
6638do_execsql_test joinD-256 {
6639  SELECT t1.*, t2.*, t3.*, t4.*
6640  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6641  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6642  LEFT JOIN t4 ON t1.d=t4.d
6643  WHERE t2.x>0 AND t4.z>0
6644  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6645} {
6646  10 110 210 310 110 10   -  - 310 10
6647  20 120 220 320 120 20   -  - 320 20
6648  30 130 230 330 130 30 230 30 330 30
6649  40 140 240 340 140 40   -  - 340 40
6650  50 150 250 350 150 50   -  - 350 50
6651  60 160 260 360 160 60 260 60 360 60
6652  70 170 270 370 170 70   -  - 370 70
6653  80 180 280 380 180 80   -  - 380 80
6654  90 190 290 390 190 90 290 90 390 90
6655}
6656do_execsql_test joinD-257 {
6657  SELECT t1.*, t2.*, t3.*, t4.*
6658  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6659  FULL JOIN t3 ON t1.c=t3.c
6660  LEFT JOIN t4 ON t1.d=t4.d
6661  WHERE t4.z>0 AND t3.y>0
6662  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6663} {
6664  30 130 230 330 130 30 230 30 330 30
6665  60 160 260 360 160 60 260 60 360 60
6666  90 190 290 390 190 90 290 90 390 90
6667}
6668do_execsql_test joinD-258 {
6669  SELECT t1.*, t2.*, t3.*, t4.*
6670  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6671  FULL JOIN t3 ON t1.c=t3.c
6672  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6673  WHERE t2.x>0 AND t3.y>0
6674  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6675} {
6676   6 106 206 306 106  6 206  6   -  -
6677  12 112 212 312 112 12 212 12   -  -
6678  18 118 218 318 118 18 218 18   -  -
6679  24 124 224 324 124 24 224 24   -  -
6680  30 130 230 330 130 30 230 30 330 30
6681  36 136 236 336 136 36 236 36   -  -
6682  42 142 242 342 142 42 242 42   -  -
6683  48 148 248 348 148 48 248 48   -  -
6684  54 154 254 354 154 54 254 54   -  -
6685  60 160 260 360 160 60 260 60 360 60
6686  66 166 266 366 166 66 266 66   -  -
6687  72 172 272 372 172 72 272 72   -  -
6688  78 178 278 378 178 78 278 78   -  -
6689  84 184 284 384 184 84 284 84   -  -
6690  90 190 290 390 190 90 290 90 390 90
6691}
6692do_execsql_test joinD-259 {
6693  SELECT t1.*, t2.*, t3.*, t4.*
6694  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6695  FULL JOIN t3 ON t1.c=t3.c
6696  LEFT JOIN t4 ON t1.d=t4.d
6697  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
6698  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6699} {
6700  30 130 230 330 130 30 230 30 330 30
6701  60 160 260 360 160 60 260 60 360 60
6702  90 190 290 390 190 90 290 90 390 90
6703}
6704do_execsql_test joinD-260 {
6705  SELECT t1.*, t2.*, t3.*, t4.*
6706  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6707  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6708  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6709  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6710} {
6711   2 102 202 302 102  2   -  -   -  -
6712   4 104 204 304 104  4   -  -   -  -
6713   6 106 206 306 106  6 206  6   -  -
6714   8 108 208 308 108  8   -  -   -  -
6715  10 110 210 310 110 10   -  - 310 10
6716  12 112 212 312 112 12 212 12   -  -
6717  14 114 214 314 114 14   -  -   -  -
6718  16 116 216 316 116 16   -  -   -  -
6719  18 118 218 318 118 18 218 18   -  -
6720  20 120 220 320 120 20   -  - 320 20
6721  22 122 222 322 122 22   -  -   -  -
6722  24 124 224 324 124 24 224 24   -  -
6723  26 126 226 326 126 26   -  -   -  -
6724  28 128 228 328 128 28   -  -   -  -
6725  30 130 230 330 130 30 230 30 330 30
6726  32 132 232 332 132 32   -  -   -  -
6727  34 134 234 334 134 34   -  -   -  -
6728  36 136 236 336 136 36 236 36   -  -
6729  38 138 238 338 138 38   -  -   -  -
6730  40 140 240 340 140 40   -  - 340 40
6731  42 142 242 342 142 42 242 42   -  -
6732  44 144 244 344 144 44   -  -   -  -
6733  46 146 246 346 146 46   -  -   -  -
6734  48 148 248 348 148 48 248 48   -  -
6735  50 150 250 350 150 50   -  - 350 50
6736  52 152 252 352 152 52   -  -   -  -
6737  54 154 254 354 154 54 254 54   -  -
6738  56 156 256 356 156 56   -  -   -  -
6739  58 158 258 358 158 58   -  -   -  -
6740  60 160 260 360 160 60 260 60 360 60
6741  62 162 262 362 162 62   -  -   -  -
6742  64 164 264 364 164 64   -  -   -  -
6743  66 166 266 366 166 66 266 66   -  -
6744  68 168 268 368 168 68   -  -   -  -
6745  70 170 270 370 170 70   -  - 370 70
6746  72 172 272 372 172 72 272 72   -  -
6747  74 174 274 374 174 74   -  -   -  -
6748  76 176 276 376 176 76   -  -   -  -
6749  78 178 278 378 178 78 278 78   -  -
6750  80 180 280 380 180 80   -  - 380 80
6751  82 182 282 382 182 82   -  -   -  -
6752  84 184 284 384 184 84 284 84   -  -
6753  86 186 286 386 186 86   -  -   -  -
6754  88 188 288 388 188 88   -  -   -  -
6755  90 190 290 390 190 90 290 90 390 90
6756  92 192 292 392 192 92   -  -   -  -
6757  94 194 294 394 194 94   -  -   -  -
6758   -   -   -   -   -  - 200  0   -  -
6759   -   -   -   -   -  - 203  3   -  -
6760   -   -   -   -   -  - 209  9   -  -
6761   -   -   -   -   -  - 215 15   -  -
6762   -   -   -   -   -  - 221 21   -  -
6763   -   -   -   -   -  - 227 27   -  -
6764   -   -   -   -   -  - 233 33   -  -
6765   -   -   -   -   -  - 239 39   -  -
6766   -   -   -   -   -  - 245 45   -  -
6767   -   -   -   -   -  - 251 51   -  -
6768   -   -   -   -   -  - 257 57   -  -
6769   -   -   -   -   -  - 263 63   -  -
6770   -   -   -   -   -  - 269 69   -  -
6771   -   -   -   -   -  - 275 75   -  -
6772   -   -   -   -   -  - 281 81   -  -
6773   -   -   -   -   -  - 287 87   -  -
6774   -   -   -   -   -  - 293 93   -  -
6775}
6776do_execsql_test joinD-261 {
6777  SELECT t1.*, t2.*, t3.*, t4.*
6778  FROM t1 INNER JOIN t2 ON t2.x>0
6779  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6780  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6781  WHERE t1.b IS NOT DISTINCT FROM t2.b
6782  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6783} {
6784   2 102 202 302 102  2   -  -   -  -
6785   4 104 204 304 104  4   -  -   -  -
6786   6 106 206 306 106  6 206  6   -  -
6787   8 108 208 308 108  8   -  -   -  -
6788  10 110 210 310 110 10   -  - 310 10
6789  12 112 212 312 112 12 212 12   -  -
6790  14 114 214 314 114 14   -  -   -  -
6791  16 116 216 316 116 16   -  -   -  -
6792  18 118 218 318 118 18 218 18   -  -
6793  20 120 220 320 120 20   -  - 320 20
6794  22 122 222 322 122 22   -  -   -  -
6795  24 124 224 324 124 24 224 24   -  -
6796  26 126 226 326 126 26   -  -   -  -
6797  28 128 228 328 128 28   -  -   -  -
6798  30 130 230 330 130 30 230 30 330 30
6799  32 132 232 332 132 32   -  -   -  -
6800  34 134 234 334 134 34   -  -   -  -
6801  36 136 236 336 136 36 236 36   -  -
6802  38 138 238 338 138 38   -  -   -  -
6803  40 140 240 340 140 40   -  - 340 40
6804  42 142 242 342 142 42 242 42   -  -
6805  44 144 244 344 144 44   -  -   -  -
6806  46 146 246 346 146 46   -  -   -  -
6807  48 148 248 348 148 48 248 48   -  -
6808  50 150 250 350 150 50   -  - 350 50
6809  52 152 252 352 152 52   -  -   -  -
6810  54 154 254 354 154 54 254 54   -  -
6811  56 156 256 356 156 56   -  -   -  -
6812  58 158 258 358 158 58   -  -   -  -
6813  60 160 260 360 160 60 260 60 360 60
6814  62 162 262 362 162 62   -  -   -  -
6815  64 164 264 364 164 64   -  -   -  -
6816  66 166 266 366 166 66 266 66   -  -
6817  68 168 268 368 168 68   -  -   -  -
6818  70 170 270 370 170 70   -  - 370 70
6819  72 172 272 372 172 72 272 72   -  -
6820  74 174 274 374 174 74   -  -   -  -
6821  76 176 276 376 176 76   -  -   -  -
6822  78 178 278 378 178 78 278 78   -  -
6823  80 180 280 380 180 80   -  - 380 80
6824  82 182 282 382 182 82   -  -   -  -
6825  84 184 284 384 184 84 284 84   -  -
6826  86 186 286 386 186 86   -  -   -  -
6827  88 188 288 388 188 88   -  -   -  -
6828  90 190 290 390 190 90 290 90 390 90
6829  92 192 292 392 192 92   -  -   -  -
6830  94 194 294 394 194 94   -  -   -  -
6831   -   -   -   -   -  - 200  0   -  -
6832}
6833do_execsql_test joinD-262 {
6834  SELECT t1.*, t2.*, t3.*, t4.*
6835  FROM t1 INNER JOIN t2 ON t2.x>0
6836  FULL JOIN t3 ON t3.y>0
6837  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6838  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
6839  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6840} {
6841   6 106 206 306 106  6 206  6   -  -
6842  12 112 212 312 112 12 212 12   -  -
6843  18 118 218 318 118 18 218 18   -  -
6844  24 124 224 324 124 24 224 24   -  -
6845  30 130 230 330 130 30 230 30 330 30
6846  36 136 236 336 136 36 236 36   -  -
6847  42 142 242 342 142 42 242 42   -  -
6848  48 148 248 348 148 48 248 48   -  -
6849  54 154 254 354 154 54 254 54   -  -
6850  60 160 260 360 160 60 260 60 360 60
6851  66 166 266 366 166 66 266 66   -  -
6852  72 172 272 372 172 72 272 72   -  -
6853  78 178 278 378 178 78 278 78   -  -
6854  84 184 284 384 184 84 284 84   -  -
6855  90 190 290 390 190 90 290 90 390 90
6856}
6857do_execsql_test joinD-263 {
6858  SELECT t1.*, t2.*, t3.*, t4.*
6859  FROM t1 INNER JOIN t2 ON t2.x>0
6860  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6861  LEFT JOIN t4 ON t4.z>0
6862  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
6863  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6864} {
6865  10 110 210 310 110 10   -  - 310 10
6866  20 120 220 320 120 20   -  - 320 20
6867  30 130 230 330 130 30 230 30 330 30
6868  40 140 240 340 140 40   -  - 340 40
6869  50 150 250 350 150 50   -  - 350 50
6870  60 160 260 360 160 60 260 60 360 60
6871  70 170 270 370 170 70   -  - 370 70
6872  80 180 280 380 180 80   -  - 380 80
6873  90 190 290 390 190 90 290 90 390 90
6874}
6875do_execsql_test joinD-264 {
6876  SELECT t1.*, t2.*, t3.*, t4.*
6877  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
6878  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6879  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6880  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6881} {
6882   2 102 202 302 102  2   -  -   -  -
6883   4 104 204 304 104  4   -  -   -  -
6884   6 106 206 306 106  6 206  6   -  -
6885   8 108 208 308 108  8   -  -   -  -
6886  10 110 210 310 110 10   -  - 310 10
6887  12 112 212 312 112 12 212 12   -  -
6888  14 114 214 314 114 14   -  -   -  -
6889  16 116 216 316 116 16   -  -   -  -
6890  18 118 218 318 118 18 218 18   -  -
6891  20 120 220 320 120 20   -  - 320 20
6892  22 122 222 322 122 22   -  -   -  -
6893  24 124 224 324 124 24 224 24   -  -
6894  26 126 226 326 126 26   -  -   -  -
6895  28 128 228 328 128 28   -  -   -  -
6896  30 130 230 330 130 30 230 30 330 30
6897  32 132 232 332 132 32   -  -   -  -
6898  34 134 234 334 134 34   -  -   -  -
6899  36 136 236 336 136 36 236 36   -  -
6900  38 138 238 338 138 38   -  -   -  -
6901  40 140 240 340 140 40   -  - 340 40
6902  42 142 242 342 142 42 242 42   -  -
6903  44 144 244 344 144 44   -  -   -  -
6904  46 146 246 346 146 46   -  -   -  -
6905  48 148 248 348 148 48 248 48   -  -
6906  50 150 250 350 150 50   -  - 350 50
6907  52 152 252 352 152 52   -  -   -  -
6908  54 154 254 354 154 54 254 54   -  -
6909  56 156 256 356 156 56   -  -   -  -
6910  58 158 258 358 158 58   -  -   -  -
6911  60 160 260 360 160 60 260 60 360 60
6912  62 162 262 362 162 62   -  -   -  -
6913  64 164 264 364 164 64   -  -   -  -
6914  66 166 266 366 166 66 266 66   -  -
6915  68 168 268 368 168 68   -  -   -  -
6916  70 170 270 370 170 70   -  - 370 70
6917  72 172 272 372 172 72 272 72   -  -
6918  74 174 274 374 174 74   -  -   -  -
6919  76 176 276 376 176 76   -  -   -  -
6920  78 178 278 378 178 78 278 78   -  -
6921  80 180 280 380 180 80   -  - 380 80
6922  82 182 282 382 182 82   -  -   -  -
6923  84 184 284 384 184 84 284 84   -  -
6924  86 186 286 386 186 86   -  -   -  -
6925  88 188 288 388 188 88   -  -   -  -
6926  90 190 290 390 190 90 290 90 390 90
6927  92 192 292 392 192 92   -  -   -  -
6928  94 194 294 394 194 94   -  -   -  -
6929   -   -   -   -   -  - 200  0   -  -
6930   -   -   -   -   -  - 203  3   -  -
6931   -   -   -   -   -  - 209  9   -  -
6932   -   -   -   -   -  - 215 15   -  -
6933   -   -   -   -   -  - 221 21   -  -
6934   -   -   -   -   -  - 227 27   -  -
6935   -   -   -   -   -  - 233 33   -  -
6936   -   -   -   -   -  - 239 39   -  -
6937   -   -   -   -   -  - 245 45   -  -
6938   -   -   -   -   -  - 251 51   -  -
6939   -   -   -   -   -  - 257 57   -  -
6940   -   -   -   -   -  - 263 63   -  -
6941   -   -   -   -   -  - 269 69   -  -
6942   -   -   -   -   -  - 275 75   -  -
6943   -   -   -   -   -  - 281 81   -  -
6944   -   -   -   -   -  - 287 87   -  -
6945   -   -   -   -   -  - 293 93   -  -
6946}
6947do_execsql_test joinD-265 {
6948  SELECT t1.*, t2.*, t3.*, t4.*
6949  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6950  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6951  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
6952  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6953} {
6954  10 110 210 310 110 10   -  - 310 10
6955  20 120 220 320 120 20   -  - 320 20
6956  30 130 230 330 130 30 230 30 330 30
6957  40 140 240 340 140 40   -  - 340 40
6958  50 150 250 350 150 50   -  - 350 50
6959  60 160 260 360 160 60 260 60 360 60
6960  70 170 270 370 170 70   -  - 370 70
6961  80 180 280 380 180 80   -  - 380 80
6962  90 190 290 390 190 90 290 90 390 90
6963   -   -   -   -   -  -   -  - 300  0
6964   -   -   -   -   -  -   -  - 305  5
6965   -   -   -   -   -  -   -  - 315 15
6966   -   -   -   -   -  -   -  - 325 25
6967   -   -   -   -   -  -   -  - 335 35
6968   -   -   -   -   -  -   -  - 345 45
6969   -   -   -   -   -  -   -  - 355 55
6970   -   -   -   -   -  -   -  - 365 65
6971   -   -   -   -   -  -   -  - 375 75
6972   -   -   -   -   -  -   -  - 385 85
6973   -   -   -   -   -  -   -  - 395 95
6974}
6975do_execsql_test joinD-266 {
6976  SELECT t1.*, t2.*, t3.*, t4.*
6977  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6978  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6979  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
6980  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6981} {
6982  10 110 210 310 110 10   -  - 310 10
6983  20 120 220 320 120 20   -  - 320 20
6984  30 130 230 330 130 30 230 30 330 30
6985  40 140 240 340 140 40   -  - 340 40
6986  50 150 250 350 150 50   -  - 350 50
6987  60 160 260 360 160 60 260 60 360 60
6988  70 170 270 370 170 70   -  - 370 70
6989  80 180 280 380 180 80   -  - 380 80
6990  90 190 290 390 190 90 290 90 390 90
6991   -   -   -   -   -  -   -  - 300  0
6992   -   -   -   -   -  -   -  - 305  5
6993   -   -   -   -   -  -   -  - 315 15
6994   -   -   -   -   -  -   -  - 325 25
6995   -   -   -   -   -  -   -  - 335 35
6996   -   -   -   -   -  -   -  - 345 45
6997   -   -   -   -   -  -   -  - 355 55
6998   -   -   -   -   -  -   -  - 365 65
6999   -   -   -   -   -  -   -  - 375 75
7000   -   -   -   -   -  -   -  - 385 85
7001   -   -   -   -   -  -   -  - 395 95
7002}
7003do_execsql_test joinD-267 {
7004  SELECT t1.*, t2.*, t3.*, t4.*
7005  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7006  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7007  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7008  WHERE t2.x>0
7009  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7010} {
7011  10 110 210 310 110 10   -  - 310 10
7012  20 120 220 320 120 20   -  - 320 20
7013  30 130 230 330 130 30 230 30 330 30
7014  40 140 240 340 140 40   -  - 340 40
7015  50 150 250 350 150 50   -  - 350 50
7016  60 160 260 360 160 60 260 60 360 60
7017  70 170 270 370 170 70   -  - 370 70
7018  80 180 280 380 180 80   -  - 380 80
7019  90 190 290 390 190 90 290 90 390 90
7020}
7021do_execsql_test joinD-268 {
7022  SELECT t1.*, t2.*, t3.*, t4.*
7023  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7024  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7025  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7026  WHERE (t2.x>0 OR t2.x IS NULL)
7027  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7028} {
7029  10 110 210 310 110 10   -  - 310 10
7030  20 120 220 320 120 20   -  - 320 20
7031  30 130 230 330 130 30 230 30 330 30
7032  40 140 240 340 140 40   -  - 340 40
7033  50 150 250 350 150 50   -  - 350 50
7034  60 160 260 360 160 60 260 60 360 60
7035  70 170 270 370 170 70   -  - 370 70
7036  80 180 280 380 180 80   -  - 380 80
7037  90 190 290 390 190 90 290 90 390 90
7038   -   -   -   -   -  -   -  - 300  0
7039   -   -   -   -   -  -   -  - 305  5
7040   -   -   -   -   -  -   -  - 315 15
7041   -   -   -   -   -  -   -  - 325 25
7042   -   -   -   -   -  -   -  - 335 35
7043   -   -   -   -   -  -   -  - 345 45
7044   -   -   -   -   -  -   -  - 355 55
7045   -   -   -   -   -  -   -  - 365 65
7046   -   -   -   -   -  -   -  - 375 75
7047   -   -   -   -   -  -   -  - 385 85
7048   -   -   -   -   -  -   -  - 395 95
7049}
7050do_execsql_test joinD-269 {
7051  SELECT t1.*, t2.*, t3.*, t4.*
7052  FROM t1 INNER JOIN t2 ON true
7053  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7054  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7055  WHERE t1.b=t2.b AND t2.x>0
7056  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7057} {
7058  10 110 210 310 110 10   -  - 310 10
7059  20 120 220 320 120 20   -  - 320 20
7060  30 130 230 330 130 30 230 30 330 30
7061  40 140 240 340 140 40   -  - 340 40
7062  50 150 250 350 150 50   -  - 350 50
7063  60 160 260 360 160 60 260 60 360 60
7064  70 170 270 370 170 70   -  - 370 70
7065  80 180 280 380 180 80   -  - 380 80
7066  90 190 290 390 190 90 290 90 390 90
7067}
7068do_execsql_test joinD-270 {
7069  SELECT t1.*, t2.*, t3.*, t4.*
7070  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7071  FULL JOIN t3 ON t1.c=t3.c
7072  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7073  WHERE t3.y>0
7074  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7075} {
7076  30 130 230 330 130 30 230 30 330 30
7077  60 160 260 360 160 60 260 60 360 60
7078  90 190 290 390 190 90 290 90 390 90
7079}
7080do_execsql_test joinD-271 {
7081  SELECT t1.*, t2.*, t3.*, t4.*
7082  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7083  FULL JOIN t3 ON t1.c=t3.c
7084  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7085  WHERE t3.y>0 OR t3.y IS NULL
7086  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7087} {
7088  10 110 210 310 110 10   -  - 310 10
7089  20 120 220 320 120 20   -  - 320 20
7090  30 130 230 330 130 30 230 30 330 30
7091  40 140 240 340 140 40   -  - 340 40
7092  50 150 250 350 150 50   -  - 350 50
7093  60 160 260 360 160 60 260 60 360 60
7094  70 170 270 370 170 70   -  - 370 70
7095  80 180 280 380 180 80   -  - 380 80
7096  90 190 290 390 190 90 290 90 390 90
7097   -   -   -   -   -  -   -  - 300  0
7098   -   -   -   -   -  -   -  - 305  5
7099   -   -   -   -   -  -   -  - 315 15
7100   -   -   -   -   -  -   -  - 325 25
7101   -   -   -   -   -  -   -  - 335 35
7102   -   -   -   -   -  -   -  - 345 45
7103   -   -   -   -   -  -   -  - 355 55
7104   -   -   -   -   -  -   -  - 365 65
7105   -   -   -   -   -  -   -  - 375 75
7106   -   -   -   -   -  -   -  - 385 85
7107   -   -   -   -   -  -   -  - 395 95
7108}
7109do_execsql_test joinD-272 {
7110  SELECT t1.*, t2.*, t3.*, t4.*
7111  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7112  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7113  RIGHT JOIN t4 ON t1.d=t4.d
7114  WHERE t4.z>0
7115  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7116} {
7117  10 110 210 310 110 10   -  - 310 10
7118  20 120 220 320 120 20   -  - 320 20
7119  30 130 230 330 130 30 230 30 330 30
7120  40 140 240 340 140 40   -  - 340 40
7121  50 150 250 350 150 50   -  - 350 50
7122  60 160 260 360 160 60 260 60 360 60
7123  70 170 270 370 170 70   -  - 370 70
7124  80 180 280 380 180 80   -  - 380 80
7125  90 190 290 390 190 90 290 90 390 90
7126   -   -   -   -   -  -   -  - 305  5
7127   -   -   -   -   -  -   -  - 315 15
7128   -   -   -   -   -  -   -  - 325 25
7129   -   -   -   -   -  -   -  - 335 35
7130   -   -   -   -   -  -   -  - 345 45
7131   -   -   -   -   -  -   -  - 355 55
7132   -   -   -   -   -  -   -  - 365 65
7133   -   -   -   -   -  -   -  - 375 75
7134   -   -   -   -   -  -   -  - 385 85
7135   -   -   -   -   -  -   -  - 395 95
7136}
7137do_execsql_test joinD-273 {
7138  SELECT t1.*, t2.*, t3.*, t4.*
7139  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7140  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7141  RIGHT JOIN t4 ON t1.d=t4.d
7142  WHERE t4.z IS NULL OR t4.z>0
7143  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7144} {
7145  10 110 210 310 110 10   -  - 310 10
7146  20 120 220 320 120 20   -  - 320 20
7147  30 130 230 330 130 30 230 30 330 30
7148  40 140 240 340 140 40   -  - 340 40
7149  50 150 250 350 150 50   -  - 350 50
7150  60 160 260 360 160 60 260 60 360 60
7151  70 170 270 370 170 70   -  - 370 70
7152  80 180 280 380 180 80   -  - 380 80
7153  90 190 290 390 190 90 290 90 390 90
7154   -   -   -   -   -  -   -  - 305  5
7155   -   -   -   -   -  -   -  - 315 15
7156   -   -   -   -   -  -   -  - 325 25
7157   -   -   -   -   -  -   -  - 335 35
7158   -   -   -   -   -  -   -  - 345 45
7159   -   -   -   -   -  -   -  - 355 55
7160   -   -   -   -   -  -   -  - 365 65
7161   -   -   -   -   -  -   -  - 375 75
7162   -   -   -   -   -  -   -  - 385 85
7163   -   -   -   -   -  -   -  - 395 95
7164}
7165do_execsql_test joinD-274 {
7166  SELECT t1.*, t2.*, t3.*, t4.*
7167  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7168  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7169  RIGHT JOIN t4 ON t1.d=t4.d
7170  WHERE t2.x>0 AND t4.z>0
7171  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7172} {
7173  10 110 210 310 110 10   -  - 310 10
7174  20 120 220 320 120 20   -  - 320 20
7175  30 130 230 330 130 30 230 30 330 30
7176  40 140 240 340 140 40   -  - 340 40
7177  50 150 250 350 150 50   -  - 350 50
7178  60 160 260 360 160 60 260 60 360 60
7179  70 170 270 370 170 70   -  - 370 70
7180  80 180 280 380 180 80   -  - 380 80
7181  90 190 290 390 190 90 290 90 390 90
7182}
7183do_execsql_test joinD-275 {
7184  SELECT t1.*, t2.*, t3.*, t4.*
7185  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7186  FULL JOIN t3 ON t1.c=t3.c
7187  RIGHT JOIN t4 ON t1.d=t4.d
7188  WHERE t4.z>0 AND t3.y>0
7189  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7190} {
7191  30 130 230 330 130 30 230 30 330 30
7192  60 160 260 360 160 60 260 60 360 60
7193  90 190 290 390 190 90 290 90 390 90
7194}
7195do_execsql_test joinD-276 {
7196  SELECT t1.*, t2.*, t3.*, t4.*
7197  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7198  FULL JOIN t3 ON t1.c=t3.c
7199  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7200  WHERE t2.x>0 AND t3.y>0
7201  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7202} {
7203  30 130 230 330 130 30 230 30 330 30
7204  60 160 260 360 160 60 260 60 360 60
7205  90 190 290 390 190 90 290 90 390 90
7206}
7207do_execsql_test joinD-277 {
7208  SELECT t1.*, t2.*, t3.*, t4.*
7209  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7210  FULL JOIN t3 ON t1.c=t3.c
7211  RIGHT JOIN t4 ON t1.d=t4.d
7212  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
7213  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7214} {
7215  30 130 230 330 130 30 230 30 330 30
7216  60 160 260 360 160 60 260 60 360 60
7217  90 190 290 390 190 90 290 90 390 90
7218}
7219do_execsql_test joinD-278 {
7220  SELECT t1.*, t2.*, t3.*, t4.*
7221  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
7222  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7223  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
7224  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7225} {
7226  10 110 210 310 110 10   -  - 310 10
7227  20 120 220 320 120 20   -  - 320 20
7228  30 130 230 330 130 30 230 30 330 30
7229  40 140 240 340 140 40   -  - 340 40
7230  50 150 250 350 150 50   -  - 350 50
7231  60 160 260 360 160 60 260 60 360 60
7232  70 170 270 370 170 70   -  - 370 70
7233  80 180 280 380 180 80   -  - 380 80
7234  90 190 290 390 190 90 290 90 390 90
7235   -   -   -   -   -  -   -  - 300  0
7236   -   -   -   -   -  -   -  - 305  5
7237   -   -   -   -   -  -   -  - 315 15
7238   -   -   -   -   -  -   -  - 325 25
7239   -   -   -   -   -  -   -  - 335 35
7240   -   -   -   -   -  -   -  - 345 45
7241   -   -   -   -   -  -   -  - 355 55
7242   -   -   -   -   -  -   -  - 365 65
7243   -   -   -   -   -  -   -  - 375 75
7244   -   -   -   -   -  -   -  - 385 85
7245   -   -   -   -   -  -   -  - 395 95
7246}
7247do_execsql_test joinD-279 {
7248  SELECT t1.*, t2.*, t3.*, t4.*
7249  FROM t1 INNER JOIN t2 ON t2.x>0
7250  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7251  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
7252  WHERE t1.b IS NOT DISTINCT FROM t2.b
7253  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7254} {
7255  10 110 210 310 110 10   -  - 310 10
7256  20 120 220 320 120 20   -  - 320 20
7257  30 130 230 330 130 30 230 30 330 30
7258  40 140 240 340 140 40   -  - 340 40
7259  50 150 250 350 150 50   -  - 350 50
7260  60 160 260 360 160 60 260 60 360 60
7261  70 170 270 370 170 70   -  - 370 70
7262  80 180 280 380 180 80   -  - 380 80
7263  90 190 290 390 190 90 290 90 390 90
7264   -   -   -   -   -  -   -  - 300  0
7265}
7266do_execsql_test joinD-280 {
7267  SELECT t1.*, t2.*, t3.*, t4.*
7268  FROM t1 INNER JOIN t2 ON t2.x>0
7269  FULL JOIN t3 ON t3.y>0
7270  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
7271  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
7272  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7273} {
7274  30 130 230 330 130 30 230 30 330 30
7275  60 160 260 360 160 60 260 60 360 60
7276  90 190 290 390 190 90 290 90 390 90
7277}
7278do_execsql_test joinD-281 {
7279  SELECT t1.*, t2.*, t3.*, t4.*
7280  FROM t1 INNER JOIN t2 ON t2.x>0
7281  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7282  RIGHT JOIN t4 ON t4.z>0
7283  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
7284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7285} {
7286  10 110 210 310 110 10   -  - 310 10
7287  20 120 220 320 120 20   -  - 320 20
7288  30 130 230 330 130 30 230 30 330 30
7289  40 140 240 340 140 40   -  - 340 40
7290  50 150 250 350 150 50   -  - 350 50
7291  60 160 260 360 160 60 260 60 360 60
7292  70 170 270 370 170 70   -  - 370 70
7293  80 180 280 380 180 80   -  - 380 80
7294  90 190 290 390 190 90 290 90 390 90
7295}
7296do_execsql_test joinD-282 {
7297  SELECT t1.*, t2.*, t3.*, t4.*
7298  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
7299  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7300  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7301  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7302} {
7303  10 110 210 310 110 10   -  - 310 10
7304  20 120 220 320 120 20   -  - 320 20
7305  30 130 230 330 130 30 230 30 330 30
7306  40 140 240 340 140 40   -  - 340 40
7307  50 150 250 350 150 50   -  - 350 50
7308  60 160 260 360 160 60 260 60 360 60
7309  70 170 270 370 170 70   -  - 370 70
7310  80 180 280 380 180 80   -  - 380 80
7311  90 190 290 390 190 90 290 90 390 90
7312   -   -   -   -   -  -   -  - 300  0
7313   -   -   -   -   -  -   -  - 305  5
7314   -   -   -   -   -  -   -  - 315 15
7315   -   -   -   -   -  -   -  - 325 25
7316   -   -   -   -   -  -   -  - 335 35
7317   -   -   -   -   -  -   -  - 345 45
7318   -   -   -   -   -  -   -  - 355 55
7319   -   -   -   -   -  -   -  - 365 65
7320   -   -   -   -   -  -   -  - 375 75
7321   -   -   -   -   -  -   -  - 385 85
7322   -   -   -   -   -  -   -  - 395 95
7323}
7324do_execsql_test joinD-283 {
7325  SELECT t1.*, t2.*, t3.*, t4.*
7326  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7327  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7328  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7329  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7330} {
7331   2 102 202 302 102  2   -  -   -  -
7332   4 104 204 304 104  4   -  -   -  -
7333   6 106 206 306 106  6 206  6   -  -
7334   8 108 208 308 108  8   -  -   -  -
7335  10 110 210 310 110 10   -  - 310 10
7336  12 112 212 312 112 12 212 12   -  -
7337  14 114 214 314 114 14   -  -   -  -
7338  16 116 216 316 116 16   -  -   -  -
7339  18 118 218 318 118 18 218 18   -  -
7340  20 120 220 320 120 20   -  - 320 20
7341  22 122 222 322 122 22   -  -   -  -
7342  24 124 224 324 124 24 224 24   -  -
7343  26 126 226 326 126 26   -  -   -  -
7344  28 128 228 328 128 28   -  -   -  -
7345  30 130 230 330 130 30 230 30 330 30
7346  32 132 232 332 132 32   -  -   -  -
7347  34 134 234 334 134 34   -  -   -  -
7348  36 136 236 336 136 36 236 36   -  -
7349  38 138 238 338 138 38   -  -   -  -
7350  40 140 240 340 140 40   -  - 340 40
7351  42 142 242 342 142 42 242 42   -  -
7352  44 144 244 344 144 44   -  -   -  -
7353  46 146 246 346 146 46   -  -   -  -
7354  48 148 248 348 148 48 248 48   -  -
7355  50 150 250 350 150 50   -  - 350 50
7356  52 152 252 352 152 52   -  -   -  -
7357  54 154 254 354 154 54 254 54   -  -
7358  56 156 256 356 156 56   -  -   -  -
7359  58 158 258 358 158 58   -  -   -  -
7360  60 160 260 360 160 60 260 60 360 60
7361  62 162 262 362 162 62   -  -   -  -
7362  64 164 264 364 164 64   -  -   -  -
7363  66 166 266 366 166 66 266 66   -  -
7364  68 168 268 368 168 68   -  -   -  -
7365  70 170 270 370 170 70   -  - 370 70
7366  72 172 272 372 172 72 272 72   -  -
7367  74 174 274 374 174 74   -  -   -  -
7368  76 176 276 376 176 76   -  -   -  -
7369  78 178 278 378 178 78 278 78   -  -
7370  80 180 280 380 180 80   -  - 380 80
7371  82 182 282 382 182 82   -  -   -  -
7372  84 184 284 384 184 84 284 84   -  -
7373  86 186 286 386 186 86   -  -   -  -
7374  88 188 288 388 188 88   -  -   -  -
7375  90 190 290 390 190 90 290 90 390 90
7376  92 192 292 392 192 92   -  -   -  -
7377  94 194 294 394 194 94   -  -   -  -
7378   -   -   -   -   -  - 200  0   -  -
7379   -   -   -   -   -  - 203  3   -  -
7380   -   -   -   -   -  - 209  9   -  -
7381   -   -   -   -   -  - 215 15   -  -
7382   -   -   -   -   -  - 221 21   -  -
7383   -   -   -   -   -  - 227 27   -  -
7384   -   -   -   -   -  - 233 33   -  -
7385   -   -   -   -   -  - 239 39   -  -
7386   -   -   -   -   -  - 245 45   -  -
7387   -   -   -   -   -  - 251 51   -  -
7388   -   -   -   -   -  - 257 57   -  -
7389   -   -   -   -   -  - 263 63   -  -
7390   -   -   -   -   -  - 269 69   -  -
7391   -   -   -   -   -  - 275 75   -  -
7392   -   -   -   -   -  - 281 81   -  -
7393   -   -   -   -   -  - 287 87   -  -
7394   -   -   -   -   -  - 293 93   -  -
7395   -   -   -   -   -  -   -  - 300  0
7396   -   -   -   -   -  -   -  - 305  5
7397   -   -   -   -   -  -   -  - 315 15
7398   -   -   -   -   -  -   -  - 325 25
7399   -   -   -   -   -  -   -  - 335 35
7400   -   -   -   -   -  -   -  - 345 45
7401   -   -   -   -   -  -   -  - 355 55
7402   -   -   -   -   -  -   -  - 365 65
7403   -   -   -   -   -  -   -  - 375 75
7404   -   -   -   -   -  -   -  - 385 85
7405   -   -   -   -   -  -   -  - 395 95
7406}
7407do_execsql_test joinD-284 {
7408  SELECT t1.*, t2.*, t3.*, t4.*
7409  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
7410  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7411  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7412  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7413} {
7414   2 102 202 302 102  2   -  -   -  -
7415   4 104 204 304 104  4   -  -   -  -
7416   6 106 206 306 106  6 206  6   -  -
7417   8 108 208 308 108  8   -  -   -  -
7418  10 110 210 310 110 10   -  - 310 10
7419  12 112 212 312 112 12 212 12   -  -
7420  14 114 214 314 114 14   -  -   -  -
7421  16 116 216 316 116 16   -  -   -  -
7422  18 118 218 318 118 18 218 18   -  -
7423  20 120 220 320 120 20   -  - 320 20
7424  22 122 222 322 122 22   -  -   -  -
7425  24 124 224 324 124 24 224 24   -  -
7426  26 126 226 326 126 26   -  -   -  -
7427  28 128 228 328 128 28   -  -   -  -
7428  30 130 230 330 130 30 230 30 330 30
7429  32 132 232 332 132 32   -  -   -  -
7430  34 134 234 334 134 34   -  -   -  -
7431  36 136 236 336 136 36 236 36   -  -
7432  38 138 238 338 138 38   -  -   -  -
7433  40 140 240 340 140 40   -  - 340 40
7434  42 142 242 342 142 42 242 42   -  -
7435  44 144 244 344 144 44   -  -   -  -
7436  46 146 246 346 146 46   -  -   -  -
7437  48 148 248 348 148 48 248 48   -  -
7438  50 150 250 350 150 50   -  - 350 50
7439  52 152 252 352 152 52   -  -   -  -
7440  54 154 254 354 154 54 254 54   -  -
7441  56 156 256 356 156 56   -  -   -  -
7442  58 158 258 358 158 58   -  -   -  -
7443  60 160 260 360 160 60 260 60 360 60
7444  62 162 262 362 162 62   -  -   -  -
7445  64 164 264 364 164 64   -  -   -  -
7446  66 166 266 366 166 66 266 66   -  -
7447  68 168 268 368 168 68   -  -   -  -
7448  70 170 270 370 170 70   -  - 370 70
7449  72 172 272 372 172 72 272 72   -  -
7450  74 174 274 374 174 74   -  -   -  -
7451  76 176 276 376 176 76   -  -   -  -
7452  78 178 278 378 178 78 278 78   -  -
7453  80 180 280 380 180 80   -  - 380 80
7454  82 182 282 382 182 82   -  -   -  -
7455  84 184 284 384 184 84 284 84   -  -
7456  86 186 286 386 186 86   -  -   -  -
7457  88 188 288 388 188 88   -  -   -  -
7458  90 190 290 390 190 90 290 90 390 90
7459  92 192 292 392 192 92   -  -   -  -
7460  94 194 294 394 194 94   -  -   -  -
7461   -   -   -   -   -  - 200  0   -  -
7462   -   -   -   -   -  - 203  3   -  -
7463   -   -   -   -   -  - 209  9   -  -
7464   -   -   -   -   -  - 215 15   -  -
7465   -   -   -   -   -  - 221 21   -  -
7466   -   -   -   -   -  - 227 27   -  -
7467   -   -   -   -   -  - 233 33   -  -
7468   -   -   -   -   -  - 239 39   -  -
7469   -   -   -   -   -  - 245 45   -  -
7470   -   -   -   -   -  - 251 51   -  -
7471   -   -   -   -   -  - 257 57   -  -
7472   -   -   -   -   -  - 263 63   -  -
7473   -   -   -   -   -  - 269 69   -  -
7474   -   -   -   -   -  - 275 75   -  -
7475   -   -   -   -   -  - 281 81   -  -
7476   -   -   -   -   -  - 287 87   -  -
7477   -   -   -   -   -  - 293 93   -  -
7478   -   -   -   -   -  -   -  - 300  0
7479   -   -   -   -   -  -   -  - 305  5
7480   -   -   -   -   -  -   -  - 315 15
7481   -   -   -   -   -  -   -  - 325 25
7482   -   -   -   -   -  -   -  - 335 35
7483   -   -   -   -   -  -   -  - 345 45
7484   -   -   -   -   -  -   -  - 355 55
7485   -   -   -   -   -  -   -  - 365 65
7486   -   -   -   -   -  -   -  - 375 75
7487   -   -   -   -   -  -   -  - 385 85
7488   -   -   -   -   -  -   -  - 395 95
7489}
7490do_execsql_test joinD-285 {
7491  SELECT t1.*, t2.*, t3.*, t4.*
7492  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7493  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7494  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7495  WHERE t2.x>0
7496  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7497} {
7498   2 102 202 302 102  2   -  -   -  -
7499   4 104 204 304 104  4   -  -   -  -
7500   6 106 206 306 106  6 206  6   -  -
7501   8 108 208 308 108  8   -  -   -  -
7502  10 110 210 310 110 10   -  - 310 10
7503  12 112 212 312 112 12 212 12   -  -
7504  14 114 214 314 114 14   -  -   -  -
7505  16 116 216 316 116 16   -  -   -  -
7506  18 118 218 318 118 18 218 18   -  -
7507  20 120 220 320 120 20   -  - 320 20
7508  22 122 222 322 122 22   -  -   -  -
7509  24 124 224 324 124 24 224 24   -  -
7510  26 126 226 326 126 26   -  -   -  -
7511  28 128 228 328 128 28   -  -   -  -
7512  30 130 230 330 130 30 230 30 330 30
7513  32 132 232 332 132 32   -  -   -  -
7514  34 134 234 334 134 34   -  -   -  -
7515  36 136 236 336 136 36 236 36   -  -
7516  38 138 238 338 138 38   -  -   -  -
7517  40 140 240 340 140 40   -  - 340 40
7518  42 142 242 342 142 42 242 42   -  -
7519  44 144 244 344 144 44   -  -   -  -
7520  46 146 246 346 146 46   -  -   -  -
7521  48 148 248 348 148 48 248 48   -  -
7522  50 150 250 350 150 50   -  - 350 50
7523  52 152 252 352 152 52   -  -   -  -
7524  54 154 254 354 154 54 254 54   -  -
7525  56 156 256 356 156 56   -  -   -  -
7526  58 158 258 358 158 58   -  -   -  -
7527  60 160 260 360 160 60 260 60 360 60
7528  62 162 262 362 162 62   -  -   -  -
7529  64 164 264 364 164 64   -  -   -  -
7530  66 166 266 366 166 66 266 66   -  -
7531  68 168 268 368 168 68   -  -   -  -
7532  70 170 270 370 170 70   -  - 370 70
7533  72 172 272 372 172 72 272 72   -  -
7534  74 174 274 374 174 74   -  -   -  -
7535  76 176 276 376 176 76   -  -   -  -
7536  78 178 278 378 178 78 278 78   -  -
7537  80 180 280 380 180 80   -  - 380 80
7538  82 182 282 382 182 82   -  -   -  -
7539  84 184 284 384 184 84 284 84   -  -
7540  86 186 286 386 186 86   -  -   -  -
7541  88 188 288 388 188 88   -  -   -  -
7542  90 190 290 390 190 90 290 90 390 90
7543  92 192 292 392 192 92   -  -   -  -
7544  94 194 294 394 194 94   -  -   -  -
7545}
7546do_execsql_test joinD-286 {
7547  SELECT t1.*, t2.*, t3.*, t4.*
7548  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7549  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7550  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7551  WHERE (t2.x>0 OR t2.x IS NULL)
7552  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7553} {
7554   2 102 202 302 102  2   -  -   -  -
7555   4 104 204 304 104  4   -  -   -  -
7556   6 106 206 306 106  6 206  6   -  -
7557   8 108 208 308 108  8   -  -   -  -
7558  10 110 210 310 110 10   -  - 310 10
7559  12 112 212 312 112 12 212 12   -  -
7560  14 114 214 314 114 14   -  -   -  -
7561  16 116 216 316 116 16   -  -   -  -
7562  18 118 218 318 118 18 218 18   -  -
7563  20 120 220 320 120 20   -  - 320 20
7564  22 122 222 322 122 22   -  -   -  -
7565  24 124 224 324 124 24 224 24   -  -
7566  26 126 226 326 126 26   -  -   -  -
7567  28 128 228 328 128 28   -  -   -  -
7568  30 130 230 330 130 30 230 30 330 30
7569  32 132 232 332 132 32   -  -   -  -
7570  34 134 234 334 134 34   -  -   -  -
7571  36 136 236 336 136 36 236 36   -  -
7572  38 138 238 338 138 38   -  -   -  -
7573  40 140 240 340 140 40   -  - 340 40
7574  42 142 242 342 142 42 242 42   -  -
7575  44 144 244 344 144 44   -  -   -  -
7576  46 146 246 346 146 46   -  -   -  -
7577  48 148 248 348 148 48 248 48   -  -
7578  50 150 250 350 150 50   -  - 350 50
7579  52 152 252 352 152 52   -  -   -  -
7580  54 154 254 354 154 54 254 54   -  -
7581  56 156 256 356 156 56   -  -   -  -
7582  58 158 258 358 158 58   -  -   -  -
7583  60 160 260 360 160 60 260 60 360 60
7584  62 162 262 362 162 62   -  -   -  -
7585  64 164 264 364 164 64   -  -   -  -
7586  66 166 266 366 166 66 266 66   -  -
7587  68 168 268 368 168 68   -  -   -  -
7588  70 170 270 370 170 70   -  - 370 70
7589  72 172 272 372 172 72 272 72   -  -
7590  74 174 274 374 174 74   -  -   -  -
7591  76 176 276 376 176 76   -  -   -  -
7592  78 178 278 378 178 78 278 78   -  -
7593  80 180 280 380 180 80   -  - 380 80
7594  82 182 282 382 182 82   -  -   -  -
7595  84 184 284 384 184 84 284 84   -  -
7596  86 186 286 386 186 86   -  -   -  -
7597  88 188 288 388 188 88   -  -   -  -
7598  90 190 290 390 190 90 290 90 390 90
7599  92 192 292 392 192 92   -  -   -  -
7600  94 194 294 394 194 94   -  -   -  -
7601   -   -   -   -   -  - 200  0   -  -
7602   -   -   -   -   -  - 203  3   -  -
7603   -   -   -   -   -  - 209  9   -  -
7604   -   -   -   -   -  - 215 15   -  -
7605   -   -   -   -   -  - 221 21   -  -
7606   -   -   -   -   -  - 227 27   -  -
7607   -   -   -   -   -  - 233 33   -  -
7608   -   -   -   -   -  - 239 39   -  -
7609   -   -   -   -   -  - 245 45   -  -
7610   -   -   -   -   -  - 251 51   -  -
7611   -   -   -   -   -  - 257 57   -  -
7612   -   -   -   -   -  - 263 63   -  -
7613   -   -   -   -   -  - 269 69   -  -
7614   -   -   -   -   -  - 275 75   -  -
7615   -   -   -   -   -  - 281 81   -  -
7616   -   -   -   -   -  - 287 87   -  -
7617   -   -   -   -   -  - 293 93   -  -
7618   -   -   -   -   -  -   -  - 300  0
7619   -   -   -   -   -  -   -  - 305  5
7620   -   -   -   -   -  -   -  - 315 15
7621   -   -   -   -   -  -   -  - 325 25
7622   -   -   -   -   -  -   -  - 335 35
7623   -   -   -   -   -  -   -  - 345 45
7624   -   -   -   -   -  -   -  - 355 55
7625   -   -   -   -   -  -   -  - 365 65
7626   -   -   -   -   -  -   -  - 375 75
7627   -   -   -   -   -  -   -  - 385 85
7628   -   -   -   -   -  -   -  - 395 95
7629}
7630do_execsql_test joinD-287 {
7631  SELECT t1.*, t2.*, t3.*, t4.*
7632  FROM t1 INNER JOIN t2 ON true
7633  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7634  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7635  WHERE t1.b=t2.b AND t2.x>0
7636  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7637} {
7638   2 102 202 302 102  2   -  -   -  -
7639   4 104 204 304 104  4   -  -   -  -
7640   6 106 206 306 106  6 206  6   -  -
7641   8 108 208 308 108  8   -  -   -  -
7642  10 110 210 310 110 10   -  - 310 10
7643  12 112 212 312 112 12 212 12   -  -
7644  14 114 214 314 114 14   -  -   -  -
7645  16 116 216 316 116 16   -  -   -  -
7646  18 118 218 318 118 18 218 18   -  -
7647  20 120 220 320 120 20   -  - 320 20
7648  22 122 222 322 122 22   -  -   -  -
7649  24 124 224 324 124 24 224 24   -  -
7650  26 126 226 326 126 26   -  -   -  -
7651  28 128 228 328 128 28   -  -   -  -
7652  30 130 230 330 130 30 230 30 330 30
7653  32 132 232 332 132 32   -  -   -  -
7654  34 134 234 334 134 34   -  -   -  -
7655  36 136 236 336 136 36 236 36   -  -
7656  38 138 238 338 138 38   -  -   -  -
7657  40 140 240 340 140 40   -  - 340 40
7658  42 142 242 342 142 42 242 42   -  -
7659  44 144 244 344 144 44   -  -   -  -
7660  46 146 246 346 146 46   -  -   -  -
7661  48 148 248 348 148 48 248 48   -  -
7662  50 150 250 350 150 50   -  - 350 50
7663  52 152 252 352 152 52   -  -   -  -
7664  54 154 254 354 154 54 254 54   -  -
7665  56 156 256 356 156 56   -  -   -  -
7666  58 158 258 358 158 58   -  -   -  -
7667  60 160 260 360 160 60 260 60 360 60
7668  62 162 262 362 162 62   -  -   -  -
7669  64 164 264 364 164 64   -  -   -  -
7670  66 166 266 366 166 66 266 66   -  -
7671  68 168 268 368 168 68   -  -   -  -
7672  70 170 270 370 170 70   -  - 370 70
7673  72 172 272 372 172 72 272 72   -  -
7674  74 174 274 374 174 74   -  -   -  -
7675  76 176 276 376 176 76   -  -   -  -
7676  78 178 278 378 178 78 278 78   -  -
7677  80 180 280 380 180 80   -  - 380 80
7678  82 182 282 382 182 82   -  -   -  -
7679  84 184 284 384 184 84 284 84   -  -
7680  86 186 286 386 186 86   -  -   -  -
7681  88 188 288 388 188 88   -  -   -  -
7682  90 190 290 390 190 90 290 90 390 90
7683  92 192 292 392 192 92   -  -   -  -
7684  94 194 294 394 194 94   -  -   -  -
7685}
7686do_execsql_test joinD-288 {
7687  SELECT t1.*, t2.*, t3.*, t4.*
7688  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7689  FULL JOIN t3 ON t1.c=t3.c
7690  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7691  WHERE t3.y>0
7692  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7693} {
7694   6 106 206 306 106  6 206  6   -  -
7695  12 112 212 312 112 12 212 12   -  -
7696  18 118 218 318 118 18 218 18   -  -
7697  24 124 224 324 124 24 224 24   -  -
7698  30 130 230 330 130 30 230 30 330 30
7699  36 136 236 336 136 36 236 36   -  -
7700  42 142 242 342 142 42 242 42   -  -
7701  48 148 248 348 148 48 248 48   -  -
7702  54 154 254 354 154 54 254 54   -  -
7703  60 160 260 360 160 60 260 60 360 60
7704  66 166 266 366 166 66 266 66   -  -
7705  72 172 272 372 172 72 272 72   -  -
7706  78 178 278 378 178 78 278 78   -  -
7707  84 184 284 384 184 84 284 84   -  -
7708  90 190 290 390 190 90 290 90 390 90
7709   -   -   -   -   -  - 203  3   -  -
7710   -   -   -   -   -  - 209  9   -  -
7711   -   -   -   -   -  - 215 15   -  -
7712   -   -   -   -   -  - 221 21   -  -
7713   -   -   -   -   -  - 227 27   -  -
7714   -   -   -   -   -  - 233 33   -  -
7715   -   -   -   -   -  - 239 39   -  -
7716   -   -   -   -   -  - 245 45   -  -
7717   -   -   -   -   -  - 251 51   -  -
7718   -   -   -   -   -  - 257 57   -  -
7719   -   -   -   -   -  - 263 63   -  -
7720   -   -   -   -   -  - 269 69   -  -
7721   -   -   -   -   -  - 275 75   -  -
7722   -   -   -   -   -  - 281 81   -  -
7723   -   -   -   -   -  - 287 87   -  -
7724   -   -   -   -   -  - 293 93   -  -
7725}
7726do_execsql_test joinD-289 {
7727  SELECT t1.*, t2.*, t3.*, t4.*
7728  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7729  FULL JOIN t3 ON t1.c=t3.c
7730  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7731  WHERE t3.y>0 OR t3.y IS NULL
7732  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7733} {
7734   2 102 202 302 102  2   -  -   -  -
7735   4 104 204 304 104  4   -  -   -  -
7736   6 106 206 306 106  6 206  6   -  -
7737   8 108 208 308 108  8   -  -   -  -
7738  10 110 210 310 110 10   -  - 310 10
7739  12 112 212 312 112 12 212 12   -  -
7740  14 114 214 314 114 14   -  -   -  -
7741  16 116 216 316 116 16   -  -   -  -
7742  18 118 218 318 118 18 218 18   -  -
7743  20 120 220 320 120 20   -  - 320 20
7744  22 122 222 322 122 22   -  -   -  -
7745  24 124 224 324 124 24 224 24   -  -
7746  26 126 226 326 126 26   -  -   -  -
7747  28 128 228 328 128 28   -  -   -  -
7748  30 130 230 330 130 30 230 30 330 30
7749  32 132 232 332 132 32   -  -   -  -
7750  34 134 234 334 134 34   -  -   -  -
7751  36 136 236 336 136 36 236 36   -  -
7752  38 138 238 338 138 38   -  -   -  -
7753  40 140 240 340 140 40   -  - 340 40
7754  42 142 242 342 142 42 242 42   -  -
7755  44 144 244 344 144 44   -  -   -  -
7756  46 146 246 346 146 46   -  -   -  -
7757  48 148 248 348 148 48 248 48   -  -
7758  50 150 250 350 150 50   -  - 350 50
7759  52 152 252 352 152 52   -  -   -  -
7760  54 154 254 354 154 54 254 54   -  -
7761  56 156 256 356 156 56   -  -   -  -
7762  58 158 258 358 158 58   -  -   -  -
7763  60 160 260 360 160 60 260 60 360 60
7764  62 162 262 362 162 62   -  -   -  -
7765  64 164 264 364 164 64   -  -   -  -
7766  66 166 266 366 166 66 266 66   -  -
7767  68 168 268 368 168 68   -  -   -  -
7768  70 170 270 370 170 70   -  - 370 70
7769  72 172 272 372 172 72 272 72   -  -
7770  74 174 274 374 174 74   -  -   -  -
7771  76 176 276 376 176 76   -  -   -  -
7772  78 178 278 378 178 78 278 78   -  -
7773  80 180 280 380 180 80   -  - 380 80
7774  82 182 282 382 182 82   -  -   -  -
7775  84 184 284 384 184 84 284 84   -  -
7776  86 186 286 386 186 86   -  -   -  -
7777  88 188 288 388 188 88   -  -   -  -
7778  90 190 290 390 190 90 290 90 390 90
7779  92 192 292 392 192 92   -  -   -  -
7780  94 194 294 394 194 94   -  -   -  -
7781   -   -   -   -   -  - 203  3   -  -
7782   -   -   -   -   -  - 209  9   -  -
7783   -   -   -   -   -  - 215 15   -  -
7784   -   -   -   -   -  - 221 21   -  -
7785   -   -   -   -   -  - 227 27   -  -
7786   -   -   -   -   -  - 233 33   -  -
7787   -   -   -   -   -  - 239 39   -  -
7788   -   -   -   -   -  - 245 45   -  -
7789   -   -   -   -   -  - 251 51   -  -
7790   -   -   -   -   -  - 257 57   -  -
7791   -   -   -   -   -  - 263 63   -  -
7792   -   -   -   -   -  - 269 69   -  -
7793   -   -   -   -   -  - 275 75   -  -
7794   -   -   -   -   -  - 281 81   -  -
7795   -   -   -   -   -  - 287 87   -  -
7796   -   -   -   -   -  - 293 93   -  -
7797   -   -   -   -   -  -   -  - 300  0
7798   -   -   -   -   -  -   -  - 305  5
7799   -   -   -   -   -  -   -  - 315 15
7800   -   -   -   -   -  -   -  - 325 25
7801   -   -   -   -   -  -   -  - 335 35
7802   -   -   -   -   -  -   -  - 345 45
7803   -   -   -   -   -  -   -  - 355 55
7804   -   -   -   -   -  -   -  - 365 65
7805   -   -   -   -   -  -   -  - 375 75
7806   -   -   -   -   -  -   -  - 385 85
7807   -   -   -   -   -  -   -  - 395 95
7808}
7809do_execsql_test joinD-290 {
7810  SELECT t1.*, t2.*, t3.*, t4.*
7811  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7812  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7813  FULL JOIN t4 ON t1.d=t4.d
7814  WHERE t4.z>0
7815  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7816} {
7817  10 110 210 310 110 10   -  - 310 10
7818  20 120 220 320 120 20   -  - 320 20
7819  30 130 230 330 130 30 230 30 330 30
7820  40 140 240 340 140 40   -  - 340 40
7821  50 150 250 350 150 50   -  - 350 50
7822  60 160 260 360 160 60 260 60 360 60
7823  70 170 270 370 170 70   -  - 370 70
7824  80 180 280 380 180 80   -  - 380 80
7825  90 190 290 390 190 90 290 90 390 90
7826   -   -   -   -   -  -   -  - 305  5
7827   -   -   -   -   -  -   -  - 315 15
7828   -   -   -   -   -  -   -  - 325 25
7829   -   -   -   -   -  -   -  - 335 35
7830   -   -   -   -   -  -   -  - 345 45
7831   -   -   -   -   -  -   -  - 355 55
7832   -   -   -   -   -  -   -  - 365 65
7833   -   -   -   -   -  -   -  - 375 75
7834   -   -   -   -   -  -   -  - 385 85
7835   -   -   -   -   -  -   -  - 395 95
7836}
7837do_execsql_test joinD-291 {
7838  SELECT t1.*, t2.*, t3.*, t4.*
7839  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7840  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7841  FULL JOIN t4 ON t1.d=t4.d
7842  WHERE t4.z IS NULL OR t4.z>0
7843  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7844} {
7845   2 102 202 302 102  2   -  -   -  -
7846   4 104 204 304 104  4   -  -   -  -
7847   6 106 206 306 106  6 206  6   -  -
7848   8 108 208 308 108  8   -  -   -  -
7849  10 110 210 310 110 10   -  - 310 10
7850  12 112 212 312 112 12 212 12   -  -
7851  14 114 214 314 114 14   -  -   -  -
7852  16 116 216 316 116 16   -  -   -  -
7853  18 118 218 318 118 18 218 18   -  -
7854  20 120 220 320 120 20   -  - 320 20
7855  22 122 222 322 122 22   -  -   -  -
7856  24 124 224 324 124 24 224 24   -  -
7857  26 126 226 326 126 26   -  -   -  -
7858  28 128 228 328 128 28   -  -   -  -
7859  30 130 230 330 130 30 230 30 330 30
7860  32 132 232 332 132 32   -  -   -  -
7861  34 134 234 334 134 34   -  -   -  -
7862  36 136 236 336 136 36 236 36   -  -
7863  38 138 238 338 138 38   -  -   -  -
7864  40 140 240 340 140 40   -  - 340 40
7865  42 142 242 342 142 42 242 42   -  -
7866  44 144 244 344 144 44   -  -   -  -
7867  46 146 246 346 146 46   -  -   -  -
7868  48 148 248 348 148 48 248 48   -  -
7869  50 150 250 350 150 50   -  - 350 50
7870  52 152 252 352 152 52   -  -   -  -
7871  54 154 254 354 154 54 254 54   -  -
7872  56 156 256 356 156 56   -  -   -  -
7873  58 158 258 358 158 58   -  -   -  -
7874  60 160 260 360 160 60 260 60 360 60
7875  62 162 262 362 162 62   -  -   -  -
7876  64 164 264 364 164 64   -  -   -  -
7877  66 166 266 366 166 66 266 66   -  -
7878  68 168 268 368 168 68   -  -   -  -
7879  70 170 270 370 170 70   -  - 370 70
7880  72 172 272 372 172 72 272 72   -  -
7881  74 174 274 374 174 74   -  -   -  -
7882  76 176 276 376 176 76   -  -   -  -
7883  78 178 278 378 178 78 278 78   -  -
7884  80 180 280 380 180 80   -  - 380 80
7885  82 182 282 382 182 82   -  -   -  -
7886  84 184 284 384 184 84 284 84   -  -
7887  86 186 286 386 186 86   -  -   -  -
7888  88 188 288 388 188 88   -  -   -  -
7889  90 190 290 390 190 90 290 90 390 90
7890  92 192 292 392 192 92   -  -   -  -
7891  94 194 294 394 194 94   -  -   -  -
7892   -   -   -   -   -  - 200  0   -  -
7893   -   -   -   -   -  - 203  3   -  -
7894   -   -   -   -   -  - 209  9   -  -
7895   -   -   -   -   -  - 215 15   -  -
7896   -   -   -   -   -  - 221 21   -  -
7897   -   -   -   -   -  - 227 27   -  -
7898   -   -   -   -   -  - 233 33   -  -
7899   -   -   -   -   -  - 239 39   -  -
7900   -   -   -   -   -  - 245 45   -  -
7901   -   -   -   -   -  - 251 51   -  -
7902   -   -   -   -   -  - 257 57   -  -
7903   -   -   -   -   -  - 263 63   -  -
7904   -   -   -   -   -  - 269 69   -  -
7905   -   -   -   -   -  - 275 75   -  -
7906   -   -   -   -   -  - 281 81   -  -
7907   -   -   -   -   -  - 287 87   -  -
7908   -   -   -   -   -  - 293 93   -  -
7909   -   -   -   -   -  -   -  - 305  5
7910   -   -   -   -   -  -   -  - 315 15
7911   -   -   -   -   -  -   -  - 325 25
7912   -   -   -   -   -  -   -  - 335 35
7913   -   -   -   -   -  -   -  - 345 45
7914   -   -   -   -   -  -   -  - 355 55
7915   -   -   -   -   -  -   -  - 365 65
7916   -   -   -   -   -  -   -  - 375 75
7917   -   -   -   -   -  -   -  - 385 85
7918   -   -   -   -   -  -   -  - 395 95
7919}
7920do_execsql_test joinD-292 {
7921  SELECT t1.*, t2.*, t3.*, t4.*
7922  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7923  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7924  FULL JOIN t4 ON t1.d=t4.d
7925  WHERE t2.x>0 AND t4.z>0
7926  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7927} {
7928  10 110 210 310 110 10   -  - 310 10
7929  20 120 220 320 120 20   -  - 320 20
7930  30 130 230 330 130 30 230 30 330 30
7931  40 140 240 340 140 40   -  - 340 40
7932  50 150 250 350 150 50   -  - 350 50
7933  60 160 260 360 160 60 260 60 360 60
7934  70 170 270 370 170 70   -  - 370 70
7935  80 180 280 380 180 80   -  - 380 80
7936  90 190 290 390 190 90 290 90 390 90
7937}
7938do_execsql_test joinD-293 {
7939  SELECT t1.*, t2.*, t3.*, t4.*
7940  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7941  FULL JOIN t3 ON t1.c=t3.c
7942  FULL JOIN t4 ON t1.d=t4.d
7943  WHERE t4.z>0 AND t3.y>0
7944  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7945} {
7946  30 130 230 330 130 30 230 30 330 30
7947  60 160 260 360 160 60 260 60 360 60
7948  90 190 290 390 190 90 290 90 390 90
7949}
7950do_execsql_test joinD-294 {
7951  SELECT t1.*, t2.*, t3.*, t4.*
7952  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7953  FULL JOIN t3 ON t1.c=t3.c
7954  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7955  WHERE t2.x>0 AND t3.y>0
7956  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7957} {
7958   6 106 206 306 106  6 206  6   -  -
7959  12 112 212 312 112 12 212 12   -  -
7960  18 118 218 318 118 18 218 18   -  -
7961  24 124 224 324 124 24 224 24   -  -
7962  30 130 230 330 130 30 230 30 330 30
7963  36 136 236 336 136 36 236 36   -  -
7964  42 142 242 342 142 42 242 42   -  -
7965  48 148 248 348 148 48 248 48   -  -
7966  54 154 254 354 154 54 254 54   -  -
7967  60 160 260 360 160 60 260 60 360 60
7968  66 166 266 366 166 66 266 66   -  -
7969  72 172 272 372 172 72 272 72   -  -
7970  78 178 278 378 178 78 278 78   -  -
7971  84 184 284 384 184 84 284 84   -  -
7972  90 190 290 390 190 90 290 90 390 90
7973}
7974do_execsql_test joinD-295 {
7975  SELECT t1.*, t2.*, t3.*, t4.*
7976  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7977  FULL JOIN t3 ON t1.c=t3.c
7978  FULL JOIN t4 ON t1.d=t4.d
7979  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
7980  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7981} {
7982  30 130 230 330 130 30 230 30 330 30
7983  60 160 260 360 160 60 260 60 360 60
7984  90 190 290 390 190 90 290 90 390 90
7985}
7986do_execsql_test joinD-296 {
7987  SELECT t1.*, t2.*, t3.*, t4.*
7988  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
7989  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7990  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
7991  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7992} {
7993   2 102 202 302 102  2   -  -   -  -
7994   4 104 204 304 104  4   -  -   -  -
7995   6 106 206 306 106  6 206  6   -  -
7996   8 108 208 308 108  8   -  -   -  -
7997  10 110 210 310 110 10   -  - 310 10
7998  12 112 212 312 112 12 212 12   -  -
7999  14 114 214 314 114 14   -  -   -  -
8000  16 116 216 316 116 16   -  -   -  -
8001  18 118 218 318 118 18 218 18   -  -
8002  20 120 220 320 120 20   -  - 320 20
8003  22 122 222 322 122 22   -  -   -  -
8004  24 124 224 324 124 24 224 24   -  -
8005  26 126 226 326 126 26   -  -   -  -
8006  28 128 228 328 128 28   -  -   -  -
8007  30 130 230 330 130 30 230 30 330 30
8008  32 132 232 332 132 32   -  -   -  -
8009  34 134 234 334 134 34   -  -   -  -
8010  36 136 236 336 136 36 236 36   -  -
8011  38 138 238 338 138 38   -  -   -  -
8012  40 140 240 340 140 40   -  - 340 40
8013  42 142 242 342 142 42 242 42   -  -
8014  44 144 244 344 144 44   -  -   -  -
8015  46 146 246 346 146 46   -  -   -  -
8016  48 148 248 348 148 48 248 48   -  -
8017  50 150 250 350 150 50   -  - 350 50
8018  52 152 252 352 152 52   -  -   -  -
8019  54 154 254 354 154 54 254 54   -  -
8020  56 156 256 356 156 56   -  -   -  -
8021  58 158 258 358 158 58   -  -   -  -
8022  60 160 260 360 160 60 260 60 360 60
8023  62 162 262 362 162 62   -  -   -  -
8024  64 164 264 364 164 64   -  -   -  -
8025  66 166 266 366 166 66 266 66   -  -
8026  68 168 268 368 168 68   -  -   -  -
8027  70 170 270 370 170 70   -  - 370 70
8028  72 172 272 372 172 72 272 72   -  -
8029  74 174 274 374 174 74   -  -   -  -
8030  76 176 276 376 176 76   -  -   -  -
8031  78 178 278 378 178 78 278 78   -  -
8032  80 180 280 380 180 80   -  - 380 80
8033  82 182 282 382 182 82   -  -   -  -
8034  84 184 284 384 184 84 284 84   -  -
8035  86 186 286 386 186 86   -  -   -  -
8036  88 188 288 388 188 88   -  -   -  -
8037  90 190 290 390 190 90 290 90 390 90
8038  92 192 292 392 192 92   -  -   -  -
8039  94 194 294 394 194 94   -  -   -  -
8040   -   -   -   -   -  - 200  0   -  -
8041   -   -   -   -   -  - 203  3   -  -
8042   -   -   -   -   -  - 209  9   -  -
8043   -   -   -   -   -  - 215 15   -  -
8044   -   -   -   -   -  - 221 21   -  -
8045   -   -   -   -   -  - 227 27   -  -
8046   -   -   -   -   -  - 233 33   -  -
8047   -   -   -   -   -  - 239 39   -  -
8048   -   -   -   -   -  - 245 45   -  -
8049   -   -   -   -   -  - 251 51   -  -
8050   -   -   -   -   -  - 257 57   -  -
8051   -   -   -   -   -  - 263 63   -  -
8052   -   -   -   -   -  - 269 69   -  -
8053   -   -   -   -   -  - 275 75   -  -
8054   -   -   -   -   -  - 281 81   -  -
8055   -   -   -   -   -  - 287 87   -  -
8056   -   -   -   -   -  - 293 93   -  -
8057   -   -   -   -   -  -   -  - 300  0
8058   -   -   -   -   -  -   -  - 305  5
8059   -   -   -   -   -  -   -  - 315 15
8060   -   -   -   -   -  -   -  - 325 25
8061   -   -   -   -   -  -   -  - 335 35
8062   -   -   -   -   -  -   -  - 345 45
8063   -   -   -   -   -  -   -  - 355 55
8064   -   -   -   -   -  -   -  - 365 65
8065   -   -   -   -   -  -   -  - 375 75
8066   -   -   -   -   -  -   -  - 385 85
8067   -   -   -   -   -  -   -  - 395 95
8068}
8069do_execsql_test joinD-297 {
8070  SELECT t1.*, t2.*, t3.*, t4.*
8071  FROM t1 INNER JOIN t2 ON t2.x>0
8072  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
8073  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
8074  WHERE t1.b IS NOT DISTINCT FROM t2.b
8075  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8076} {
8077   2 102 202 302 102  2   -  -   -  -
8078   4 104 204 304 104  4   -  -   -  -
8079   6 106 206 306 106  6 206  6   -  -
8080   8 108 208 308 108  8   -  -   -  -
8081  10 110 210 310 110 10   -  - 310 10
8082  12 112 212 312 112 12 212 12   -  -
8083  14 114 214 314 114 14   -  -   -  -
8084  16 116 216 316 116 16   -  -   -  -
8085  18 118 218 318 118 18 218 18   -  -
8086  20 120 220 320 120 20   -  - 320 20
8087  22 122 222 322 122 22   -  -   -  -
8088  24 124 224 324 124 24 224 24   -  -
8089  26 126 226 326 126 26   -  -   -  -
8090  28 128 228 328 128 28   -  -   -  -
8091  30 130 230 330 130 30 230 30 330 30
8092  32 132 232 332 132 32   -  -   -  -
8093  34 134 234 334 134 34   -  -   -  -
8094  36 136 236 336 136 36 236 36   -  -
8095  38 138 238 338 138 38   -  -   -  -
8096  40 140 240 340 140 40   -  - 340 40
8097  42 142 242 342 142 42 242 42   -  -
8098  44 144 244 344 144 44   -  -   -  -
8099  46 146 246 346 146 46   -  -   -  -
8100  48 148 248 348 148 48 248 48   -  -
8101  50 150 250 350 150 50   -  - 350 50
8102  52 152 252 352 152 52   -  -   -  -
8103  54 154 254 354 154 54 254 54   -  -
8104  56 156 256 356 156 56   -  -   -  -
8105  58 158 258 358 158 58   -  -   -  -
8106  60 160 260 360 160 60 260 60 360 60
8107  62 162 262 362 162 62   -  -   -  -
8108  64 164 264 364 164 64   -  -   -  -
8109  66 166 266 366 166 66 266 66   -  -
8110  68 168 268 368 168 68   -  -   -  -
8111  70 170 270 370 170 70   -  - 370 70
8112  72 172 272 372 172 72 272 72   -  -
8113  74 174 274 374 174 74   -  -   -  -
8114  76 176 276 376 176 76   -  -   -  -
8115  78 178 278 378 178 78 278 78   -  -
8116  80 180 280 380 180 80   -  - 380 80
8117  82 182 282 382 182 82   -  -   -  -
8118  84 184 284 384 184 84 284 84   -  -
8119  86 186 286 386 186 86   -  -   -  -
8120  88 188 288 388 188 88   -  -   -  -
8121  90 190 290 390 190 90 290 90 390 90
8122  92 192 292 392 192 92   -  -   -  -
8123  94 194 294 394 194 94   -  -   -  -
8124   -   -   -   -   -  - 200  0   -  -
8125   -   -   -   -   -  -   -  - 300  0
8126}
8127do_execsql_test joinD-298 {
8128  SELECT t1.*, t2.*, t3.*, t4.*
8129  FROM t1 INNER JOIN t2 ON t2.x>0
8130  FULL JOIN t3 ON t3.y>0
8131  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
8132  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
8133  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8134} {
8135   6 106 206 306 106  6 206  6   -  -
8136  12 112 212 312 112 12 212 12   -  -
8137  18 118 218 318 118 18 218 18   -  -
8138  24 124 224 324 124 24 224 24   -  -
8139  30 130 230 330 130 30 230 30 330 30
8140  36 136 236 336 136 36 236 36   -  -
8141  42 142 242 342 142 42 242 42   -  -
8142  48 148 248 348 148 48 248 48   -  -
8143  54 154 254 354 154 54 254 54   -  -
8144  60 160 260 360 160 60 260 60 360 60
8145  66 166 266 366 166 66 266 66   -  -
8146  72 172 272 372 172 72 272 72   -  -
8147  78 178 278 378 178 78 278 78   -  -
8148  84 184 284 384 184 84 284 84   -  -
8149  90 190 290 390 190 90 290 90 390 90
8150}
8151do_execsql_test joinD-299 {
8152  SELECT t1.*, t2.*, t3.*, t4.*
8153  FROM t1 INNER JOIN t2 ON t2.x>0
8154  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
8155  FULL JOIN t4 ON t4.z>0
8156  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
8157  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8158} {
8159  10 110 210 310 110 10   -  - 310 10
8160  20 120 220 320 120 20   -  - 320 20
8161  30 130 230 330 130 30 230 30 330 30
8162  40 140 240 340 140 40   -  - 340 40
8163  50 150 250 350 150 50   -  - 350 50
8164  60 160 260 360 160 60 260 60 360 60
8165  70 170 270 370 170 70   -  - 370 70
8166  80 180 280 380 180 80   -  - 380 80
8167  90 190 290 390 190 90 290 90 390 90
8168}
8169do_execsql_test joinD-300 {
8170  SELECT t1.*, t2.*, t3.*, t4.*
8171  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
8172  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
8173  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
8174  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8175} {
8176   2 102 202 302 102  2   -  -   -  -
8177   4 104 204 304 104  4   -  -   -  -
8178   6 106 206 306 106  6 206  6   -  -
8179   8 108 208 308 108  8   -  -   -  -
8180  10 110 210 310 110 10   -  - 310 10
8181  12 112 212 312 112 12 212 12   -  -
8182  14 114 214 314 114 14   -  -   -  -
8183  16 116 216 316 116 16   -  -   -  -
8184  18 118 218 318 118 18 218 18   -  -
8185  20 120 220 320 120 20   -  - 320 20
8186  22 122 222 322 122 22   -  -   -  -
8187  24 124 224 324 124 24 224 24   -  -
8188  26 126 226 326 126 26   -  -   -  -
8189  28 128 228 328 128 28   -  -   -  -
8190  30 130 230 330 130 30 230 30 330 30
8191  32 132 232 332 132 32   -  -   -  -
8192  34 134 234 334 134 34   -  -   -  -
8193  36 136 236 336 136 36 236 36   -  -
8194  38 138 238 338 138 38   -  -   -  -
8195  40 140 240 340 140 40   -  - 340 40
8196  42 142 242 342 142 42 242 42   -  -
8197  44 144 244 344 144 44   -  -   -  -
8198  46 146 246 346 146 46   -  -   -  -
8199  48 148 248 348 148 48 248 48   -  -
8200  50 150 250 350 150 50   -  - 350 50
8201  52 152 252 352 152 52   -  -   -  -
8202  54 154 254 354 154 54 254 54   -  -
8203  56 156 256 356 156 56   -  -   -  -
8204  58 158 258 358 158 58   -  -   -  -
8205  60 160 260 360 160 60 260 60 360 60
8206  62 162 262 362 162 62   -  -   -  -
8207  64 164 264 364 164 64   -  -   -  -
8208  66 166 266 366 166 66 266 66   -  -
8209  68 168 268 368 168 68   -  -   -  -
8210  70 170 270 370 170 70   -  - 370 70
8211  72 172 272 372 172 72 272 72   -  -
8212  74 174 274 374 174 74   -  -   -  -
8213  76 176 276 376 176 76   -  -   -  -
8214  78 178 278 378 178 78 278 78   -  -
8215  80 180 280 380 180 80   -  - 380 80
8216  82 182 282 382 182 82   -  -   -  -
8217  84 184 284 384 184 84 284 84   -  -
8218  86 186 286 386 186 86   -  -   -  -
8219  88 188 288 388 188 88   -  -   -  -
8220  90 190 290 390 190 90 290 90 390 90
8221  92 192 292 392 192 92   -  -   -  -
8222  94 194 294 394 194 94   -  -   -  -
8223   -   -   -   -   -  - 200  0   -  -
8224   -   -   -   -   -  - 203  3   -  -
8225   -   -   -   -   -  - 209  9   -  -
8226   -   -   -   -   -  - 215 15   -  -
8227   -   -   -   -   -  - 221 21   -  -
8228   -   -   -   -   -  - 227 27   -  -
8229   -   -   -   -   -  - 233 33   -  -
8230   -   -   -   -   -  - 239 39   -  -
8231   -   -   -   -   -  - 245 45   -  -
8232   -   -   -   -   -  - 251 51   -  -
8233   -   -   -   -   -  - 257 57   -  -
8234   -   -   -   -   -  - 263 63   -  -
8235   -   -   -   -   -  - 269 69   -  -
8236   -   -   -   -   -  - 275 75   -  -
8237   -   -   -   -   -  - 281 81   -  -
8238   -   -   -   -   -  - 287 87   -  -
8239   -   -   -   -   -  - 293 93   -  -
8240   -   -   -   -   -  -   -  - 300  0
8241   -   -   -   -   -  -   -  - 305  5
8242   -   -   -   -   -  -   -  - 315 15
8243   -   -   -   -   -  -   -  - 325 25
8244   -   -   -   -   -  -   -  - 335 35
8245   -   -   -   -   -  -   -  - 345 45
8246   -   -   -   -   -  -   -  - 355 55
8247   -   -   -   -   -  -   -  - 365 65
8248   -   -   -   -   -  -   -  - 375 75
8249   -   -   -   -   -  -   -  - 385 85
8250   -   -   -   -   -  -   -  - 395 95
8251}
8252do_execsql_test joinD-301 {
8253  SELECT t1.*, t2.*, t3.*, t4.*
8254  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8255  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8256  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8257  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8258} {
8259  15 115 215 315   -  - 215 15 315 15
8260  30 130 230 330 130 30 230 30 330 30
8261  45 145 245 345   -  - 245 45 345 45
8262  60 160 260 360 160 60 260 60 360 60
8263  75 175 275 375   -  - 275 75 375 75
8264  90 190 290 390 190 90 290 90 390 90
8265}
8266do_execsql_test joinD-302 {
8267  SELECT t1.*, t2.*, t3.*, t4.*
8268  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8269  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8270  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8271  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8272} {
8273  15 115 215 315   -  - 215 15 315 15
8274  30 130 230 330 130 30 230 30 330 30
8275  45 145 245 345   -  - 245 45 345 45
8276  60 160 260 360 160 60 260 60 360 60
8277  75 175 275 375   -  - 275 75 375 75
8278  90 190 290 390 190 90 290 90 390 90
8279}
8280do_execsql_test joinD-303 {
8281  SELECT t1.*, t2.*, t3.*, t4.*
8282  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8283  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8284  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8285  WHERE t2.x>0
8286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8287} {
8288  30 130 230 330 130 30 230 30 330 30
8289  60 160 260 360 160 60 260 60 360 60
8290  90 190 290 390 190 90 290 90 390 90
8291}
8292do_execsql_test joinD-304 {
8293  SELECT t1.*, t2.*, t3.*, t4.*
8294  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8295  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8296  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8297  WHERE (t2.x>0 OR t2.x IS NULL)
8298  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8299} {
8300  15 115 215 315   -  - 215 15 315 15
8301  30 130 230 330 130 30 230 30 330 30
8302  45 145 245 345   -  - 245 45 345 45
8303  60 160 260 360 160 60 260 60 360 60
8304  75 175 275 375   -  - 275 75 375 75
8305  90 190 290 390 190 90 290 90 390 90
8306}
8307do_execsql_test joinD-305 {
8308  SELECT t1.*, t2.*, t3.*, t4.*
8309  FROM t1 LEFT JOIN t2 ON true
8310  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8311  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8312  WHERE t1.b=t2.b AND t2.x>0
8313  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8314} {
8315  30 130 230 330 130 30 230 30 330 30
8316  60 160 260 360 160 60 260 60 360 60
8317  90 190 290 390 190 90 290 90 390 90
8318}
8319do_execsql_test joinD-306 {
8320  SELECT t1.*, t2.*, t3.*, t4.*
8321  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8322  INNER JOIN t3 ON t1.c=t3.c
8323  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8324  WHERE t3.y>0
8325  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8326} {
8327  15 115 215 315   -  - 215 15 315 15
8328  30 130 230 330 130 30 230 30 330 30
8329  45 145 245 345   -  - 245 45 345 45
8330  60 160 260 360 160 60 260 60 360 60
8331  75 175 275 375   -  - 275 75 375 75
8332  90 190 290 390 190 90 290 90 390 90
8333}
8334do_execsql_test joinD-307 {
8335  SELECT t1.*, t2.*, t3.*, t4.*
8336  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8337  INNER JOIN t3 ON t1.c=t3.c
8338  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8339  WHERE t3.y>0 OR t3.y IS NULL
8340  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8341} {
8342  15 115 215 315   -  - 215 15 315 15
8343  30 130 230 330 130 30 230 30 330 30
8344  45 145 245 345   -  - 245 45 345 45
8345  60 160 260 360 160 60 260 60 360 60
8346  75 175 275 375   -  - 275 75 375 75
8347  90 190 290 390 190 90 290 90 390 90
8348}
8349do_execsql_test joinD-308 {
8350  SELECT t1.*, t2.*, t3.*, t4.*
8351  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8352  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8353  INNER JOIN t4 ON t1.d=t4.d
8354  WHERE t4.z>0
8355  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8356} {
8357  15 115 215 315   -  - 215 15 315 15
8358  30 130 230 330 130 30 230 30 330 30
8359  45 145 245 345   -  - 245 45 345 45
8360  60 160 260 360 160 60 260 60 360 60
8361  75 175 275 375   -  - 275 75 375 75
8362  90 190 290 390 190 90 290 90 390 90
8363}
8364do_execsql_test joinD-309 {
8365  SELECT t1.*, t2.*, t3.*, t4.*
8366  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8367  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8368  INNER JOIN t4 ON t1.d=t4.d
8369  WHERE t4.z IS NULL OR t4.z>0
8370  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8371} {
8372  15 115 215 315   -  - 215 15 315 15
8373  30 130 230 330 130 30 230 30 330 30
8374  45 145 245 345   -  - 245 45 345 45
8375  60 160 260 360 160 60 260 60 360 60
8376  75 175 275 375   -  - 275 75 375 75
8377  90 190 290 390 190 90 290 90 390 90
8378}
8379do_execsql_test joinD-310 {
8380  SELECT t1.*, t2.*, t3.*, t4.*
8381  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8382  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8383  INNER JOIN t4 ON t1.d=t4.d
8384  WHERE t2.x>0 AND t4.z>0
8385  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8386} {
8387  30 130 230 330 130 30 230 30 330 30
8388  60 160 260 360 160 60 260 60 360 60
8389  90 190 290 390 190 90 290 90 390 90
8390}
8391do_execsql_test joinD-311 {
8392  SELECT t1.*, t2.*, t3.*, t4.*
8393  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8394  INNER JOIN t3 ON t1.c=t3.c
8395  INNER JOIN t4 ON t1.d=t4.d
8396  WHERE t4.z>0 AND t3.y>0
8397  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8398} {
8399  15 115 215 315   -  - 215 15 315 15
8400  30 130 230 330 130 30 230 30 330 30
8401  45 145 245 345   -  - 245 45 345 45
8402  60 160 260 360 160 60 260 60 360 60
8403  75 175 275 375   -  - 275 75 375 75
8404  90 190 290 390 190 90 290 90 390 90
8405}
8406do_execsql_test joinD-312 {
8407  SELECT t1.*, t2.*, t3.*, t4.*
8408  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8409  INNER JOIN t3 ON t1.c=t3.c
8410  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8411  WHERE t2.x>0 AND t3.y>0
8412  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8413} {
8414  30 130 230 330 130 30 230 30 330 30
8415  60 160 260 360 160 60 260 60 360 60
8416  90 190 290 390 190 90 290 90 390 90
8417}
8418do_execsql_test joinD-313 {
8419  SELECT t1.*, t2.*, t3.*, t4.*
8420  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8421  INNER JOIN t3 ON t1.c=t3.c
8422  INNER JOIN t4 ON t1.d=t4.d
8423  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
8424  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8425} {
8426  30 130 230 330 130 30 230 30 330 30
8427  60 160 260 360 160 60 260 60 360 60
8428  90 190 290 390 190 90 290 90 390 90
8429}
8430do_execsql_test joinD-314 {
8431  SELECT t1.*, t2.*, t3.*, t4.*
8432  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8433  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8434  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8435  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8436} {
8437  15 115 215 315   -  - 215 15 315 15
8438  30 130 230 330 130 30 230 30 330 30
8439  45 145 245 345   -  - 245 45 345 45
8440  60 160 260 360 160 60 260 60 360 60
8441  75 175 275 375   -  - 275 75 375 75
8442  90 190 290 390 190 90 290 90 390 90
8443}
8444do_execsql_test joinD-315 {
8445  SELECT t1.*, t2.*, t3.*, t4.*
8446  FROM t1 LEFT JOIN t2 ON t2.x>0
8447  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8448  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8449  WHERE t1.b IS NOT DISTINCT FROM t2.b
8450  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8451} {
8452  30 130 230 330 130 30 230 30 330 30
8453  60 160 260 360 160 60 260 60 360 60
8454  90 190 290 390 190 90 290 90 390 90
8455}
8456do_execsql_test joinD-316 {
8457  SELECT t1.*, t2.*, t3.*, t4.*
8458  FROM t1 LEFT JOIN t2 ON t2.x>0
8459  INNER JOIN t3 ON t3.y>0
8460  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8461  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
8462  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8463} {
8464  30 130 230 330 130 30 230 30 330 30
8465  60 160 260 360 160 60 260 60 360 60
8466  90 190 290 390 190 90 290 90 390 90
8467}
8468do_execsql_test joinD-317 {
8469  SELECT t1.*, t2.*, t3.*, t4.*
8470  FROM t1 LEFT JOIN t2 ON t2.x>0
8471  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8472  INNER JOIN t4 ON t4.z>0
8473  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
8474  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8475} {
8476  30 130 230 330 130 30 230 30 330 30
8477  60 160 260 360 160 60 260 60 360 60
8478  90 190 290 390 190 90 290 90 390 90
8479}
8480do_execsql_test joinD-318 {
8481  SELECT t1.*, t2.*, t3.*, t4.*
8482  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
8483  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8484  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8485  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8486} {
8487  15 115 215 315   -  - 215 15 315 15
8488  30 130 230 330 130 30 230 30 330 30
8489  45 145 245 345   -  - 245 45 345 45
8490  60 160 260 360 160 60 260 60 360 60
8491  75 175 275 375   -  - 275 75 375 75
8492  90 190 290 390 190 90 290 90 390 90
8493}
8494do_execsql_test joinD-319 {
8495  SELECT t1.*, t2.*, t3.*, t4.*
8496  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8497  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
8498  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8499  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8500} {
8501  15 115 215 315   -  - 215 15 315 15
8502  30 130 230 330 130 30 230 30 330 30
8503  45 145 245 345   -  - 245 45 345 45
8504  60 160 260 360 160 60 260 60 360 60
8505  75 175 275 375   -  - 275 75 375 75
8506  90 190 290 390 190 90 290 90 390 90
8507}
8508do_execsql_test joinD-320 {
8509  SELECT t1.*, t2.*, t3.*, t4.*
8510  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8511  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8512  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8513  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8514} {
8515   3 103 203 303   -  - 203  3   -  -
8516   6 106 206 306 106  6 206  6   -  -
8517   9 109 209 309   -  - 209  9   -  -
8518  12 112 212 312 112 12 212 12   -  -
8519  15 115 215 315   -  - 215 15 315 15
8520  18 118 218 318 118 18 218 18   -  -
8521  21 121 221 321   -  - 221 21   -  -
8522  24 124 224 324 124 24 224 24   -  -
8523  27 127 227 327   -  - 227 27   -  -
8524  30 130 230 330 130 30 230 30 330 30
8525  33 133 233 333   -  - 233 33   -  -
8526  36 136 236 336 136 36 236 36   -  -
8527  39 139 239 339   -  - 239 39   -  -
8528  42 142 242 342 142 42 242 42   -  -
8529  45 145 245 345   -  - 245 45 345 45
8530  48 148 248 348 148 48 248 48   -  -
8531  51 151 251 351   -  - 251 51   -  -
8532  54 154 254 354 154 54 254 54   -  -
8533  57 157 257 357   -  - 257 57   -  -
8534  60 160 260 360 160 60 260 60 360 60
8535  63 163 263 363   -  - 263 63   -  -
8536  66 166 266 366 166 66 266 66   -  -
8537  69 169 269 369   -  - 269 69   -  -
8538  72 172 272 372 172 72 272 72   -  -
8539  75 175 275 375   -  - 275 75 375 75
8540  78 178 278 378 178 78 278 78   -  -
8541  81 181 281 381   -  - 281 81   -  -
8542  84 184 284 384 184 84 284 84   -  -
8543  87 187 287 387   -  - 287 87   -  -
8544  90 190 290 390 190 90 290 90 390 90
8545  93 193 293 393   -  - 293 93   -  -
8546}
8547do_execsql_test joinD-321 {
8548  SELECT t1.*, t2.*, t3.*, t4.*
8549  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8550  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8551  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8552  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8553} {
8554   3 103 203 303   -  - 203  3   -  -
8555   6 106 206 306 106  6 206  6   -  -
8556   9 109 209 309   -  - 209  9   -  -
8557  12 112 212 312 112 12 212 12   -  -
8558  15 115 215 315   -  - 215 15 315 15
8559  18 118 218 318 118 18 218 18   -  -
8560  21 121 221 321   -  - 221 21   -  -
8561  24 124 224 324 124 24 224 24   -  -
8562  27 127 227 327   -  - 227 27   -  -
8563  30 130 230 330 130 30 230 30 330 30
8564  33 133 233 333   -  - 233 33   -  -
8565  36 136 236 336 136 36 236 36   -  -
8566  39 139 239 339   -  - 239 39   -  -
8567  42 142 242 342 142 42 242 42   -  -
8568  45 145 245 345   -  - 245 45 345 45
8569  48 148 248 348 148 48 248 48   -  -
8570  51 151 251 351   -  - 251 51   -  -
8571  54 154 254 354 154 54 254 54   -  -
8572  57 157 257 357   -  - 257 57   -  -
8573  60 160 260 360 160 60 260 60 360 60
8574  63 163 263 363   -  - 263 63   -  -
8575  66 166 266 366 166 66 266 66   -  -
8576  69 169 269 369   -  - 269 69   -  -
8577  72 172 272 372 172 72 272 72   -  -
8578  75 175 275 375   -  - 275 75 375 75
8579  78 178 278 378 178 78 278 78   -  -
8580  81 181 281 381   -  - 281 81   -  -
8581  84 184 284 384 184 84 284 84   -  -
8582  87 187 287 387   -  - 287 87   -  -
8583  90 190 290 390 190 90 290 90 390 90
8584  93 193 293 393   -  - 293 93   -  -
8585}
8586do_execsql_test joinD-322 {
8587  SELECT t1.*, t2.*, t3.*, t4.*
8588  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8589  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8590  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8591  WHERE t2.x>0
8592  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8593} {
8594   6 106 206 306 106  6 206  6   -  -
8595  12 112 212 312 112 12 212 12   -  -
8596  18 118 218 318 118 18 218 18   -  -
8597  24 124 224 324 124 24 224 24   -  -
8598  30 130 230 330 130 30 230 30 330 30
8599  36 136 236 336 136 36 236 36   -  -
8600  42 142 242 342 142 42 242 42   -  -
8601  48 148 248 348 148 48 248 48   -  -
8602  54 154 254 354 154 54 254 54   -  -
8603  60 160 260 360 160 60 260 60 360 60
8604  66 166 266 366 166 66 266 66   -  -
8605  72 172 272 372 172 72 272 72   -  -
8606  78 178 278 378 178 78 278 78   -  -
8607  84 184 284 384 184 84 284 84   -  -
8608  90 190 290 390 190 90 290 90 390 90
8609}
8610do_execsql_test joinD-323 {
8611  SELECT t1.*, t2.*, t3.*, t4.*
8612  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8613  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8614  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8615  WHERE (t2.x>0 OR t2.x IS NULL)
8616  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8617} {
8618   3 103 203 303   -  - 203  3   -  -
8619   6 106 206 306 106  6 206  6   -  -
8620   9 109 209 309   -  - 209  9   -  -
8621  12 112 212 312 112 12 212 12   -  -
8622  15 115 215 315   -  - 215 15 315 15
8623  18 118 218 318 118 18 218 18   -  -
8624  21 121 221 321   -  - 221 21   -  -
8625  24 124 224 324 124 24 224 24   -  -
8626  27 127 227 327   -  - 227 27   -  -
8627  30 130 230 330 130 30 230 30 330 30
8628  33 133 233 333   -  - 233 33   -  -
8629  36 136 236 336 136 36 236 36   -  -
8630  39 139 239 339   -  - 239 39   -  -
8631  42 142 242 342 142 42 242 42   -  -
8632  45 145 245 345   -  - 245 45 345 45
8633  48 148 248 348 148 48 248 48   -  -
8634  51 151 251 351   -  - 251 51   -  -
8635  54 154 254 354 154 54 254 54   -  -
8636  57 157 257 357   -  - 257 57   -  -
8637  60 160 260 360 160 60 260 60 360 60
8638  63 163 263 363   -  - 263 63   -  -
8639  66 166 266 366 166 66 266 66   -  -
8640  69 169 269 369   -  - 269 69   -  -
8641  72 172 272 372 172 72 272 72   -  -
8642  75 175 275 375   -  - 275 75 375 75
8643  78 178 278 378 178 78 278 78   -  -
8644  81 181 281 381   -  - 281 81   -  -
8645  84 184 284 384 184 84 284 84   -  -
8646  87 187 287 387   -  - 287 87   -  -
8647  90 190 290 390 190 90 290 90 390 90
8648  93 193 293 393   -  - 293 93   -  -
8649}
8650do_execsql_test joinD-324 {
8651  SELECT t1.*, t2.*, t3.*, t4.*
8652  FROM t1 LEFT JOIN t2 ON true
8653  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8654  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8655  WHERE t1.b=t2.b AND t2.x>0
8656  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8657} {
8658   6 106 206 306 106  6 206  6   -  -
8659  12 112 212 312 112 12 212 12   -  -
8660  18 118 218 318 118 18 218 18   -  -
8661  24 124 224 324 124 24 224 24   -  -
8662  30 130 230 330 130 30 230 30 330 30
8663  36 136 236 336 136 36 236 36   -  -
8664  42 142 242 342 142 42 242 42   -  -
8665  48 148 248 348 148 48 248 48   -  -
8666  54 154 254 354 154 54 254 54   -  -
8667  60 160 260 360 160 60 260 60 360 60
8668  66 166 266 366 166 66 266 66   -  -
8669  72 172 272 372 172 72 272 72   -  -
8670  78 178 278 378 178 78 278 78   -  -
8671  84 184 284 384 184 84 284 84   -  -
8672  90 190 290 390 190 90 290 90 390 90
8673}
8674do_execsql_test joinD-325 {
8675  SELECT t1.*, t2.*, t3.*, t4.*
8676  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8677  INNER JOIN t3 ON t1.c=t3.c
8678  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8679  WHERE t3.y>0
8680  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8681} {
8682   3 103 203 303   -  - 203  3   -  -
8683   6 106 206 306 106  6 206  6   -  -
8684   9 109 209 309   -  - 209  9   -  -
8685  12 112 212 312 112 12 212 12   -  -
8686  15 115 215 315   -  - 215 15 315 15
8687  18 118 218 318 118 18 218 18   -  -
8688  21 121 221 321   -  - 221 21   -  -
8689  24 124 224 324 124 24 224 24   -  -
8690  27 127 227 327   -  - 227 27   -  -
8691  30 130 230 330 130 30 230 30 330 30
8692  33 133 233 333   -  - 233 33   -  -
8693  36 136 236 336 136 36 236 36   -  -
8694  39 139 239 339   -  - 239 39   -  -
8695  42 142 242 342 142 42 242 42   -  -
8696  45 145 245 345   -  - 245 45 345 45
8697  48 148 248 348 148 48 248 48   -  -
8698  51 151 251 351   -  - 251 51   -  -
8699  54 154 254 354 154 54 254 54   -  -
8700  57 157 257 357   -  - 257 57   -  -
8701  60 160 260 360 160 60 260 60 360 60
8702  63 163 263 363   -  - 263 63   -  -
8703  66 166 266 366 166 66 266 66   -  -
8704  69 169 269 369   -  - 269 69   -  -
8705  72 172 272 372 172 72 272 72   -  -
8706  75 175 275 375   -  - 275 75 375 75
8707  78 178 278 378 178 78 278 78   -  -
8708  81 181 281 381   -  - 281 81   -  -
8709  84 184 284 384 184 84 284 84   -  -
8710  87 187 287 387   -  - 287 87   -  -
8711  90 190 290 390 190 90 290 90 390 90
8712  93 193 293 393   -  - 293 93   -  -
8713}
8714do_execsql_test joinD-326 {
8715  SELECT t1.*, t2.*, t3.*, t4.*
8716  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8717  INNER JOIN t3 ON t1.c=t3.c
8718  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8719  WHERE t3.y>0 OR t3.y IS NULL
8720  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8721} {
8722   3 103 203 303   -  - 203  3   -  -
8723   6 106 206 306 106  6 206  6   -  -
8724   9 109 209 309   -  - 209  9   -  -
8725  12 112 212 312 112 12 212 12   -  -
8726  15 115 215 315   -  - 215 15 315 15
8727  18 118 218 318 118 18 218 18   -  -
8728  21 121 221 321   -  - 221 21   -  -
8729  24 124 224 324 124 24 224 24   -  -
8730  27 127 227 327   -  - 227 27   -  -
8731  30 130 230 330 130 30 230 30 330 30
8732  33 133 233 333   -  - 233 33   -  -
8733  36 136 236 336 136 36 236 36   -  -
8734  39 139 239 339   -  - 239 39   -  -
8735  42 142 242 342 142 42 242 42   -  -
8736  45 145 245 345   -  - 245 45 345 45
8737  48 148 248 348 148 48 248 48   -  -
8738  51 151 251 351   -  - 251 51   -  -
8739  54 154 254 354 154 54 254 54   -  -
8740  57 157 257 357   -  - 257 57   -  -
8741  60 160 260 360 160 60 260 60 360 60
8742  63 163 263 363   -  - 263 63   -  -
8743  66 166 266 366 166 66 266 66   -  -
8744  69 169 269 369   -  - 269 69   -  -
8745  72 172 272 372 172 72 272 72   -  -
8746  75 175 275 375   -  - 275 75 375 75
8747  78 178 278 378 178 78 278 78   -  -
8748  81 181 281 381   -  - 281 81   -  -
8749  84 184 284 384 184 84 284 84   -  -
8750  87 187 287 387   -  - 287 87   -  -
8751  90 190 290 390 190 90 290 90 390 90
8752  93 193 293 393   -  - 293 93   -  -
8753}
8754do_execsql_test joinD-327 {
8755  SELECT t1.*, t2.*, t3.*, t4.*
8756  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8757  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8758  LEFT JOIN t4 ON t1.d=t4.d
8759  WHERE t4.z>0
8760  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8761} {
8762  15 115 215 315   -  - 215 15 315 15
8763  30 130 230 330 130 30 230 30 330 30
8764  45 145 245 345   -  - 245 45 345 45
8765  60 160 260 360 160 60 260 60 360 60
8766  75 175 275 375   -  - 275 75 375 75
8767  90 190 290 390 190 90 290 90 390 90
8768}
8769do_execsql_test joinD-328 {
8770  SELECT t1.*, t2.*, t3.*, t4.*
8771  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8772  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8773  LEFT JOIN t4 ON t1.d=t4.d
8774  WHERE t4.z IS NULL OR t4.z>0
8775  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8776} {
8777   3 103 203 303   -  - 203  3   -  -
8778   6 106 206 306 106  6 206  6   -  -
8779   9 109 209 309   -  - 209  9   -  -
8780  12 112 212 312 112 12 212 12   -  -
8781  15 115 215 315   -  - 215 15 315 15
8782  18 118 218 318 118 18 218 18   -  -
8783  21 121 221 321   -  - 221 21   -  -
8784  24 124 224 324 124 24 224 24   -  -
8785  27 127 227 327   -  - 227 27   -  -
8786  30 130 230 330 130 30 230 30 330 30
8787  33 133 233 333   -  - 233 33   -  -
8788  36 136 236 336 136 36 236 36   -  -
8789  39 139 239 339   -  - 239 39   -  -
8790  42 142 242 342 142 42 242 42   -  -
8791  45 145 245 345   -  - 245 45 345 45
8792  48 148 248 348 148 48 248 48   -  -
8793  51 151 251 351   -  - 251 51   -  -
8794  54 154 254 354 154 54 254 54   -  -
8795  57 157 257 357   -  - 257 57   -  -
8796  60 160 260 360 160 60 260 60 360 60
8797  63 163 263 363   -  - 263 63   -  -
8798  66 166 266 366 166 66 266 66   -  -
8799  69 169 269 369   -  - 269 69   -  -
8800  72 172 272 372 172 72 272 72   -  -
8801  75 175 275 375   -  - 275 75 375 75
8802  78 178 278 378 178 78 278 78   -  -
8803  81 181 281 381   -  - 281 81   -  -
8804  84 184 284 384 184 84 284 84   -  -
8805  87 187 287 387   -  - 287 87   -  -
8806  90 190 290 390 190 90 290 90 390 90
8807  93 193 293 393   -  - 293 93   -  -
8808}
8809do_execsql_test joinD-329 {
8810  SELECT t1.*, t2.*, t3.*, t4.*
8811  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8812  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8813  LEFT JOIN t4 ON t1.d=t4.d
8814  WHERE t2.x>0 AND t4.z>0
8815  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8816} {
8817  30 130 230 330 130 30 230 30 330 30
8818  60 160 260 360 160 60 260 60 360 60
8819  90 190 290 390 190 90 290 90 390 90
8820}
8821do_execsql_test joinD-330 {
8822  SELECT t1.*, t2.*, t3.*, t4.*
8823  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8824  INNER JOIN t3 ON t1.c=t3.c
8825  LEFT JOIN t4 ON t1.d=t4.d
8826  WHERE t4.z>0 AND t3.y>0
8827  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8828} {
8829  15 115 215 315   -  - 215 15 315 15
8830  30 130 230 330 130 30 230 30 330 30
8831  45 145 245 345   -  - 245 45 345 45
8832  60 160 260 360 160 60 260 60 360 60
8833  75 175 275 375   -  - 275 75 375 75
8834  90 190 290 390 190 90 290 90 390 90
8835}
8836do_execsql_test joinD-331 {
8837  SELECT t1.*, t2.*, t3.*, t4.*
8838  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8839  INNER JOIN t3 ON t1.c=t3.c
8840  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8841  WHERE t2.x>0 AND t3.y>0
8842  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8843} {
8844   6 106 206 306 106  6 206  6   -  -
8845  12 112 212 312 112 12 212 12   -  -
8846  18 118 218 318 118 18 218 18   -  -
8847  24 124 224 324 124 24 224 24   -  -
8848  30 130 230 330 130 30 230 30 330 30
8849  36 136 236 336 136 36 236 36   -  -
8850  42 142 242 342 142 42 242 42   -  -
8851  48 148 248 348 148 48 248 48   -  -
8852  54 154 254 354 154 54 254 54   -  -
8853  60 160 260 360 160 60 260 60 360 60
8854  66 166 266 366 166 66 266 66   -  -
8855  72 172 272 372 172 72 272 72   -  -
8856  78 178 278 378 178 78 278 78   -  -
8857  84 184 284 384 184 84 284 84   -  -
8858  90 190 290 390 190 90 290 90 390 90
8859}
8860do_execsql_test joinD-332 {
8861  SELECT t1.*, t2.*, t3.*, t4.*
8862  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8863  INNER JOIN t3 ON t1.c=t3.c
8864  LEFT JOIN t4 ON t1.d=t4.d
8865  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
8866  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8867} {
8868  30 130 230 330 130 30 230 30 330 30
8869  60 160 260 360 160 60 260 60 360 60
8870  90 190 290 390 190 90 290 90 390 90
8871}
8872do_execsql_test joinD-333 {
8873  SELECT t1.*, t2.*, t3.*, t4.*
8874  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8875  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8876  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8877  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8878} {
8879   3 103 203 303   -  - 203  3   -  -
8880   6 106 206 306 106  6 206  6   -  -
8881   9 109 209 309   -  - 209  9   -  -
8882  12 112 212 312 112 12 212 12   -  -
8883  15 115 215 315   -  - 215 15 315 15
8884  18 118 218 318 118 18 218 18   -  -
8885  21 121 221 321   -  - 221 21   -  -
8886  24 124 224 324 124 24 224 24   -  -
8887  27 127 227 327   -  - 227 27   -  -
8888  30 130 230 330 130 30 230 30 330 30
8889  33 133 233 333   -  - 233 33   -  -
8890  36 136 236 336 136 36 236 36   -  -
8891  39 139 239 339   -  - 239 39   -  -
8892  42 142 242 342 142 42 242 42   -  -
8893  45 145 245 345   -  - 245 45 345 45
8894  48 148 248 348 148 48 248 48   -  -
8895  51 151 251 351   -  - 251 51   -  -
8896  54 154 254 354 154 54 254 54   -  -
8897  57 157 257 357   -  - 257 57   -  -
8898  60 160 260 360 160 60 260 60 360 60
8899  63 163 263 363   -  - 263 63   -  -
8900  66 166 266 366 166 66 266 66   -  -
8901  69 169 269 369   -  - 269 69   -  -
8902  72 172 272 372 172 72 272 72   -  -
8903  75 175 275 375   -  - 275 75 375 75
8904  78 178 278 378 178 78 278 78   -  -
8905  81 181 281 381   -  - 281 81   -  -
8906  84 184 284 384 184 84 284 84   -  -
8907  87 187 287 387   -  - 287 87   -  -
8908  90 190 290 390 190 90 290 90 390 90
8909  93 193 293 393   -  - 293 93   -  -
8910}
8911do_execsql_test joinD-334 {
8912  SELECT t1.*, t2.*, t3.*, t4.*
8913  FROM t1 LEFT JOIN t2 ON t2.x>0
8914  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8915  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8916  WHERE t1.b IS NOT DISTINCT FROM t2.b
8917  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8918} {
8919   6 106 206 306 106  6 206  6   -  -
8920  12 112 212 312 112 12 212 12   -  -
8921  18 118 218 318 118 18 218 18   -  -
8922  24 124 224 324 124 24 224 24   -  -
8923  30 130 230 330 130 30 230 30 330 30
8924  36 136 236 336 136 36 236 36   -  -
8925  42 142 242 342 142 42 242 42   -  -
8926  48 148 248 348 148 48 248 48   -  -
8927  54 154 254 354 154 54 254 54   -  -
8928  60 160 260 360 160 60 260 60 360 60
8929  66 166 266 366 166 66 266 66   -  -
8930  72 172 272 372 172 72 272 72   -  -
8931  78 178 278 378 178 78 278 78   -  -
8932  84 184 284 384 184 84 284 84   -  -
8933  90 190 290 390 190 90 290 90 390 90
8934}
8935do_execsql_test joinD-335 {
8936  SELECT t1.*, t2.*, t3.*, t4.*
8937  FROM t1 LEFT JOIN t2 ON t2.x>0
8938  INNER JOIN t3 ON t3.y>0
8939  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8940  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
8941  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8942} {
8943   6 106 206 306 106  6 206  6   -  -
8944  12 112 212 312 112 12 212 12   -  -
8945  18 118 218 318 118 18 218 18   -  -
8946  24 124 224 324 124 24 224 24   -  -
8947  30 130 230 330 130 30 230 30 330 30
8948  36 136 236 336 136 36 236 36   -  -
8949  42 142 242 342 142 42 242 42   -  -
8950  48 148 248 348 148 48 248 48   -  -
8951  54 154 254 354 154 54 254 54   -  -
8952  60 160 260 360 160 60 260 60 360 60
8953  66 166 266 366 166 66 266 66   -  -
8954  72 172 272 372 172 72 272 72   -  -
8955  78 178 278 378 178 78 278 78   -  -
8956  84 184 284 384 184 84 284 84   -  -
8957  90 190 290 390 190 90 290 90 390 90
8958}
8959do_execsql_test joinD-336 {
8960  SELECT t1.*, t2.*, t3.*, t4.*
8961  FROM t1 LEFT JOIN t2 ON t2.x>0
8962  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8963  LEFT JOIN t4 ON t4.z>0
8964  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
8965  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8966} {
8967  30 130 230 330 130 30 230 30 330 30
8968  60 160 260 360 160 60 260 60 360 60
8969  90 190 290 390 190 90 290 90 390 90
8970}
8971do_execsql_test joinD-337 {
8972  SELECT t1.*, t2.*, t3.*, t4.*
8973  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
8974  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8975  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8976  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8977} {
8978   3 103 203 303   -  - 203  3   -  -
8979   6 106 206 306 106  6 206  6   -  -
8980   9 109 209 309   -  - 209  9   -  -
8981  12 112 212 312 112 12 212 12   -  -
8982  15 115 215 315   -  - 215 15 315 15
8983  18 118 218 318 118 18 218 18   -  -
8984  21 121 221 321   -  - 221 21   -  -
8985  24 124 224 324 124 24 224 24   -  -
8986  27 127 227 327   -  - 227 27   -  -
8987  30 130 230 330 130 30 230 30 330 30
8988  33 133 233 333   -  - 233 33   -  -
8989  36 136 236 336 136 36 236 36   -  -
8990  39 139 239 339   -  - 239 39   -  -
8991  42 142 242 342 142 42 242 42   -  -
8992  45 145 245 345   -  - 245 45 345 45
8993  48 148 248 348 148 48 248 48   -  -
8994  51 151 251 351   -  - 251 51   -  -
8995  54 154 254 354 154 54 254 54   -  -
8996  57 157 257 357   -  - 257 57   -  -
8997  60 160 260 360 160 60 260 60 360 60
8998  63 163 263 363   -  - 263 63   -  -
8999  66 166 266 366 166 66 266 66   -  -
9000  69 169 269 369   -  - 269 69   -  -
9001  72 172 272 372 172 72 272 72   -  -
9002  75 175 275 375   -  - 275 75 375 75
9003  78 178 278 378 178 78 278 78   -  -
9004  81 181 281 381   -  - 281 81   -  -
9005  84 184 284 384 184 84 284 84   -  -
9006  87 187 287 387   -  - 287 87   -  -
9007  90 190 290 390 190 90 290 90 390 90
9008  93 193 293 393   -  - 293 93   -  -
9009}
9010do_execsql_test joinD-338 {
9011  SELECT t1.*, t2.*, t3.*, t4.*
9012  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9013  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
9014  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
9015  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9016} {
9017   3 103 203 303   -  - 203  3   -  -
9018   6 106 206 306 106  6 206  6   -  -
9019   9 109 209 309   -  - 209  9   -  -
9020  12 112 212 312 112 12 212 12   -  -
9021  15 115 215 315   -  - 215 15 315 15
9022  18 118 218 318 118 18 218 18   -  -
9023  21 121 221 321   -  - 221 21   -  -
9024  24 124 224 324 124 24 224 24   -  -
9025  27 127 227 327   -  - 227 27   -  -
9026  30 130 230 330 130 30 230 30 330 30
9027  33 133 233 333   -  - 233 33   -  -
9028  36 136 236 336 136 36 236 36   -  -
9029  39 139 239 339   -  - 239 39   -  -
9030  42 142 242 342 142 42 242 42   -  -
9031  45 145 245 345   -  - 245 45 345 45
9032  48 148 248 348 148 48 248 48   -  -
9033  51 151 251 351   -  - 251 51   -  -
9034  54 154 254 354 154 54 254 54   -  -
9035  57 157 257 357   -  - 257 57   -  -
9036  60 160 260 360 160 60 260 60 360 60
9037  63 163 263 363   -  - 263 63   -  -
9038  66 166 266 366 166 66 266 66   -  -
9039  69 169 269 369   -  - 269 69   -  -
9040  72 172 272 372 172 72 272 72   -  -
9041  75 175 275 375   -  - 275 75 375 75
9042  78 178 278 378 178 78 278 78   -  -
9043  81 181 281 381   -  - 281 81   -  -
9044  84 184 284 384 184 84 284 84   -  -
9045  87 187 287 387   -  - 287 87   -  -
9046  90 190 290 390 190 90 290 90 390 90
9047  93 193 293 393   -  - 293 93   -  -
9048}
9049do_execsql_test joinD-339 {
9050  SELECT t1.*, t2.*, t3.*, t4.*
9051  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9052  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9053  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9054  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9055} {
9056  15 115 215 315   -  - 215 15 315 15
9057  30 130 230 330 130 30 230 30 330 30
9058  45 145 245 345   -  - 245 45 345 45
9059  60 160 260 360 160 60 260 60 360 60
9060  75 175 275 375   -  - 275 75 375 75
9061  90 190 290 390 190 90 290 90 390 90
9062   -   -   -   -   -  -   -  - 300  0
9063   -   -   -   -   -  -   -  - 305  5
9064   -   -   -   -   -  -   -  - 310 10
9065   -   -   -   -   -  -   -  - 320 20
9066   -   -   -   -   -  -   -  - 325 25
9067   -   -   -   -   -  -   -  - 335 35
9068   -   -   -   -   -  -   -  - 340 40
9069   -   -   -   -   -  -   -  - 350 50
9070   -   -   -   -   -  -   -  - 355 55
9071   -   -   -   -   -  -   -  - 365 65
9072   -   -   -   -   -  -   -  - 370 70
9073   -   -   -   -   -  -   -  - 380 80
9074   -   -   -   -   -  -   -  - 385 85
9075   -   -   -   -   -  -   -  - 395 95
9076}
9077do_execsql_test joinD-340 {
9078  SELECT t1.*, t2.*, t3.*, t4.*
9079  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9080  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9081  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9082  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9083} {
9084  15 115 215 315   -  - 215 15 315 15
9085  30 130 230 330 130 30 230 30 330 30
9086  45 145 245 345   -  - 245 45 345 45
9087  60 160 260 360 160 60 260 60 360 60
9088  75 175 275 375   -  - 275 75 375 75
9089  90 190 290 390 190 90 290 90 390 90
9090   -   -   -   -   -  -   -  - 300  0
9091   -   -   -   -   -  -   -  - 305  5
9092   -   -   -   -   -  -   -  - 310 10
9093   -   -   -   -   -  -   -  - 320 20
9094   -   -   -   -   -  -   -  - 325 25
9095   -   -   -   -   -  -   -  - 335 35
9096   -   -   -   -   -  -   -  - 340 40
9097   -   -   -   -   -  -   -  - 350 50
9098   -   -   -   -   -  -   -  - 355 55
9099   -   -   -   -   -  -   -  - 365 65
9100   -   -   -   -   -  -   -  - 370 70
9101   -   -   -   -   -  -   -  - 380 80
9102   -   -   -   -   -  -   -  - 385 85
9103   -   -   -   -   -  -   -  - 395 95
9104}
9105do_execsql_test joinD-341 {
9106  SELECT t1.*, t2.*, t3.*, t4.*
9107  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9108  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9109  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9110  WHERE t2.x>0
9111  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9112} {
9113  30 130 230 330 130 30 230 30 330 30
9114  60 160 260 360 160 60 260 60 360 60
9115  90 190 290 390 190 90 290 90 390 90
9116}
9117do_execsql_test joinD-342 {
9118  SELECT t1.*, t2.*, t3.*, t4.*
9119  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9120  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9121  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9122  WHERE (t2.x>0 OR t2.x IS NULL)
9123  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9124} {
9125  15 115 215 315   -  - 215 15 315 15
9126  30 130 230 330 130 30 230 30 330 30
9127  45 145 245 345   -  - 245 45 345 45
9128  60 160 260 360 160 60 260 60 360 60
9129  75 175 275 375   -  - 275 75 375 75
9130  90 190 290 390 190 90 290 90 390 90
9131   -   -   -   -   -  -   -  - 300  0
9132   -   -   -   -   -  -   -  - 305  5
9133   -   -   -   -   -  -   -  - 310 10
9134   -   -   -   -   -  -   -  - 320 20
9135   -   -   -   -   -  -   -  - 325 25
9136   -   -   -   -   -  -   -  - 335 35
9137   -   -   -   -   -  -   -  - 340 40
9138   -   -   -   -   -  -   -  - 350 50
9139   -   -   -   -   -  -   -  - 355 55
9140   -   -   -   -   -  -   -  - 365 65
9141   -   -   -   -   -  -   -  - 370 70
9142   -   -   -   -   -  -   -  - 380 80
9143   -   -   -   -   -  -   -  - 385 85
9144   -   -   -   -   -  -   -  - 395 95
9145}
9146do_execsql_test joinD-343 {
9147  SELECT t1.*, t2.*, t3.*, t4.*
9148  FROM t1 LEFT JOIN t2 ON true
9149  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9150  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9151  WHERE t1.b=t2.b AND t2.x>0
9152  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9153} {
9154  30 130 230 330 130 30 230 30 330 30
9155  60 160 260 360 160 60 260 60 360 60
9156  90 190 290 390 190 90 290 90 390 90
9157}
9158do_execsql_test joinD-344 {
9159  SELECT t1.*, t2.*, t3.*, t4.*
9160  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9161  INNER JOIN t3 ON t1.c=t3.c
9162  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9163  WHERE t3.y>0
9164  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9165} {
9166  15 115 215 315   -  - 215 15 315 15
9167  30 130 230 330 130 30 230 30 330 30
9168  45 145 245 345   -  - 245 45 345 45
9169  60 160 260 360 160 60 260 60 360 60
9170  75 175 275 375   -  - 275 75 375 75
9171  90 190 290 390 190 90 290 90 390 90
9172}
9173do_execsql_test joinD-345 {
9174  SELECT t1.*, t2.*, t3.*, t4.*
9175  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9176  INNER JOIN t3 ON t1.c=t3.c
9177  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9178  WHERE t3.y>0 OR t3.y IS NULL
9179  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9180} {
9181  15 115 215 315   -  - 215 15 315 15
9182  30 130 230 330 130 30 230 30 330 30
9183  45 145 245 345   -  - 245 45 345 45
9184  60 160 260 360 160 60 260 60 360 60
9185  75 175 275 375   -  - 275 75 375 75
9186  90 190 290 390 190 90 290 90 390 90
9187   -   -   -   -   -  -   -  - 300  0
9188   -   -   -   -   -  -   -  - 305  5
9189   -   -   -   -   -  -   -  - 310 10
9190   -   -   -   -   -  -   -  - 320 20
9191   -   -   -   -   -  -   -  - 325 25
9192   -   -   -   -   -  -   -  - 335 35
9193   -   -   -   -   -  -   -  - 340 40
9194   -   -   -   -   -  -   -  - 350 50
9195   -   -   -   -   -  -   -  - 355 55
9196   -   -   -   -   -  -   -  - 365 65
9197   -   -   -   -   -  -   -  - 370 70
9198   -   -   -   -   -  -   -  - 380 80
9199   -   -   -   -   -  -   -  - 385 85
9200   -   -   -   -   -  -   -  - 395 95
9201}
9202do_execsql_test joinD-346 {
9203  SELECT t1.*, t2.*, t3.*, t4.*
9204  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9205  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9206  RIGHT JOIN t4 ON t1.d=t4.d
9207  WHERE t4.z>0
9208  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9209} {
9210  15 115 215 315   -  - 215 15 315 15
9211  30 130 230 330 130 30 230 30 330 30
9212  45 145 245 345   -  - 245 45 345 45
9213  60 160 260 360 160 60 260 60 360 60
9214  75 175 275 375   -  - 275 75 375 75
9215  90 190 290 390 190 90 290 90 390 90
9216   -   -   -   -   -  -   -  - 305  5
9217   -   -   -   -   -  -   -  - 310 10
9218   -   -   -   -   -  -   -  - 320 20
9219   -   -   -   -   -  -   -  - 325 25
9220   -   -   -   -   -  -   -  - 335 35
9221   -   -   -   -   -  -   -  - 340 40
9222   -   -   -   -   -  -   -  - 350 50
9223   -   -   -   -   -  -   -  - 355 55
9224   -   -   -   -   -  -   -  - 365 65
9225   -   -   -   -   -  -   -  - 370 70
9226   -   -   -   -   -  -   -  - 380 80
9227   -   -   -   -   -  -   -  - 385 85
9228   -   -   -   -   -  -   -  - 395 95
9229}
9230do_execsql_test joinD-347 {
9231  SELECT t1.*, t2.*, t3.*, t4.*
9232  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9233  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9234  RIGHT JOIN t4 ON t1.d=t4.d
9235  WHERE t4.z IS NULL OR t4.z>0
9236  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9237} {
9238  15 115 215 315   -  - 215 15 315 15
9239  30 130 230 330 130 30 230 30 330 30
9240  45 145 245 345   -  - 245 45 345 45
9241  60 160 260 360 160 60 260 60 360 60
9242  75 175 275 375   -  - 275 75 375 75
9243  90 190 290 390 190 90 290 90 390 90
9244   -   -   -   -   -  -   -  - 305  5
9245   -   -   -   -   -  -   -  - 310 10
9246   -   -   -   -   -  -   -  - 320 20
9247   -   -   -   -   -  -   -  - 325 25
9248   -   -   -   -   -  -   -  - 335 35
9249   -   -   -   -   -  -   -  - 340 40
9250   -   -   -   -   -  -   -  - 350 50
9251   -   -   -   -   -  -   -  - 355 55
9252   -   -   -   -   -  -   -  - 365 65
9253   -   -   -   -   -  -   -  - 370 70
9254   -   -   -   -   -  -   -  - 380 80
9255   -   -   -   -   -  -   -  - 385 85
9256   -   -   -   -   -  -   -  - 395 95
9257}
9258do_execsql_test joinD-348 {
9259  SELECT t1.*, t2.*, t3.*, t4.*
9260  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9261  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9262  RIGHT JOIN t4 ON t1.d=t4.d
9263  WHERE t2.x>0 AND t4.z>0
9264  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9265} {
9266  30 130 230 330 130 30 230 30 330 30
9267  60 160 260 360 160 60 260 60 360 60
9268  90 190 290 390 190 90 290 90 390 90
9269}
9270do_execsql_test joinD-349 {
9271  SELECT t1.*, t2.*, t3.*, t4.*
9272  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9273  INNER JOIN t3 ON t1.c=t3.c
9274  RIGHT JOIN t4 ON t1.d=t4.d
9275  WHERE t4.z>0 AND t3.y>0
9276  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9277} {
9278  15 115 215 315   -  - 215 15 315 15
9279  30 130 230 330 130 30 230 30 330 30
9280  45 145 245 345   -  - 245 45 345 45
9281  60 160 260 360 160 60 260 60 360 60
9282  75 175 275 375   -  - 275 75 375 75
9283  90 190 290 390 190 90 290 90 390 90
9284}
9285do_execsql_test joinD-350 {
9286  SELECT t1.*, t2.*, t3.*, t4.*
9287  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9288  INNER JOIN t3 ON t1.c=t3.c
9289  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9290  WHERE t2.x>0 AND t3.y>0
9291  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9292} {
9293  30 130 230 330 130 30 230 30 330 30
9294  60 160 260 360 160 60 260 60 360 60
9295  90 190 290 390 190 90 290 90 390 90
9296}
9297do_execsql_test joinD-351 {
9298  SELECT t1.*, t2.*, t3.*, t4.*
9299  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9300  INNER JOIN t3 ON t1.c=t3.c
9301  RIGHT JOIN t4 ON t1.d=t4.d
9302  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
9303  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9304} {
9305  30 130 230 330 130 30 230 30 330 30
9306  60 160 260 360 160 60 260 60 360 60
9307  90 190 290 390 190 90 290 90 390 90
9308}
9309do_execsql_test joinD-352 {
9310  SELECT t1.*, t2.*, t3.*, t4.*
9311  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9312  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9313  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
9314  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9315} {
9316  15 115 215 315   -  - 215 15 315 15
9317  30 130 230 330 130 30 230 30 330 30
9318  45 145 245 345   -  - 245 45 345 45
9319  60 160 260 360 160 60 260 60 360 60
9320  75 175 275 375   -  - 275 75 375 75
9321  90 190 290 390 190 90 290 90 390 90
9322   -   -   -   -   -  -   -  - 300  0
9323   -   -   -   -   -  -   -  - 305  5
9324   -   -   -   -   -  -   -  - 310 10
9325   -   -   -   -   -  -   -  - 320 20
9326   -   -   -   -   -  -   -  - 325 25
9327   -   -   -   -   -  -   -  - 335 35
9328   -   -   -   -   -  -   -  - 340 40
9329   -   -   -   -   -  -   -  - 350 50
9330   -   -   -   -   -  -   -  - 355 55
9331   -   -   -   -   -  -   -  - 365 65
9332   -   -   -   -   -  -   -  - 370 70
9333   -   -   -   -   -  -   -  - 380 80
9334   -   -   -   -   -  -   -  - 385 85
9335   -   -   -   -   -  -   -  - 395 95
9336}
9337do_execsql_test joinD-353 {
9338  SELECT t1.*, t2.*, t3.*, t4.*
9339  FROM t1 LEFT JOIN t2 ON t2.x>0
9340  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9341  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
9342  WHERE t1.b IS NOT DISTINCT FROM t2.b
9343  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9344} {
9345  30 130 230 330 130 30 230 30 330 30
9346  60 160 260 360 160 60 260 60 360 60
9347  90 190 290 390 190 90 290 90 390 90
9348   -   -   -   -   -  -   -  - 300  0
9349   -   -   -   -   -  -   -  - 305  5
9350   -   -   -   -   -  -   -  - 310 10
9351   -   -   -   -   -  -   -  - 320 20
9352   -   -   -   -   -  -   -  - 325 25
9353   -   -   -   -   -  -   -  - 335 35
9354   -   -   -   -   -  -   -  - 340 40
9355   -   -   -   -   -  -   -  - 350 50
9356   -   -   -   -   -  -   -  - 355 55
9357   -   -   -   -   -  -   -  - 365 65
9358   -   -   -   -   -  -   -  - 370 70
9359   -   -   -   -   -  -   -  - 380 80
9360   -   -   -   -   -  -   -  - 385 85
9361   -   -   -   -   -  -   -  - 395 95
9362}
9363do_execsql_test joinD-354 {
9364  SELECT t1.*, t2.*, t3.*, t4.*
9365  FROM t1 LEFT JOIN t2 ON t2.x>0
9366  INNER JOIN t3 ON t3.y>0
9367  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
9368  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
9369  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9370} {
9371  30 130 230 330 130 30 230 30 330 30
9372  60 160 260 360 160 60 260 60 360 60
9373  90 190 290 390 190 90 290 90 390 90
9374   -   -   -   -   -  -   -  - 300  0
9375}
9376do_execsql_test joinD-355 {
9377  SELECT t1.*, t2.*, t3.*, t4.*
9378  FROM t1 LEFT JOIN t2 ON t2.x>0
9379  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9380  RIGHT JOIN t4 ON t4.z>0
9381  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
9382  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9383} {
9384  30 130 230 330 130 30 230 30 330 30
9385  60 160 260 360 160 60 260 60 360 60
9386  90 190 290 390 190 90 290 90 390 90
9387}
9388do_execsql_test joinD-356 {
9389  SELECT t1.*, t2.*, t3.*, t4.*
9390  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
9391  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9392  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9393  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9394} {
9395  15 115 215 315   -  - 215 15 315 15
9396  30 130 230 330 130 30 230 30 330 30
9397  45 145 245 345   -  - 245 45 345 45
9398  60 160 260 360 160 60 260 60 360 60
9399  75 175 275 375   -  - 275 75 375 75
9400  90 190 290 390 190 90 290 90 390 90
9401   -   -   -   -   -  -   -  - 300  0
9402   -   -   -   -   -  -   -  - 305  5
9403   -   -   -   -   -  -   -  - 310 10
9404   -   -   -   -   -  -   -  - 320 20
9405   -   -   -   -   -  -   -  - 325 25
9406   -   -   -   -   -  -   -  - 335 35
9407   -   -   -   -   -  -   -  - 340 40
9408   -   -   -   -   -  -   -  - 350 50
9409   -   -   -   -   -  -   -  - 355 55
9410   -   -   -   -   -  -   -  - 365 65
9411   -   -   -   -   -  -   -  - 370 70
9412   -   -   -   -   -  -   -  - 380 80
9413   -   -   -   -   -  -   -  - 385 85
9414   -   -   -   -   -  -   -  - 395 95
9415}
9416do_execsql_test joinD-357 {
9417  SELECT t1.*, t2.*, t3.*, t4.*
9418  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9419  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
9420  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9421  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9422} {
9423  15 115 215 315   -  - 215 15 315 15
9424  30 130 230 330 130 30 230 30 330 30
9425  45 145 245 345   -  - 245 45 345 45
9426  60 160 260 360 160 60 260 60 360 60
9427  75 175 275 375   -  - 275 75 375 75
9428  90 190 290 390 190 90 290 90 390 90
9429   -   -   -   -   -  -   -  - 300  0
9430   -   -   -   -   -  -   -  - 305  5
9431   -   -   -   -   -  -   -  - 310 10
9432   -   -   -   -   -  -   -  - 320 20
9433   -   -   -   -   -  -   -  - 325 25
9434   -   -   -   -   -  -   -  - 335 35
9435   -   -   -   -   -  -   -  - 340 40
9436   -   -   -   -   -  -   -  - 350 50
9437   -   -   -   -   -  -   -  - 355 55
9438   -   -   -   -   -  -   -  - 365 65
9439   -   -   -   -   -  -   -  - 370 70
9440   -   -   -   -   -  -   -  - 380 80
9441   -   -   -   -   -  -   -  - 385 85
9442   -   -   -   -   -  -   -  - 395 95
9443}
9444do_execsql_test joinD-358 {
9445  SELECT t1.*, t2.*, t3.*, t4.*
9446  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9447  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9448  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9449  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9450} {
9451   3 103 203 303   -  - 203  3   -  -
9452   6 106 206 306 106  6 206  6   -  -
9453   9 109 209 309   -  - 209  9   -  -
9454  12 112 212 312 112 12 212 12   -  -
9455  15 115 215 315   -  - 215 15 315 15
9456  18 118 218 318 118 18 218 18   -  -
9457  21 121 221 321   -  - 221 21   -  -
9458  24 124 224 324 124 24 224 24   -  -
9459  27 127 227 327   -  - 227 27   -  -
9460  30 130 230 330 130 30 230 30 330 30
9461  33 133 233 333   -  - 233 33   -  -
9462  36 136 236 336 136 36 236 36   -  -
9463  39 139 239 339   -  - 239 39   -  -
9464  42 142 242 342 142 42 242 42   -  -
9465  45 145 245 345   -  - 245 45 345 45
9466  48 148 248 348 148 48 248 48   -  -
9467  51 151 251 351   -  - 251 51   -  -
9468  54 154 254 354 154 54 254 54   -  -
9469  57 157 257 357   -  - 257 57   -  -
9470  60 160 260 360 160 60 260 60 360 60
9471  63 163 263 363   -  - 263 63   -  -
9472  66 166 266 366 166 66 266 66   -  -
9473  69 169 269 369   -  - 269 69   -  -
9474  72 172 272 372 172 72 272 72   -  -
9475  75 175 275 375   -  - 275 75 375 75
9476  78 178 278 378 178 78 278 78   -  -
9477  81 181 281 381   -  - 281 81   -  -
9478  84 184 284 384 184 84 284 84   -  -
9479  87 187 287 387   -  - 287 87   -  -
9480  90 190 290 390 190 90 290 90 390 90
9481  93 193 293 393   -  - 293 93   -  -
9482   -   -   -   -   -  -   -  - 300  0
9483   -   -   -   -   -  -   -  - 305  5
9484   -   -   -   -   -  -   -  - 310 10
9485   -   -   -   -   -  -   -  - 320 20
9486   -   -   -   -   -  -   -  - 325 25
9487   -   -   -   -   -  -   -  - 335 35
9488   -   -   -   -   -  -   -  - 340 40
9489   -   -   -   -   -  -   -  - 350 50
9490   -   -   -   -   -  -   -  - 355 55
9491   -   -   -   -   -  -   -  - 365 65
9492   -   -   -   -   -  -   -  - 370 70
9493   -   -   -   -   -  -   -  - 380 80
9494   -   -   -   -   -  -   -  - 385 85
9495   -   -   -   -   -  -   -  - 395 95
9496}
9497do_execsql_test joinD-359 {
9498  SELECT t1.*, t2.*, t3.*, t4.*
9499  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9500  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9501  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9502  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9503} {
9504   3 103 203 303   -  - 203  3   -  -
9505   6 106 206 306 106  6 206  6   -  -
9506   9 109 209 309   -  - 209  9   -  -
9507  12 112 212 312 112 12 212 12   -  -
9508  15 115 215 315   -  - 215 15 315 15
9509  18 118 218 318 118 18 218 18   -  -
9510  21 121 221 321   -  - 221 21   -  -
9511  24 124 224 324 124 24 224 24   -  -
9512  27 127 227 327   -  - 227 27   -  -
9513  30 130 230 330 130 30 230 30 330 30
9514  33 133 233 333   -  - 233 33   -  -
9515  36 136 236 336 136 36 236 36   -  -
9516  39 139 239 339   -  - 239 39   -  -
9517  42 142 242 342 142 42 242 42   -  -
9518  45 145 245 345   -  - 245 45 345 45
9519  48 148 248 348 148 48 248 48   -  -
9520  51 151 251 351   -  - 251 51   -  -
9521  54 154 254 354 154 54 254 54   -  -
9522  57 157 257 357   -  - 257 57   -  -
9523  60 160 260 360 160 60 260 60 360 60
9524  63 163 263 363   -  - 263 63   -  -
9525  66 166 266 366 166 66 266 66   -  -
9526  69 169 269 369   -  - 269 69   -  -
9527  72 172 272 372 172 72 272 72   -  -
9528  75 175 275 375   -  - 275 75 375 75
9529  78 178 278 378 178 78 278 78   -  -
9530  81 181 281 381   -  - 281 81   -  -
9531  84 184 284 384 184 84 284 84   -  -
9532  87 187 287 387   -  - 287 87   -  -
9533  90 190 290 390 190 90 290 90 390 90
9534  93 193 293 393   -  - 293 93   -  -
9535   -   -   -   -   -  -   -  - 300  0
9536   -   -   -   -   -  -   -  - 305  5
9537   -   -   -   -   -  -   -  - 310 10
9538   -   -   -   -   -  -   -  - 320 20
9539   -   -   -   -   -  -   -  - 325 25
9540   -   -   -   -   -  -   -  - 335 35
9541   -   -   -   -   -  -   -  - 340 40
9542   -   -   -   -   -  -   -  - 350 50
9543   -   -   -   -   -  -   -  - 355 55
9544   -   -   -   -   -  -   -  - 365 65
9545   -   -   -   -   -  -   -  - 370 70
9546   -   -   -   -   -  -   -  - 380 80
9547   -   -   -   -   -  -   -  - 385 85
9548   -   -   -   -   -  -   -  - 395 95
9549}
9550do_execsql_test joinD-360 {
9551  SELECT t1.*, t2.*, t3.*, t4.*
9552  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9553  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9554  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9555  WHERE t2.x>0
9556  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9557} {
9558   6 106 206 306 106  6 206  6   -  -
9559  12 112 212 312 112 12 212 12   -  -
9560  18 118 218 318 118 18 218 18   -  -
9561  24 124 224 324 124 24 224 24   -  -
9562  30 130 230 330 130 30 230 30 330 30
9563  36 136 236 336 136 36 236 36   -  -
9564  42 142 242 342 142 42 242 42   -  -
9565  48 148 248 348 148 48 248 48   -  -
9566  54 154 254 354 154 54 254 54   -  -
9567  60 160 260 360 160 60 260 60 360 60
9568  66 166 266 366 166 66 266 66   -  -
9569  72 172 272 372 172 72 272 72   -  -
9570  78 178 278 378 178 78 278 78   -  -
9571  84 184 284 384 184 84 284 84   -  -
9572  90 190 290 390 190 90 290 90 390 90
9573}
9574do_execsql_test joinD-361 {
9575  SELECT t1.*, t2.*, t3.*, t4.*
9576  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9577  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9578  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9579  WHERE (t2.x>0 OR t2.x IS NULL)
9580  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9581} {
9582   3 103 203 303   -  - 203  3   -  -
9583   6 106 206 306 106  6 206  6   -  -
9584   9 109 209 309   -  - 209  9   -  -
9585  12 112 212 312 112 12 212 12   -  -
9586  15 115 215 315   -  - 215 15 315 15
9587  18 118 218 318 118 18 218 18   -  -
9588  21 121 221 321   -  - 221 21   -  -
9589  24 124 224 324 124 24 224 24   -  -
9590  27 127 227 327   -  - 227 27   -  -
9591  30 130 230 330 130 30 230 30 330 30
9592  33 133 233 333   -  - 233 33   -  -
9593  36 136 236 336 136 36 236 36   -  -
9594  39 139 239 339   -  - 239 39   -  -
9595  42 142 242 342 142 42 242 42   -  -
9596  45 145 245 345   -  - 245 45 345 45
9597  48 148 248 348 148 48 248 48   -  -
9598  51 151 251 351   -  - 251 51   -  -
9599  54 154 254 354 154 54 254 54   -  -
9600  57 157 257 357   -  - 257 57   -  -
9601  60 160 260 360 160 60 260 60 360 60
9602  63 163 263 363   -  - 263 63   -  -
9603  66 166 266 366 166 66 266 66   -  -
9604  69 169 269 369   -  - 269 69   -  -
9605  72 172 272 372 172 72 272 72   -  -
9606  75 175 275 375   -  - 275 75 375 75
9607  78 178 278 378 178 78 278 78   -  -
9608  81 181 281 381   -  - 281 81   -  -
9609  84 184 284 384 184 84 284 84   -  -
9610  87 187 287 387   -  - 287 87   -  -
9611  90 190 290 390 190 90 290 90 390 90
9612  93 193 293 393   -  - 293 93   -  -
9613   -   -   -   -   -  -   -  - 300  0
9614   -   -   -   -   -  -   -  - 305  5
9615   -   -   -   -   -  -   -  - 310 10
9616   -   -   -   -   -  -   -  - 320 20
9617   -   -   -   -   -  -   -  - 325 25
9618   -   -   -   -   -  -   -  - 335 35
9619   -   -   -   -   -  -   -  - 340 40
9620   -   -   -   -   -  -   -  - 350 50
9621   -   -   -   -   -  -   -  - 355 55
9622   -   -   -   -   -  -   -  - 365 65
9623   -   -   -   -   -  -   -  - 370 70
9624   -   -   -   -   -  -   -  - 380 80
9625   -   -   -   -   -  -   -  - 385 85
9626   -   -   -   -   -  -   -  - 395 95
9627}
9628do_execsql_test joinD-362 {
9629  SELECT t1.*, t2.*, t3.*, t4.*
9630  FROM t1 LEFT JOIN t2 ON true
9631  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9632  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9633  WHERE t1.b=t2.b AND t2.x>0
9634  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9635} {
9636   6 106 206 306 106  6 206  6   -  -
9637  12 112 212 312 112 12 212 12   -  -
9638  18 118 218 318 118 18 218 18   -  -
9639  24 124 224 324 124 24 224 24   -  -
9640  30 130 230 330 130 30 230 30 330 30
9641  36 136 236 336 136 36 236 36   -  -
9642  42 142 242 342 142 42 242 42   -  -
9643  48 148 248 348 148 48 248 48   -  -
9644  54 154 254 354 154 54 254 54   -  -
9645  60 160 260 360 160 60 260 60 360 60
9646  66 166 266 366 166 66 266 66   -  -
9647  72 172 272 372 172 72 272 72   -  -
9648  78 178 278 378 178 78 278 78   -  -
9649  84 184 284 384 184 84 284 84   -  -
9650  90 190 290 390 190 90 290 90 390 90
9651}
9652do_execsql_test joinD-363 {
9653  SELECT t1.*, t2.*, t3.*, t4.*
9654  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9655  INNER JOIN t3 ON t1.c=t3.c
9656  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9657  WHERE t3.y>0
9658  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9659} {
9660   3 103 203 303   -  - 203  3   -  -
9661   6 106 206 306 106  6 206  6   -  -
9662   9 109 209 309   -  - 209  9   -  -
9663  12 112 212 312 112 12 212 12   -  -
9664  15 115 215 315   -  - 215 15 315 15
9665  18 118 218 318 118 18 218 18   -  -
9666  21 121 221 321   -  - 221 21   -  -
9667  24 124 224 324 124 24 224 24   -  -
9668  27 127 227 327   -  - 227 27   -  -
9669  30 130 230 330 130 30 230 30 330 30
9670  33 133 233 333   -  - 233 33   -  -
9671  36 136 236 336 136 36 236 36   -  -
9672  39 139 239 339   -  - 239 39   -  -
9673  42 142 242 342 142 42 242 42   -  -
9674  45 145 245 345   -  - 245 45 345 45
9675  48 148 248 348 148 48 248 48   -  -
9676  51 151 251 351   -  - 251 51   -  -
9677  54 154 254 354 154 54 254 54   -  -
9678  57 157 257 357   -  - 257 57   -  -
9679  60 160 260 360 160 60 260 60 360 60
9680  63 163 263 363   -  - 263 63   -  -
9681  66 166 266 366 166 66 266 66   -  -
9682  69 169 269 369   -  - 269 69   -  -
9683  72 172 272 372 172 72 272 72   -  -
9684  75 175 275 375   -  - 275 75 375 75
9685  78 178 278 378 178 78 278 78   -  -
9686  81 181 281 381   -  - 281 81   -  -
9687  84 184 284 384 184 84 284 84   -  -
9688  87 187 287 387   -  - 287 87   -  -
9689  90 190 290 390 190 90 290 90 390 90
9690  93 193 293 393   -  - 293 93   -  -
9691}
9692do_execsql_test joinD-364 {
9693  SELECT t1.*, t2.*, t3.*, t4.*
9694  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9695  INNER JOIN t3 ON t1.c=t3.c
9696  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9697  WHERE t3.y>0 OR t3.y IS NULL
9698  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9699} {
9700   3 103 203 303   -  - 203  3   -  -
9701   6 106 206 306 106  6 206  6   -  -
9702   9 109 209 309   -  - 209  9   -  -
9703  12 112 212 312 112 12 212 12   -  -
9704  15 115 215 315   -  - 215 15 315 15
9705  18 118 218 318 118 18 218 18   -  -
9706  21 121 221 321   -  - 221 21   -  -
9707  24 124 224 324 124 24 224 24   -  -
9708  27 127 227 327   -  - 227 27   -  -
9709  30 130 230 330 130 30 230 30 330 30
9710  33 133 233 333   -  - 233 33   -  -
9711  36 136 236 336 136 36 236 36   -  -
9712  39 139 239 339   -  - 239 39   -  -
9713  42 142 242 342 142 42 242 42   -  -
9714  45 145 245 345   -  - 245 45 345 45
9715  48 148 248 348 148 48 248 48   -  -
9716  51 151 251 351   -  - 251 51   -  -
9717  54 154 254 354 154 54 254 54   -  -
9718  57 157 257 357   -  - 257 57   -  -
9719  60 160 260 360 160 60 260 60 360 60
9720  63 163 263 363   -  - 263 63   -  -
9721  66 166 266 366 166 66 266 66   -  -
9722  69 169 269 369   -  - 269 69   -  -
9723  72 172 272 372 172 72 272 72   -  -
9724  75 175 275 375   -  - 275 75 375 75
9725  78 178 278 378 178 78 278 78   -  -
9726  81 181 281 381   -  - 281 81   -  -
9727  84 184 284 384 184 84 284 84   -  -
9728  87 187 287 387   -  - 287 87   -  -
9729  90 190 290 390 190 90 290 90 390 90
9730  93 193 293 393   -  - 293 93   -  -
9731   -   -   -   -   -  -   -  - 300  0
9732   -   -   -   -   -  -   -  - 305  5
9733   -   -   -   -   -  -   -  - 310 10
9734   -   -   -   -   -  -   -  - 320 20
9735   -   -   -   -   -  -   -  - 325 25
9736   -   -   -   -   -  -   -  - 335 35
9737   -   -   -   -   -  -   -  - 340 40
9738   -   -   -   -   -  -   -  - 350 50
9739   -   -   -   -   -  -   -  - 355 55
9740   -   -   -   -   -  -   -  - 365 65
9741   -   -   -   -   -  -   -  - 370 70
9742   -   -   -   -   -  -   -  - 380 80
9743   -   -   -   -   -  -   -  - 385 85
9744   -   -   -   -   -  -   -  - 395 95
9745}
9746do_execsql_test joinD-365 {
9747  SELECT t1.*, t2.*, t3.*, t4.*
9748  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9749  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9750  FULL JOIN t4 ON t1.d=t4.d
9751  WHERE t4.z>0
9752  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9753} {
9754  15 115 215 315   -  - 215 15 315 15
9755  30 130 230 330 130 30 230 30 330 30
9756  45 145 245 345   -  - 245 45 345 45
9757  60 160 260 360 160 60 260 60 360 60
9758  75 175 275 375   -  - 275 75 375 75
9759  90 190 290 390 190 90 290 90 390 90
9760   -   -   -   -   -  -   -  - 305  5
9761   -   -   -   -   -  -   -  - 310 10
9762   -   -   -   -   -  -   -  - 320 20
9763   -   -   -   -   -  -   -  - 325 25
9764   -   -   -   -   -  -   -  - 335 35
9765   -   -   -   -   -  -   -  - 340 40
9766   -   -   -   -   -  -   -  - 350 50
9767   -   -   -   -   -  -   -  - 355 55
9768   -   -   -   -   -  -   -  - 365 65
9769   -   -   -   -   -  -   -  - 370 70
9770   -   -   -   -   -  -   -  - 380 80
9771   -   -   -   -   -  -   -  - 385 85
9772   -   -   -   -   -  -   -  - 395 95
9773}
9774do_execsql_test joinD-366 {
9775  SELECT t1.*, t2.*, t3.*, t4.*
9776  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9777  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9778  FULL JOIN t4 ON t1.d=t4.d
9779  WHERE t4.z IS NULL OR t4.z>0
9780  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9781} {
9782   3 103 203 303   -  - 203  3   -  -
9783   6 106 206 306 106  6 206  6   -  -
9784   9 109 209 309   -  - 209  9   -  -
9785  12 112 212 312 112 12 212 12   -  -
9786  15 115 215 315   -  - 215 15 315 15
9787  18 118 218 318 118 18 218 18   -  -
9788  21 121 221 321   -  - 221 21   -  -
9789  24 124 224 324 124 24 224 24   -  -
9790  27 127 227 327   -  - 227 27   -  -
9791  30 130 230 330 130 30 230 30 330 30
9792  33 133 233 333   -  - 233 33   -  -
9793  36 136 236 336 136 36 236 36   -  -
9794  39 139 239 339   -  - 239 39   -  -
9795  42 142 242 342 142 42 242 42   -  -
9796  45 145 245 345   -  - 245 45 345 45
9797  48 148 248 348 148 48 248 48   -  -
9798  51 151 251 351   -  - 251 51   -  -
9799  54 154 254 354 154 54 254 54   -  -
9800  57 157 257 357   -  - 257 57   -  -
9801  60 160 260 360 160 60 260 60 360 60
9802  63 163 263 363   -  - 263 63   -  -
9803  66 166 266 366 166 66 266 66   -  -
9804  69 169 269 369   -  - 269 69   -  -
9805  72 172 272 372 172 72 272 72   -  -
9806  75 175 275 375   -  - 275 75 375 75
9807  78 178 278 378 178 78 278 78   -  -
9808  81 181 281 381   -  - 281 81   -  -
9809  84 184 284 384 184 84 284 84   -  -
9810  87 187 287 387   -  - 287 87   -  -
9811  90 190 290 390 190 90 290 90 390 90
9812  93 193 293 393   -  - 293 93   -  -
9813   -   -   -   -   -  -   -  - 305  5
9814   -   -   -   -   -  -   -  - 310 10
9815   -   -   -   -   -  -   -  - 320 20
9816   -   -   -   -   -  -   -  - 325 25
9817   -   -   -   -   -  -   -  - 335 35
9818   -   -   -   -   -  -   -  - 340 40
9819   -   -   -   -   -  -   -  - 350 50
9820   -   -   -   -   -  -   -  - 355 55
9821   -   -   -   -   -  -   -  - 365 65
9822   -   -   -   -   -  -   -  - 370 70
9823   -   -   -   -   -  -   -  - 380 80
9824   -   -   -   -   -  -   -  - 385 85
9825   -   -   -   -   -  -   -  - 395 95
9826}
9827do_execsql_test joinD-367 {
9828  SELECT t1.*, t2.*, t3.*, t4.*
9829  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9830  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9831  FULL JOIN t4 ON t1.d=t4.d
9832  WHERE t2.x>0 AND t4.z>0
9833  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9834} {
9835  30 130 230 330 130 30 230 30 330 30
9836  60 160 260 360 160 60 260 60 360 60
9837  90 190 290 390 190 90 290 90 390 90
9838}
9839do_execsql_test joinD-368 {
9840  SELECT t1.*, t2.*, t3.*, t4.*
9841  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9842  INNER JOIN t3 ON t1.c=t3.c
9843  FULL JOIN t4 ON t1.d=t4.d
9844  WHERE t4.z>0 AND t3.y>0
9845  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9846} {
9847  15 115 215 315   -  - 215 15 315 15
9848  30 130 230 330 130 30 230 30 330 30
9849  45 145 245 345   -  - 245 45 345 45
9850  60 160 260 360 160 60 260 60 360 60
9851  75 175 275 375   -  - 275 75 375 75
9852  90 190 290 390 190 90 290 90 390 90
9853}
9854do_execsql_test joinD-369 {
9855  SELECT t1.*, t2.*, t3.*, t4.*
9856  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9857  INNER JOIN t3 ON t1.c=t3.c
9858  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9859  WHERE t2.x>0 AND t3.y>0
9860  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9861} {
9862   6 106 206 306 106  6 206  6   -  -
9863  12 112 212 312 112 12 212 12   -  -
9864  18 118 218 318 118 18 218 18   -  -
9865  24 124 224 324 124 24 224 24   -  -
9866  30 130 230 330 130 30 230 30 330 30
9867  36 136 236 336 136 36 236 36   -  -
9868  42 142 242 342 142 42 242 42   -  -
9869  48 148 248 348 148 48 248 48   -  -
9870  54 154 254 354 154 54 254 54   -  -
9871  60 160 260 360 160 60 260 60 360 60
9872  66 166 266 366 166 66 266 66   -  -
9873  72 172 272 372 172 72 272 72   -  -
9874  78 178 278 378 178 78 278 78   -  -
9875  84 184 284 384 184 84 284 84   -  -
9876  90 190 290 390 190 90 290 90 390 90
9877}
9878do_execsql_test joinD-370 {
9879  SELECT t1.*, t2.*, t3.*, t4.*
9880  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9881  INNER JOIN t3 ON t1.c=t3.c
9882  FULL JOIN t4 ON t1.d=t4.d
9883  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
9884  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9885} {
9886  30 130 230 330 130 30 230 30 330 30
9887  60 160 260 360 160 60 260 60 360 60
9888  90 190 290 390 190 90 290 90 390 90
9889}
9890do_execsql_test joinD-371 {
9891  SELECT t1.*, t2.*, t3.*, t4.*
9892  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9893  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9894  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
9895  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9896} {
9897   3 103 203 303   -  - 203  3   -  -
9898   6 106 206 306 106  6 206  6   -  -
9899   9 109 209 309   -  - 209  9   -  -
9900  12 112 212 312 112 12 212 12   -  -
9901  15 115 215 315   -  - 215 15 315 15
9902  18 118 218 318 118 18 218 18   -  -
9903  21 121 221 321   -  - 221 21   -  -
9904  24 124 224 324 124 24 224 24   -  -
9905  27 127 227 327   -  - 227 27   -  -
9906  30 130 230 330 130 30 230 30 330 30
9907  33 133 233 333   -  - 233 33   -  -
9908  36 136 236 336 136 36 236 36   -  -
9909  39 139 239 339   -  - 239 39   -  -
9910  42 142 242 342 142 42 242 42   -  -
9911  45 145 245 345   -  - 245 45 345 45
9912  48 148 248 348 148 48 248 48   -  -
9913  51 151 251 351   -  - 251 51   -  -
9914  54 154 254 354 154 54 254 54   -  -
9915  57 157 257 357   -  - 257 57   -  -
9916  60 160 260 360 160 60 260 60 360 60
9917  63 163 263 363   -  - 263 63   -  -
9918  66 166 266 366 166 66 266 66   -  -
9919  69 169 269 369   -  - 269 69   -  -
9920  72 172 272 372 172 72 272 72   -  -
9921  75 175 275 375   -  - 275 75 375 75
9922  78 178 278 378 178 78 278 78   -  -
9923  81 181 281 381   -  - 281 81   -  -
9924  84 184 284 384 184 84 284 84   -  -
9925  87 187 287 387   -  - 287 87   -  -
9926  90 190 290 390 190 90 290 90 390 90
9927  93 193 293 393   -  - 293 93   -  -
9928   -   -   -   -   -  -   -  - 300  0
9929   -   -   -   -   -  -   -  - 305  5
9930   -   -   -   -   -  -   -  - 310 10
9931   -   -   -   -   -  -   -  - 320 20
9932   -   -   -   -   -  -   -  - 325 25
9933   -   -   -   -   -  -   -  - 335 35
9934   -   -   -   -   -  -   -  - 340 40
9935   -   -   -   -   -  -   -  - 350 50
9936   -   -   -   -   -  -   -  - 355 55
9937   -   -   -   -   -  -   -  - 365 65
9938   -   -   -   -   -  -   -  - 370 70
9939   -   -   -   -   -  -   -  - 380 80
9940   -   -   -   -   -  -   -  - 385 85
9941   -   -   -   -   -  -   -  - 395 95
9942}
9943do_execsql_test joinD-372 {
9944  SELECT t1.*, t2.*, t3.*, t4.*
9945  FROM t1 LEFT JOIN t2 ON t2.x>0
9946  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9947  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
9948  WHERE t1.b IS NOT DISTINCT FROM t2.b
9949  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9950} {
9951   6 106 206 306 106  6 206  6   -  -
9952  12 112 212 312 112 12 212 12   -  -
9953  18 118 218 318 118 18 218 18   -  -
9954  24 124 224 324 124 24 224 24   -  -
9955  30 130 230 330 130 30 230 30 330 30
9956  36 136 236 336 136 36 236 36   -  -
9957  42 142 242 342 142 42 242 42   -  -
9958  48 148 248 348 148 48 248 48   -  -
9959  54 154 254 354 154 54 254 54   -  -
9960  60 160 260 360 160 60 260 60 360 60
9961  66 166 266 366 166 66 266 66   -  -
9962  72 172 272 372 172 72 272 72   -  -
9963  78 178 278 378 178 78 278 78   -  -
9964  84 184 284 384 184 84 284 84   -  -
9965  90 190 290 390 190 90 290 90 390 90
9966   -   -   -   -   -  -   -  - 300  0
9967   -   -   -   -   -  -   -  - 305  5
9968   -   -   -   -   -  -   -  - 310 10
9969   -   -   -   -   -  -   -  - 320 20
9970   -   -   -   -   -  -   -  - 325 25
9971   -   -   -   -   -  -   -  - 335 35
9972   -   -   -   -   -  -   -  - 340 40
9973   -   -   -   -   -  -   -  - 350 50
9974   -   -   -   -   -  -   -  - 355 55
9975   -   -   -   -   -  -   -  - 365 65
9976   -   -   -   -   -  -   -  - 370 70
9977   -   -   -   -   -  -   -  - 380 80
9978   -   -   -   -   -  -   -  - 385 85
9979   -   -   -   -   -  -   -  - 395 95
9980}
9981do_execsql_test joinD-373 {
9982  SELECT t1.*, t2.*, t3.*, t4.*
9983  FROM t1 LEFT JOIN t2 ON t2.x>0
9984  INNER JOIN t3 ON t3.y>0
9985  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
9986  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
9987  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9988} {
9989   6 106 206 306 106  6 206  6   -  -
9990  12 112 212 312 112 12 212 12   -  -
9991  18 118 218 318 118 18 218 18   -  -
9992  24 124 224 324 124 24 224 24   -  -
9993  30 130 230 330 130 30 230 30 330 30
9994  36 136 236 336 136 36 236 36   -  -
9995  42 142 242 342 142 42 242 42   -  -
9996  48 148 248 348 148 48 248 48   -  -
9997  54 154 254 354 154 54 254 54   -  -
9998  60 160 260 360 160 60 260 60 360 60
9999  66 166 266 366 166 66 266 66   -  -
10000  72 172 272 372 172 72 272 72   -  -
10001  78 178 278 378 178 78 278 78   -  -
10002  84 184 284 384 184 84 284 84   -  -
10003  90 190 290 390 190 90 290 90 390 90
10004   -   -   -   -   -  -   -  - 300  0
10005}
10006do_execsql_test joinD-374 {
10007  SELECT t1.*, t2.*, t3.*, t4.*
10008  FROM t1 LEFT JOIN t2 ON t2.x>0
10009  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10010  FULL JOIN t4 ON t4.z>0
10011  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
10012  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10013} {
10014  30 130 230 330 130 30 230 30 330 30
10015  60 160 260 360 160 60 260 60 360 60
10016  90 190 290 390 190 90 290 90 390 90
10017}
10018do_execsql_test joinD-375 {
10019  SELECT t1.*, t2.*, t3.*, t4.*
10020  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
10021  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
10022  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
10023  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10024} {
10025   3 103 203 303   -  - 203  3   -  -
10026   6 106 206 306 106  6 206  6   -  -
10027   9 109 209 309   -  - 209  9   -  -
10028  12 112 212 312 112 12 212 12   -  -
10029  15 115 215 315   -  - 215 15 315 15
10030  18 118 218 318 118 18 218 18   -  -
10031  21 121 221 321   -  - 221 21   -  -
10032  24 124 224 324 124 24 224 24   -  -
10033  27 127 227 327   -  - 227 27   -  -
10034  30 130 230 330 130 30 230 30 330 30
10035  33 133 233 333   -  - 233 33   -  -
10036  36 136 236 336 136 36 236 36   -  -
10037  39 139 239 339   -  - 239 39   -  -
10038  42 142 242 342 142 42 242 42   -  -
10039  45 145 245 345   -  - 245 45 345 45
10040  48 148 248 348 148 48 248 48   -  -
10041  51 151 251 351   -  - 251 51   -  -
10042  54 154 254 354 154 54 254 54   -  -
10043  57 157 257 357   -  - 257 57   -  -
10044  60 160 260 360 160 60 260 60 360 60
10045  63 163 263 363   -  - 263 63   -  -
10046  66 166 266 366 166 66 266 66   -  -
10047  69 169 269 369   -  - 269 69   -  -
10048  72 172 272 372 172 72 272 72   -  -
10049  75 175 275 375   -  - 275 75 375 75
10050  78 178 278 378 178 78 278 78   -  -
10051  81 181 281 381   -  - 281 81   -  -
10052  84 184 284 384 184 84 284 84   -  -
10053  87 187 287 387   -  - 287 87   -  -
10054  90 190 290 390 190 90 290 90 390 90
10055  93 193 293 393   -  - 293 93   -  -
10056   -   -   -   -   -  -   -  - 300  0
10057   -   -   -   -   -  -   -  - 305  5
10058   -   -   -   -   -  -   -  - 310 10
10059   -   -   -   -   -  -   -  - 320 20
10060   -   -   -   -   -  -   -  - 325 25
10061   -   -   -   -   -  -   -  - 335 35
10062   -   -   -   -   -  -   -  - 340 40
10063   -   -   -   -   -  -   -  - 350 50
10064   -   -   -   -   -  -   -  - 355 55
10065   -   -   -   -   -  -   -  - 365 65
10066   -   -   -   -   -  -   -  - 370 70
10067   -   -   -   -   -  -   -  - 380 80
10068   -   -   -   -   -  -   -  - 385 85
10069   -   -   -   -   -  -   -  - 395 95
10070}
10071do_execsql_test joinD-376 {
10072  SELECT t1.*, t2.*, t3.*, t4.*
10073  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10074  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
10075  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
10076  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10077} {
10078   3 103 203 303   -  - 203  3   -  -
10079   6 106 206 306 106  6 206  6   -  -
10080   9 109 209 309   -  - 209  9   -  -
10081  12 112 212 312 112 12 212 12   -  -
10082  15 115 215 315   -  - 215 15 315 15
10083  18 118 218 318 118 18 218 18   -  -
10084  21 121 221 321   -  - 221 21   -  -
10085  24 124 224 324 124 24 224 24   -  -
10086  27 127 227 327   -  - 227 27   -  -
10087  30 130 230 330 130 30 230 30 330 30
10088  33 133 233 333   -  - 233 33   -  -
10089  36 136 236 336 136 36 236 36   -  -
10090  39 139 239 339   -  - 239 39   -  -
10091  42 142 242 342 142 42 242 42   -  -
10092  45 145 245 345   -  - 245 45 345 45
10093  48 148 248 348 148 48 248 48   -  -
10094  51 151 251 351   -  - 251 51   -  -
10095  54 154 254 354 154 54 254 54   -  -
10096  57 157 257 357   -  - 257 57   -  -
10097  60 160 260 360 160 60 260 60 360 60
10098  63 163 263 363   -  - 263 63   -  -
10099  66 166 266 366 166 66 266 66   -  -
10100  69 169 269 369   -  - 269 69   -  -
10101  72 172 272 372 172 72 272 72   -  -
10102  75 175 275 375   -  - 275 75 375 75
10103  78 178 278 378 178 78 278 78   -  -
10104  81 181 281 381   -  - 281 81   -  -
10105  84 184 284 384 184 84 284 84   -  -
10106  87 187 287 387   -  - 287 87   -  -
10107  90 190 290 390 190 90 290 90 390 90
10108  93 193 293 393   -  - 293 93   -  -
10109   -   -   -   -   -  -   -  - 300  0
10110   -   -   -   -   -  -   -  - 305  5
10111   -   -   -   -   -  -   -  - 310 10
10112   -   -   -   -   -  -   -  - 320 20
10113   -   -   -   -   -  -   -  - 325 25
10114   -   -   -   -   -  -   -  - 335 35
10115   -   -   -   -   -  -   -  - 340 40
10116   -   -   -   -   -  -   -  - 350 50
10117   -   -   -   -   -  -   -  - 355 55
10118   -   -   -   -   -  -   -  - 365 65
10119   -   -   -   -   -  -   -  - 370 70
10120   -   -   -   -   -  -   -  - 380 80
10121   -   -   -   -   -  -   -  - 385 85
10122   -   -   -   -   -  -   -  - 395 95
10123}
10124do_execsql_test joinD-377 {
10125  SELECT t1.*, t2.*, t3.*, t4.*
10126  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10127  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10128  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10129  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10130} {
10131   5 105 205 305   -  -   -  - 305  5
10132  10 110 210 310 110 10   -  - 310 10
10133  15 115 215 315   -  - 215 15 315 15
10134  20 120 220 320 120 20   -  - 320 20
10135  25 125 225 325   -  -   -  - 325 25
10136  30 130 230 330 130 30 230 30 330 30
10137  35 135 235 335   -  -   -  - 335 35
10138  40 140 240 340 140 40   -  - 340 40
10139  45 145 245 345   -  - 245 45 345 45
10140  50 150 250 350 150 50   -  - 350 50
10141  55 155 255 355   -  -   -  - 355 55
10142  60 160 260 360 160 60 260 60 360 60
10143  65 165 265 365   -  -   -  - 365 65
10144  70 170 270 370 170 70   -  - 370 70
10145  75 175 275 375   -  - 275 75 375 75
10146  80 180 280 380 180 80   -  - 380 80
10147  85 185 285 385   -  -   -  - 385 85
10148  90 190 290 390 190 90 290 90 390 90
10149  95 195 295 395   -  -   -  - 395 95
10150}
10151do_execsql_test joinD-378 {
10152  SELECT t1.*, t2.*, t3.*, t4.*
10153  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
10154  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10155  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10157} {
10158   5 105 205 305   -  -   -  - 305  5
10159  10 110 210 310 110 10   -  - 310 10
10160  15 115 215 315   -  - 215 15 315 15
10161  20 120 220 320 120 20   -  - 320 20
10162  25 125 225 325   -  -   -  - 325 25
10163  30 130 230 330 130 30 230 30 330 30
10164  35 135 235 335   -  -   -  - 335 35
10165  40 140 240 340 140 40   -  - 340 40
10166  45 145 245 345   -  - 245 45 345 45
10167  50 150 250 350 150 50   -  - 350 50
10168  55 155 255 355   -  -   -  - 355 55
10169  60 160 260 360 160 60 260 60 360 60
10170  65 165 265 365   -  -   -  - 365 65
10171  70 170 270 370 170 70   -  - 370 70
10172  75 175 275 375   -  - 275 75 375 75
10173  80 180 280 380 180 80   -  - 380 80
10174  85 185 285 385   -  -   -  - 385 85
10175  90 190 290 390 190 90 290 90 390 90
10176  95 195 295 395   -  -   -  - 395 95
10177}
10178do_execsql_test joinD-379 {
10179  SELECT t1.*, t2.*, t3.*, t4.*
10180  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10181  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10182  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10183  WHERE t2.x>0
10184  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10185} {
10186  10 110 210 310 110 10   -  - 310 10
10187  20 120 220 320 120 20   -  - 320 20
10188  30 130 230 330 130 30 230 30 330 30
10189  40 140 240 340 140 40   -  - 340 40
10190  50 150 250 350 150 50   -  - 350 50
10191  60 160 260 360 160 60 260 60 360 60
10192  70 170 270 370 170 70   -  - 370 70
10193  80 180 280 380 180 80   -  - 380 80
10194  90 190 290 390 190 90 290 90 390 90
10195}
10196do_execsql_test joinD-380 {
10197  SELECT t1.*, t2.*, t3.*, t4.*
10198  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10199  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10200  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10201  WHERE (t2.x>0 OR t2.x IS NULL)
10202  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10203} {
10204   5 105 205 305   -  -   -  - 305  5
10205  10 110 210 310 110 10   -  - 310 10
10206  15 115 215 315   -  - 215 15 315 15
10207  20 120 220 320 120 20   -  - 320 20
10208  25 125 225 325   -  -   -  - 325 25
10209  30 130 230 330 130 30 230 30 330 30
10210  35 135 235 335   -  -   -  - 335 35
10211  40 140 240 340 140 40   -  - 340 40
10212  45 145 245 345   -  - 245 45 345 45
10213  50 150 250 350 150 50   -  - 350 50
10214  55 155 255 355   -  -   -  - 355 55
10215  60 160 260 360 160 60 260 60 360 60
10216  65 165 265 365   -  -   -  - 365 65
10217  70 170 270 370 170 70   -  - 370 70
10218  75 175 275 375   -  - 275 75 375 75
10219  80 180 280 380 180 80   -  - 380 80
10220  85 185 285 385   -  -   -  - 385 85
10221  90 190 290 390 190 90 290 90 390 90
10222  95 195 295 395   -  -   -  - 395 95
10223}
10224do_execsql_test joinD-381 {
10225  SELECT t1.*, t2.*, t3.*, t4.*
10226  FROM t1 LEFT JOIN t2 ON true
10227  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10228  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10229  WHERE t1.b=t2.b AND t2.x>0
10230  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10231} {
10232  10 110 210 310 110 10   -  - 310 10
10233  20 120 220 320 120 20   -  - 320 20
10234  30 130 230 330 130 30 230 30 330 30
10235  40 140 240 340 140 40   -  - 340 40
10236  50 150 250 350 150 50   -  - 350 50
10237  60 160 260 360 160 60 260 60 360 60
10238  70 170 270 370 170 70   -  - 370 70
10239  80 180 280 380 180 80   -  - 380 80
10240  90 190 290 390 190 90 290 90 390 90
10241}
10242do_execsql_test joinD-382 {
10243  SELECT t1.*, t2.*, t3.*, t4.*
10244  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10245  LEFT JOIN t3 ON t1.c=t3.c
10246  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10247  WHERE t3.y>0
10248  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10249} {
10250  15 115 215 315   -  - 215 15 315 15
10251  30 130 230 330 130 30 230 30 330 30
10252  45 145 245 345   -  - 245 45 345 45
10253  60 160 260 360 160 60 260 60 360 60
10254  75 175 275 375   -  - 275 75 375 75
10255  90 190 290 390 190 90 290 90 390 90
10256}
10257do_execsql_test joinD-383 {
10258  SELECT t1.*, t2.*, t3.*, t4.*
10259  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10260  LEFT JOIN t3 ON t1.c=t3.c
10261  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10262  WHERE t3.y>0 OR t3.y IS NULL
10263  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10264} {
10265   5 105 205 305   -  -   -  - 305  5
10266  10 110 210 310 110 10   -  - 310 10
10267  15 115 215 315   -  - 215 15 315 15
10268  20 120 220 320 120 20   -  - 320 20
10269  25 125 225 325   -  -   -  - 325 25
10270  30 130 230 330 130 30 230 30 330 30
10271  35 135 235 335   -  -   -  - 335 35
10272  40 140 240 340 140 40   -  - 340 40
10273  45 145 245 345   -  - 245 45 345 45
10274  50 150 250 350 150 50   -  - 350 50
10275  55 155 255 355   -  -   -  - 355 55
10276  60 160 260 360 160 60 260 60 360 60
10277  65 165 265 365   -  -   -  - 365 65
10278  70 170 270 370 170 70   -  - 370 70
10279  75 175 275 375   -  - 275 75 375 75
10280  80 180 280 380 180 80   -  - 380 80
10281  85 185 285 385   -  -   -  - 385 85
10282  90 190 290 390 190 90 290 90 390 90
10283  95 195 295 395   -  -   -  - 395 95
10284}
10285do_execsql_test joinD-384 {
10286  SELECT t1.*, t2.*, t3.*, t4.*
10287  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10288  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10289  INNER JOIN t4 ON t1.d=t4.d
10290  WHERE t4.z>0
10291  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10292} {
10293   5 105 205 305   -  -   -  - 305  5
10294  10 110 210 310 110 10   -  - 310 10
10295  15 115 215 315   -  - 215 15 315 15
10296  20 120 220 320 120 20   -  - 320 20
10297  25 125 225 325   -  -   -  - 325 25
10298  30 130 230 330 130 30 230 30 330 30
10299  35 135 235 335   -  -   -  - 335 35
10300  40 140 240 340 140 40   -  - 340 40
10301  45 145 245 345   -  - 245 45 345 45
10302  50 150 250 350 150 50   -  - 350 50
10303  55 155 255 355   -  -   -  - 355 55
10304  60 160 260 360 160 60 260 60 360 60
10305  65 165 265 365   -  -   -  - 365 65
10306  70 170 270 370 170 70   -  - 370 70
10307  75 175 275 375   -  - 275 75 375 75
10308  80 180 280 380 180 80   -  - 380 80
10309  85 185 285 385   -  -   -  - 385 85
10310  90 190 290 390 190 90 290 90 390 90
10311  95 195 295 395   -  -   -  - 395 95
10312}
10313do_execsql_test joinD-385 {
10314  SELECT t1.*, t2.*, t3.*, t4.*
10315  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10316  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10317  INNER JOIN t4 ON t1.d=t4.d
10318  WHERE t4.z IS NULL OR t4.z>0
10319  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10320} {
10321   5 105 205 305   -  -   -  - 305  5
10322  10 110 210 310 110 10   -  - 310 10
10323  15 115 215 315   -  - 215 15 315 15
10324  20 120 220 320 120 20   -  - 320 20
10325  25 125 225 325   -  -   -  - 325 25
10326  30 130 230 330 130 30 230 30 330 30
10327  35 135 235 335   -  -   -  - 335 35
10328  40 140 240 340 140 40   -  - 340 40
10329  45 145 245 345   -  - 245 45 345 45
10330  50 150 250 350 150 50   -  - 350 50
10331  55 155 255 355   -  -   -  - 355 55
10332  60 160 260 360 160 60 260 60 360 60
10333  65 165 265 365   -  -   -  - 365 65
10334  70 170 270 370 170 70   -  - 370 70
10335  75 175 275 375   -  - 275 75 375 75
10336  80 180 280 380 180 80   -  - 380 80
10337  85 185 285 385   -  -   -  - 385 85
10338  90 190 290 390 190 90 290 90 390 90
10339  95 195 295 395   -  -   -  - 395 95
10340}
10341do_execsql_test joinD-386 {
10342  SELECT t1.*, t2.*, t3.*, t4.*
10343  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10344  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10345  INNER JOIN t4 ON t1.d=t4.d
10346  WHERE t2.x>0 AND t4.z>0
10347  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10348} {
10349  10 110 210 310 110 10   -  - 310 10
10350  20 120 220 320 120 20   -  - 320 20
10351  30 130 230 330 130 30 230 30 330 30
10352  40 140 240 340 140 40   -  - 340 40
10353  50 150 250 350 150 50   -  - 350 50
10354  60 160 260 360 160 60 260 60 360 60
10355  70 170 270 370 170 70   -  - 370 70
10356  80 180 280 380 180 80   -  - 380 80
10357  90 190 290 390 190 90 290 90 390 90
10358}
10359do_execsql_test joinD-387 {
10360  SELECT t1.*, t2.*, t3.*, t4.*
10361  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10362  LEFT JOIN t3 ON t1.c=t3.c
10363  INNER JOIN t4 ON t1.d=t4.d
10364  WHERE t4.z>0 AND t3.y>0
10365  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10366} {
10367  15 115 215 315   -  - 215 15 315 15
10368  30 130 230 330 130 30 230 30 330 30
10369  45 145 245 345   -  - 245 45 345 45
10370  60 160 260 360 160 60 260 60 360 60
10371  75 175 275 375   -  - 275 75 375 75
10372  90 190 290 390 190 90 290 90 390 90
10373}
10374do_execsql_test joinD-388 {
10375  SELECT t1.*, t2.*, t3.*, t4.*
10376  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10377  LEFT JOIN t3 ON t1.c=t3.c
10378  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10379  WHERE t2.x>0 AND t3.y>0
10380  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10381} {
10382  30 130 230 330 130 30 230 30 330 30
10383  60 160 260 360 160 60 260 60 360 60
10384  90 190 290 390 190 90 290 90 390 90
10385}
10386do_execsql_test joinD-389 {
10387  SELECT t1.*, t2.*, t3.*, t4.*
10388  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10389  LEFT JOIN t3 ON t1.c=t3.c
10390  INNER JOIN t4 ON t1.d=t4.d
10391  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
10392  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10393} {
10394  30 130 230 330 130 30 230 30 330 30
10395  60 160 260 360 160 60 260 60 360 60
10396  90 190 290 390 190 90 290 90 390 90
10397}
10398do_execsql_test joinD-390 {
10399  SELECT t1.*, t2.*, t3.*, t4.*
10400  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
10401  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10402  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
10403  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10404} {
10405   5 105 205 305   -  -   -  - 305  5
10406  10 110 210 310 110 10   -  - 310 10
10407  15 115 215 315   -  - 215 15 315 15
10408  20 120 220 320 120 20   -  - 320 20
10409  25 125 225 325   -  -   -  - 325 25
10410  30 130 230 330 130 30 230 30 330 30
10411  35 135 235 335   -  -   -  - 335 35
10412  40 140 240 340 140 40   -  - 340 40
10413  45 145 245 345   -  - 245 45 345 45
10414  50 150 250 350 150 50   -  - 350 50
10415  55 155 255 355   -  -   -  - 355 55
10416  60 160 260 360 160 60 260 60 360 60
10417  65 165 265 365   -  -   -  - 365 65
10418  70 170 270 370 170 70   -  - 370 70
10419  75 175 275 375   -  - 275 75 375 75
10420  80 180 280 380 180 80   -  - 380 80
10421  85 185 285 385   -  -   -  - 385 85
10422  90 190 290 390 190 90 290 90 390 90
10423  95 195 295 395   -  -   -  - 395 95
10424}
10425do_execsql_test joinD-391 {
10426  SELECT t1.*, t2.*, t3.*, t4.*
10427  FROM t1 LEFT JOIN t2 ON t2.x>0
10428  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10429  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
10430  WHERE t1.b IS NOT DISTINCT FROM t2.b
10431  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10432} {
10433  10 110 210 310 110 10   -  - 310 10
10434  20 120 220 320 120 20   -  - 320 20
10435  30 130 230 330 130 30 230 30 330 30
10436  40 140 240 340 140 40   -  - 340 40
10437  50 150 250 350 150 50   -  - 350 50
10438  60 160 260 360 160 60 260 60 360 60
10439  70 170 270 370 170 70   -  - 370 70
10440  80 180 280 380 180 80   -  - 380 80
10441  90 190 290 390 190 90 290 90 390 90
10442}
10443do_execsql_test joinD-392 {
10444  SELECT t1.*, t2.*, t3.*, t4.*
10445  FROM t1 LEFT JOIN t2 ON t2.x>0
10446  LEFT JOIN t3 ON t3.y>0
10447  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
10448  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
10449  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10450} {
10451  30 130 230 330 130 30 230 30 330 30
10452  60 160 260 360 160 60 260 60 360 60
10453  90 190 290 390 190 90 290 90 390 90
10454}
10455do_execsql_test joinD-393 {
10456  SELECT t1.*, t2.*, t3.*, t4.*
10457  FROM t1 LEFT JOIN t2 ON t2.x>0
10458  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10459  INNER JOIN t4 ON t4.z>0
10460  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
10461  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10462} {
10463  10 110 210 310 110 10   -  - 310 10
10464  20 120 220 320 120 20   -  - 320 20
10465  30 130 230 330 130 30 230 30 330 30
10466  40 140 240 340 140 40   -  - 340 40
10467  50 150 250 350 150 50   -  - 350 50
10468  60 160 260 360 160 60 260 60 360 60
10469  70 170 270 370 170 70   -  - 370 70
10470  80 180 280 380 180 80   -  - 380 80
10471  90 190 290 390 190 90 290 90 390 90
10472}
10473do_execsql_test joinD-394 {
10474  SELECT t1.*, t2.*, t3.*, t4.*
10475  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
10476  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10477  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10478  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10479} {
10480   5 105 205 305   -  -   -  - 305  5
10481  10 110 210 310 110 10   -  - 310 10
10482  15 115 215 315   -  - 215 15 315 15
10483  20 120 220 320 120 20   -  - 320 20
10484  25 125 225 325   -  -   -  - 325 25
10485  30 130 230 330 130 30 230 30 330 30
10486  35 135 235 335   -  -   -  - 335 35
10487  40 140 240 340 140 40   -  - 340 40
10488  45 145 245 345   -  - 245 45 345 45
10489  50 150 250 350 150 50   -  - 350 50
10490  55 155 255 355   -  -   -  - 355 55
10491  60 160 260 360 160 60 260 60 360 60
10492  65 165 265 365   -  -   -  - 365 65
10493  70 170 270 370 170 70   -  - 370 70
10494  75 175 275 375   -  - 275 75 375 75
10495  80 180 280 380 180 80   -  - 380 80
10496  85 185 285 385   -  -   -  - 385 85
10497  90 190 290 390 190 90 290 90 390 90
10498  95 195 295 395   -  -   -  - 395 95
10499}
10500do_execsql_test joinD-395 {
10501  SELECT t1.*, t2.*, t3.*, t4.*
10502  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10503  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
10504  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10505  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10506} {
10507   5 105 205 305   -  -   -  - 305  5
10508  10 110 210 310 110 10   -  - 310 10
10509  15 115 215 315   -  - 215 15 315 15
10510  20 120 220 320 120 20   -  - 320 20
10511  25 125 225 325   -  -   -  - 325 25
10512  30 130 230 330 130 30 230 30 330 30
10513  35 135 235 335   -  -   -  - 335 35
10514  40 140 240 340 140 40   -  - 340 40
10515  45 145 245 345   -  - 245 45 345 45
10516  50 150 250 350 150 50   -  - 350 50
10517  55 155 255 355   -  -   -  - 355 55
10518  60 160 260 360 160 60 260 60 360 60
10519  65 165 265 365   -  -   -  - 365 65
10520  70 170 270 370 170 70   -  - 370 70
10521  75 175 275 375   -  - 275 75 375 75
10522  80 180 280 380 180 80   -  - 380 80
10523  85 185 285 385   -  -   -  - 385 85
10524  90 190 290 390 190 90 290 90 390 90
10525  95 195 295 395   -  -   -  - 395 95
10526}
10527do_execsql_test joinD-396 {
10528  SELECT t1.*, t2.*, t3.*, t4.*
10529  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10530  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10531  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10532  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10533} {
10534   0 100 200 300   -  -   -  -   -  -
10535   1 101 201 301   -  -   -  -   -  -
10536   2 102 202 302 102  2   -  -   -  -
10537   3 103 203 303   -  - 203  3   -  -
10538   4 104 204 304 104  4   -  -   -  -
10539   5 105 205 305   -  -   -  - 305  5
10540   6 106 206 306 106  6 206  6   -  -
10541   7 107 207 307   -  -   -  -   -  -
10542   8 108 208 308 108  8   -  -   -  -
10543   9 109 209 309   -  - 209  9   -  -
10544  10 110 210 310 110 10   -  - 310 10
10545  11 111 211 311   -  -   -  -   -  -
10546  12 112 212 312 112 12 212 12   -  -
10547  13 113 213 313   -  -   -  -   -  -
10548  14 114 214 314 114 14   -  -   -  -
10549  15 115 215 315   -  - 215 15 315 15
10550  16 116 216 316 116 16   -  -   -  -
10551  17 117 217 317   -  -   -  -   -  -
10552  18 118 218 318 118 18 218 18   -  -
10553  19 119 219 319   -  -   -  -   -  -
10554  20 120 220 320 120 20   -  - 320 20
10555  21 121 221 321   -  - 221 21   -  -
10556  22 122 222 322 122 22   -  -   -  -
10557  23 123 223 323   -  -   -  -   -  -
10558  24 124 224 324 124 24 224 24   -  -
10559  25 125 225 325   -  -   -  - 325 25
10560  26 126 226 326 126 26   -  -   -  -
10561  27 127 227 327   -  - 227 27   -  -
10562  28 128 228 328 128 28   -  -   -  -
10563  29 129 229 329   -  -   -  -   -  -
10564  30 130 230 330 130 30 230 30 330 30
10565  31 131 231 331   -  -   -  -   -  -
10566  32 132 232 332 132 32   -  -   -  -
10567  33 133 233 333   -  - 233 33   -  -
10568  34 134 234 334 134 34   -  -   -  -
10569  35 135 235 335   -  -   -  - 335 35
10570  36 136 236 336 136 36 236 36   -  -
10571  37 137 237 337   -  -   -  -   -  -
10572  38 138 238 338 138 38   -  -   -  -
10573  39 139 239 339   -  - 239 39   -  -
10574  40 140 240 340 140 40   -  - 340 40
10575  41 141 241 341   -  -   -  -   -  -
10576  42 142 242 342 142 42 242 42   -  -
10577  43 143 243 343   -  -   -  -   -  -
10578  44 144 244 344 144 44   -  -   -  -
10579  45 145 245 345   -  - 245 45 345 45
10580  46 146 246 346 146 46   -  -   -  -
10581  47 147 247 347   -  -   -  -   -  -
10582  48 148 248 348 148 48 248 48   -  -
10583  49 149 249 349   -  -   -  -   -  -
10584  50 150 250 350 150 50   -  - 350 50
10585  51 151 251 351   -  - 251 51   -  -
10586  52 152 252 352 152 52   -  -   -  -
10587  53 153 253 353   -  -   -  -   -  -
10588  54 154 254 354 154 54 254 54   -  -
10589  55 155 255 355   -  -   -  - 355 55
10590  56 156 256 356 156 56   -  -   -  -
10591  57 157 257 357   -  - 257 57   -  -
10592  58 158 258 358 158 58   -  -   -  -
10593  59 159 259 359   -  -   -  -   -  -
10594  60 160 260 360 160 60 260 60 360 60
10595  61 161 261 361   -  -   -  -   -  -
10596  62 162 262 362 162 62   -  -   -  -
10597  63 163 263 363   -  - 263 63   -  -
10598  64 164 264 364 164 64   -  -   -  -
10599  65 165 265 365   -  -   -  - 365 65
10600  66 166 266 366 166 66 266 66   -  -
10601  67 167 267 367   -  -   -  -   -  -
10602  68 168 268 368 168 68   -  -   -  -
10603  69 169 269 369   -  - 269 69   -  -
10604  70 170 270 370 170 70   -  - 370 70
10605  71 171 271 371   -  -   -  -   -  -
10606  72 172 272 372 172 72 272 72   -  -
10607  73 173 273 373   -  -   -  -   -  -
10608  74 174 274 374 174 74   -  -   -  -
10609  75 175 275 375   -  - 275 75 375 75
10610  76 176 276 376 176 76   -  -   -  -
10611  77 177 277 377   -  -   -  -   -  -
10612  78 178 278 378 178 78 278 78   -  -
10613  79 179 279 379   -  -   -  -   -  -
10614  80 180 280 380 180 80   -  - 380 80
10615  81 181 281 381   -  - 281 81   -  -
10616  82 182 282 382 182 82   -  -   -  -
10617  83 183 283 383   -  -   -  -   -  -
10618  84 184 284 384 184 84 284 84   -  -
10619  85 185 285 385   -  -   -  - 385 85
10620  86 186 286 386 186 86   -  -   -  -
10621  87 187 287 387   -  - 287 87   -  -
10622  88 188 288 388 188 88   -  -   -  -
10623  89 189 289 389   -  -   -  -   -  -
10624  90 190 290 390 190 90 290 90 390 90
10625  91 191 291 391   -  -   -  -   -  -
10626  92 192 292 392 192 92   -  -   -  -
10627  93 193 293 393   -  - 293 93   -  -
10628  94 194 294 394 194 94   -  -   -  -
10629  95 195 295 395   -  -   -  - 395 95
10630  96   - 296 396   -  -   -  -   -  -
10631  97 197   - 397   -  -   -  -   -  -
10632  98 198 298   -   -  -   -  -   -  -
10633  99   -   -   -   -  -   -  -   -  -
10634}
10635do_execsql_test joinD-397 {
10636  SELECT t1.*, t2.*, t3.*, t4.*
10637  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
10638  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10639  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10641} {
10642   0 100 200 300   -  -   -  -   -  -
10643   1 101 201 301   -  -   -  -   -  -
10644   2 102 202 302 102  2   -  -   -  -
10645   3 103 203 303   -  - 203  3   -  -
10646   4 104 204 304 104  4   -  -   -  -
10647   5 105 205 305   -  -   -  - 305  5
10648   6 106 206 306 106  6 206  6   -  -
10649   7 107 207 307   -  -   -  -   -  -
10650   8 108 208 308 108  8   -  -   -  -
10651   9 109 209 309   -  - 209  9   -  -
10652  10 110 210 310 110 10   -  - 310 10
10653  11 111 211 311   -  -   -  -   -  -
10654  12 112 212 312 112 12 212 12   -  -
10655  13 113 213 313   -  -   -  -   -  -
10656  14 114 214 314 114 14   -  -   -  -
10657  15 115 215 315   -  - 215 15 315 15
10658  16 116 216 316 116 16   -  -   -  -
10659  17 117 217 317   -  -   -  -   -  -
10660  18 118 218 318 118 18 218 18   -  -
10661  19 119 219 319   -  -   -  -   -  -
10662  20 120 220 320 120 20   -  - 320 20
10663  21 121 221 321   -  - 221 21   -  -
10664  22 122 222 322 122 22   -  -   -  -
10665  23 123 223 323   -  -   -  -   -  -
10666  24 124 224 324 124 24 224 24   -  -
10667  25 125 225 325   -  -   -  - 325 25
10668  26 126 226 326 126 26   -  -   -  -
10669  27 127 227 327   -  - 227 27   -  -
10670  28 128 228 328 128 28   -  -   -  -
10671  29 129 229 329   -  -   -  -   -  -
10672  30 130 230 330 130 30 230 30 330 30
10673  31 131 231 331   -  -   -  -   -  -
10674  32 132 232 332 132 32   -  -   -  -
10675  33 133 233 333   -  - 233 33   -  -
10676  34 134 234 334 134 34   -  -   -  -
10677  35 135 235 335   -  -   -  - 335 35
10678  36 136 236 336 136 36 236 36   -  -
10679  37 137 237 337   -  -   -  -   -  -
10680  38 138 238 338 138 38   -  -   -  -
10681  39 139 239 339   -  - 239 39   -  -
10682  40 140 240 340 140 40   -  - 340 40
10683  41 141 241 341   -  -   -  -   -  -
10684  42 142 242 342 142 42 242 42   -  -
10685  43 143 243 343   -  -   -  -   -  -
10686  44 144 244 344 144 44   -  -   -  -
10687  45 145 245 345   -  - 245 45 345 45
10688  46 146 246 346 146 46   -  -   -  -
10689  47 147 247 347   -  -   -  -   -  -
10690  48 148 248 348 148 48 248 48   -  -
10691  49 149 249 349   -  -   -  -   -  -
10692  50 150 250 350 150 50   -  - 350 50
10693  51 151 251 351   -  - 251 51   -  -
10694  52 152 252 352 152 52   -  -   -  -
10695  53 153 253 353   -  -   -  -   -  -
10696  54 154 254 354 154 54 254 54   -  -
10697  55 155 255 355   -  -   -  - 355 55
10698  56 156 256 356 156 56   -  -   -  -
10699  57 157 257 357   -  - 257 57   -  -
10700  58 158 258 358 158 58   -  -   -  -
10701  59 159 259 359   -  -   -  -   -  -
10702  60 160 260 360 160 60 260 60 360 60
10703  61 161 261 361   -  -   -  -   -  -
10704  62 162 262 362 162 62   -  -   -  -
10705  63 163 263 363   -  - 263 63   -  -
10706  64 164 264 364 164 64   -  -   -  -
10707  65 165 265 365   -  -   -  - 365 65
10708  66 166 266 366 166 66 266 66   -  -
10709  67 167 267 367   -  -   -  -   -  -
10710  68 168 268 368 168 68   -  -   -  -
10711  69 169 269 369   -  - 269 69   -  -
10712  70 170 270 370 170 70   -  - 370 70
10713  71 171 271 371   -  -   -  -   -  -
10714  72 172 272 372 172 72 272 72   -  -
10715  73 173 273 373   -  -   -  -   -  -
10716  74 174 274 374 174 74   -  -   -  -
10717  75 175 275 375   -  - 275 75 375 75
10718  76 176 276 376 176 76   -  -   -  -
10719  77 177 277 377   -  -   -  -   -  -
10720  78 178 278 378 178 78 278 78   -  -
10721  79 179 279 379   -  -   -  -   -  -
10722  80 180 280 380 180 80   -  - 380 80
10723  81 181 281 381   -  - 281 81   -  -
10724  82 182 282 382 182 82   -  -   -  -
10725  83 183 283 383   -  -   -  -   -  -
10726  84 184 284 384 184 84 284 84   -  -
10727  85 185 285 385   -  -   -  - 385 85
10728  86 186 286 386 186 86   -  -   -  -
10729  87 187 287 387   -  - 287 87   -  -
10730  88 188 288 388 188 88   -  -   -  -
10731  89 189 289 389   -  -   -  -   -  -
10732  90 190 290 390 190 90 290 90 390 90
10733  91 191 291 391   -  -   -  -   -  -
10734  92 192 292 392 192 92   -  -   -  -
10735  93 193 293 393   -  - 293 93   -  -
10736  94 194 294 394 194 94   -  -   -  -
10737  95 195 295 395   -  -   -  - 395 95
10738  96   - 296 396   -  -   -  -   -  -
10739  97 197   - 397   -  -   -  -   -  -
10740  98 198 298   -   -  -   -  -   -  -
10741  99   -   -   -   -  -   -  -   -  -
10742}
10743do_execsql_test joinD-398 {
10744  SELECT t1.*, t2.*, t3.*, t4.*
10745  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10746  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10747  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10748  WHERE t2.x>0
10749  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10750} {
10751   2 102 202 302 102  2   -  -   -  -
10752   4 104 204 304 104  4   -  -   -  -
10753   6 106 206 306 106  6 206  6   -  -
10754   8 108 208 308 108  8   -  -   -  -
10755  10 110 210 310 110 10   -  - 310 10
10756  12 112 212 312 112 12 212 12   -  -
10757  14 114 214 314 114 14   -  -   -  -
10758  16 116 216 316 116 16   -  -   -  -
10759  18 118 218 318 118 18 218 18   -  -
10760  20 120 220 320 120 20   -  - 320 20
10761  22 122 222 322 122 22   -  -   -  -
10762  24 124 224 324 124 24 224 24   -  -
10763  26 126 226 326 126 26   -  -   -  -
10764  28 128 228 328 128 28   -  -   -  -
10765  30 130 230 330 130 30 230 30 330 30
10766  32 132 232 332 132 32   -  -   -  -
10767  34 134 234 334 134 34   -  -   -  -
10768  36 136 236 336 136 36 236 36   -  -
10769  38 138 238 338 138 38   -  -   -  -
10770  40 140 240 340 140 40   -  - 340 40
10771  42 142 242 342 142 42 242 42   -  -
10772  44 144 244 344 144 44   -  -   -  -
10773  46 146 246 346 146 46   -  -   -  -
10774  48 148 248 348 148 48 248 48   -  -
10775  50 150 250 350 150 50   -  - 350 50
10776  52 152 252 352 152 52   -  -   -  -
10777  54 154 254 354 154 54 254 54   -  -
10778  56 156 256 356 156 56   -  -   -  -
10779  58 158 258 358 158 58   -  -   -  -
10780  60 160 260 360 160 60 260 60 360 60
10781  62 162 262 362 162 62   -  -   -  -
10782  64 164 264 364 164 64   -  -   -  -
10783  66 166 266 366 166 66 266 66   -  -
10784  68 168 268 368 168 68   -  -   -  -
10785  70 170 270 370 170 70   -  - 370 70
10786  72 172 272 372 172 72 272 72   -  -
10787  74 174 274 374 174 74   -  -   -  -
10788  76 176 276 376 176 76   -  -   -  -
10789  78 178 278 378 178 78 278 78   -  -
10790  80 180 280 380 180 80   -  - 380 80
10791  82 182 282 382 182 82   -  -   -  -
10792  84 184 284 384 184 84 284 84   -  -
10793  86 186 286 386 186 86   -  -   -  -
10794  88 188 288 388 188 88   -  -   -  -
10795  90 190 290 390 190 90 290 90 390 90
10796  92 192 292 392 192 92   -  -   -  -
10797  94 194 294 394 194 94   -  -   -  -
10798}
10799do_execsql_test joinD-399 {
10800  SELECT t1.*, t2.*, t3.*, t4.*
10801  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10802  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10803  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10804  WHERE (t2.x>0 OR t2.x IS NULL)
10805  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10806} {
10807   1 101 201 301   -  -   -  -   -  -
10808   2 102 202 302 102  2   -  -   -  -
10809   3 103 203 303   -  - 203  3   -  -
10810   4 104 204 304 104  4   -  -   -  -
10811   5 105 205 305   -  -   -  - 305  5
10812   6 106 206 306 106  6 206  6   -  -
10813   7 107 207 307   -  -   -  -   -  -
10814   8 108 208 308 108  8   -  -   -  -
10815   9 109 209 309   -  - 209  9   -  -
10816  10 110 210 310 110 10   -  - 310 10
10817  11 111 211 311   -  -   -  -   -  -
10818  12 112 212 312 112 12 212 12   -  -
10819  13 113 213 313   -  -   -  -   -  -
10820  14 114 214 314 114 14   -  -   -  -
10821  15 115 215 315   -  - 215 15 315 15
10822  16 116 216 316 116 16   -  -   -  -
10823  17 117 217 317   -  -   -  -   -  -
10824  18 118 218 318 118 18 218 18   -  -
10825  19 119 219 319   -  -   -  -   -  -
10826  20 120 220 320 120 20   -  - 320 20
10827  21 121 221 321   -  - 221 21   -  -
10828  22 122 222 322 122 22   -  -   -  -
10829  23 123 223 323   -  -   -  -   -  -
10830  24 124 224 324 124 24 224 24   -  -
10831  25 125 225 325   -  -   -  - 325 25
10832  26 126 226 326 126 26   -  -   -  -
10833  27 127 227 327   -  - 227 27   -  -
10834  28 128 228 328 128 28   -  -   -  -
10835  29 129 229 329   -  -   -  -   -  -
10836  30 130 230 330 130 30 230 30 330 30
10837  31 131 231 331   -  -   -  -   -  -
10838  32 132 232 332 132 32   -  -   -  -
10839  33 133 233 333   -  - 233 33   -  -
10840  34 134 234 334 134 34   -  -   -  -
10841  35 135 235 335   -  -   -  - 335 35
10842  36 136 236 336 136 36 236 36   -  -
10843  37 137 237 337   -  -   -  -   -  -
10844  38 138 238 338 138 38   -  -   -  -
10845  39 139 239 339   -  - 239 39   -  -
10846  40 140 240 340 140 40   -  - 340 40
10847  41 141 241 341   -  -   -  -   -  -
10848  42 142 242 342 142 42 242 42   -  -
10849  43 143 243 343   -  -   -  -   -  -
10850  44 144 244 344 144 44   -  -   -  -
10851  45 145 245 345   -  - 245 45 345 45
10852  46 146 246 346 146 46   -  -   -  -
10853  47 147 247 347   -  -   -  -   -  -
10854  48 148 248 348 148 48 248 48   -  -
10855  49 149 249 349   -  -   -  -   -  -
10856  50 150 250 350 150 50   -  - 350 50
10857  51 151 251 351   -  - 251 51   -  -
10858  52 152 252 352 152 52   -  -   -  -
10859  53 153 253 353   -  -   -  -   -  -
10860  54 154 254 354 154 54 254 54   -  -
10861  55 155 255 355   -  -   -  - 355 55
10862  56 156 256 356 156 56   -  -   -  -
10863  57 157 257 357   -  - 257 57   -  -
10864  58 158 258 358 158 58   -  -   -  -
10865  59 159 259 359   -  -   -  -   -  -
10866  60 160 260 360 160 60 260 60 360 60
10867  61 161 261 361   -  -   -  -   -  -
10868  62 162 262 362 162 62   -  -   -  -
10869  63 163 263 363   -  - 263 63   -  -
10870  64 164 264 364 164 64   -  -   -  -
10871  65 165 265 365   -  -   -  - 365 65
10872  66 166 266 366 166 66 266 66   -  -
10873  67 167 267 367   -  -   -  -   -  -
10874  68 168 268 368 168 68   -  -   -  -
10875  69 169 269 369   -  - 269 69   -  -
10876  70 170 270 370 170 70   -  - 370 70
10877  71 171 271 371   -  -   -  -   -  -
10878  72 172 272 372 172 72 272 72   -  -
10879  73 173 273 373   -  -   -  -   -  -
10880  74 174 274 374 174 74   -  -   -  -
10881  75 175 275 375   -  - 275 75 375 75
10882  76 176 276 376 176 76   -  -   -  -
10883  77 177 277 377   -  -   -  -   -  -
10884  78 178 278 378 178 78 278 78   -  -
10885  79 179 279 379   -  -   -  -   -  -
10886  80 180 280 380 180 80   -  - 380 80
10887  81 181 281 381   -  - 281 81   -  -
10888  82 182 282 382 182 82   -  -   -  -
10889  83 183 283 383   -  -   -  -   -  -
10890  84 184 284 384 184 84 284 84   -  -
10891  85 185 285 385   -  -   -  - 385 85
10892  86 186 286 386 186 86   -  -   -  -
10893  87 187 287 387   -  - 287 87   -  -
10894  88 188 288 388 188 88   -  -   -  -
10895  89 189 289 389   -  -   -  -   -  -
10896  90 190 290 390 190 90 290 90 390 90
10897  91 191 291 391   -  -   -  -   -  -
10898  92 192 292 392 192 92   -  -   -  -
10899  93 193 293 393   -  - 293 93   -  -
10900  94 194 294 394 194 94   -  -   -  -
10901  95 195 295 395   -  -   -  - 395 95
10902  96   - 296 396   -  -   -  -   -  -
10903  97 197   - 397   -  -   -  -   -  -
10904  98 198 298   -   -  -   -  -   -  -
10905  99   -   -   -   -  -   -  -   -  -
10906}
10907do_execsql_test joinD-400 {
10908  SELECT t1.*, t2.*, t3.*, t4.*
10909  FROM t1 LEFT JOIN t2 ON true
10910  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10911  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10912  WHERE t1.b=t2.b AND t2.x>0
10913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10914} {
10915   2 102 202 302 102  2   -  -   -  -
10916   4 104 204 304 104  4   -  -   -  -
10917   6 106 206 306 106  6 206  6   -  -
10918   8 108 208 308 108  8   -  -   -  -
10919  10 110 210 310 110 10   -  - 310 10
10920  12 112 212 312 112 12 212 12   -  -
10921  14 114 214 314 114 14   -  -   -  -
10922  16 116 216 316 116 16   -  -   -  -
10923  18 118 218 318 118 18 218 18   -  -
10924  20 120 220 320 120 20   -  - 320 20
10925  22 122 222 322 122 22   -  -   -  -
10926  24 124 224 324 124 24 224 24   -  -
10927  26 126 226 326 126 26   -  -   -  -
10928  28 128 228 328 128 28   -  -   -  -
10929  30 130 230 330 130 30 230 30 330 30
10930  32 132 232 332 132 32   -  -   -  -
10931  34 134 234 334 134 34   -  -   -  -
10932  36 136 236 336 136 36 236 36   -  -
10933  38 138 238 338 138 38   -  -   -  -
10934  40 140 240 340 140 40   -  - 340 40
10935  42 142 242 342 142 42 242 42   -  -
10936  44 144 244 344 144 44   -  -   -  -
10937  46 146 246 346 146 46   -  -   -  -
10938  48 148 248 348 148 48 248 48   -  -
10939  50 150 250 350 150 50   -  - 350 50
10940  52 152 252 352 152 52   -  -   -  -
10941  54 154 254 354 154 54 254 54   -  -
10942  56 156 256 356 156 56   -  -   -  -
10943  58 158 258 358 158 58   -  -   -  -
10944  60 160 260 360 160 60 260 60 360 60
10945  62 162 262 362 162 62   -  -   -  -
10946  64 164 264 364 164 64   -  -   -  -
10947  66 166 266 366 166 66 266 66   -  -
10948  68 168 268 368 168 68   -  -   -  -
10949  70 170 270 370 170 70   -  - 370 70
10950  72 172 272 372 172 72 272 72   -  -
10951  74 174 274 374 174 74   -  -   -  -
10952  76 176 276 376 176 76   -  -   -  -
10953  78 178 278 378 178 78 278 78   -  -
10954  80 180 280 380 180 80   -  - 380 80
10955  82 182 282 382 182 82   -  -   -  -
10956  84 184 284 384 184 84 284 84   -  -
10957  86 186 286 386 186 86   -  -   -  -
10958  88 188 288 388 188 88   -  -   -  -
10959  90 190 290 390 190 90 290 90 390 90
10960  92 192 292 392 192 92   -  -   -  -
10961  94 194 294 394 194 94   -  -   -  -
10962}
10963do_execsql_test joinD-401 {
10964  SELECT t1.*, t2.*, t3.*, t4.*
10965  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10966  LEFT JOIN t3 ON t1.c=t3.c
10967  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10968  WHERE t3.y>0
10969  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10970} {
10971   3 103 203 303   -  - 203  3   -  -
10972   6 106 206 306 106  6 206  6   -  -
10973   9 109 209 309   -  - 209  9   -  -
10974  12 112 212 312 112 12 212 12   -  -
10975  15 115 215 315   -  - 215 15 315 15
10976  18 118 218 318 118 18 218 18   -  -
10977  21 121 221 321   -  - 221 21   -  -
10978  24 124 224 324 124 24 224 24   -  -
10979  27 127 227 327   -  - 227 27   -  -
10980  30 130 230 330 130 30 230 30 330 30
10981  33 133 233 333   -  - 233 33   -  -
10982  36 136 236 336 136 36 236 36   -  -
10983  39 139 239 339   -  - 239 39   -  -
10984  42 142 242 342 142 42 242 42   -  -
10985  45 145 245 345   -  - 245 45 345 45
10986  48 148 248 348 148 48 248 48   -  -
10987  51 151 251 351   -  - 251 51   -  -
10988  54 154 254 354 154 54 254 54   -  -
10989  57 157 257 357   -  - 257 57   -  -
10990  60 160 260 360 160 60 260 60 360 60
10991  63 163 263 363   -  - 263 63   -  -
10992  66 166 266 366 166 66 266 66   -  -
10993  69 169 269 369   -  - 269 69   -  -
10994  72 172 272 372 172 72 272 72   -  -
10995  75 175 275 375   -  - 275 75 375 75
10996  78 178 278 378 178 78 278 78   -  -
10997  81 181 281 381   -  - 281 81   -  -
10998  84 184 284 384 184 84 284 84   -  -
10999  87 187 287 387   -  - 287 87   -  -
11000  90 190 290 390 190 90 290 90 390 90
11001  93 193 293 393   -  - 293 93   -  -
11002}
11003do_execsql_test joinD-402 {
11004  SELECT t1.*, t2.*, t3.*, t4.*
11005  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11006  LEFT JOIN t3 ON t1.c=t3.c
11007  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11008  WHERE t3.y>0 OR t3.y IS NULL
11009  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11010} {
11011   1 101 201 301   -  -   -  -   -  -
11012   2 102 202 302 102  2   -  -   -  -
11013   3 103 203 303   -  - 203  3   -  -
11014   4 104 204 304 104  4   -  -   -  -
11015   5 105 205 305   -  -   -  - 305  5
11016   6 106 206 306 106  6 206  6   -  -
11017   7 107 207 307   -  -   -  -   -  -
11018   8 108 208 308 108  8   -  -   -  -
11019   9 109 209 309   -  - 209  9   -  -
11020  10 110 210 310 110 10   -  - 310 10
11021  11 111 211 311   -  -   -  -   -  -
11022  12 112 212 312 112 12 212 12   -  -
11023  13 113 213 313   -  -   -  -   -  -
11024  14 114 214 314 114 14   -  -   -  -
11025  15 115 215 315   -  - 215 15 315 15
11026  16 116 216 316 116 16   -  -   -  -
11027  17 117 217 317   -  -   -  -   -  -
11028  18 118 218 318 118 18 218 18   -  -
11029  19 119 219 319   -  -   -  -   -  -
11030  20 120 220 320 120 20   -  - 320 20
11031  21 121 221 321   -  - 221 21   -  -
11032  22 122 222 322 122 22   -  -   -  -
11033  23 123 223 323   -  -   -  -   -  -
11034  24 124 224 324 124 24 224 24   -  -
11035  25 125 225 325   -  -   -  - 325 25
11036  26 126 226 326 126 26   -  -   -  -
11037  27 127 227 327   -  - 227 27   -  -
11038  28 128 228 328 128 28   -  -   -  -
11039  29 129 229 329   -  -   -  -   -  -
11040  30 130 230 330 130 30 230 30 330 30
11041  31 131 231 331   -  -   -  -   -  -
11042  32 132 232 332 132 32   -  -   -  -
11043  33 133 233 333   -  - 233 33   -  -
11044  34 134 234 334 134 34   -  -   -  -
11045  35 135 235 335   -  -   -  - 335 35
11046  36 136 236 336 136 36 236 36   -  -
11047  37 137 237 337   -  -   -  -   -  -
11048  38 138 238 338 138 38   -  -   -  -
11049  39 139 239 339   -  - 239 39   -  -
11050  40 140 240 340 140 40   -  - 340 40
11051  41 141 241 341   -  -   -  -   -  -
11052  42 142 242 342 142 42 242 42   -  -
11053  43 143 243 343   -  -   -  -   -  -
11054  44 144 244 344 144 44   -  -   -  -
11055  45 145 245 345   -  - 245 45 345 45
11056  46 146 246 346 146 46   -  -   -  -
11057  47 147 247 347   -  -   -  -   -  -
11058  48 148 248 348 148 48 248 48   -  -
11059  49 149 249 349   -  -   -  -   -  -
11060  50 150 250 350 150 50   -  - 350 50
11061  51 151 251 351   -  - 251 51   -  -
11062  52 152 252 352 152 52   -  -   -  -
11063  53 153 253 353   -  -   -  -   -  -
11064  54 154 254 354 154 54 254 54   -  -
11065  55 155 255 355   -  -   -  - 355 55
11066  56 156 256 356 156 56   -  -   -  -
11067  57 157 257 357   -  - 257 57   -  -
11068  58 158 258 358 158 58   -  -   -  -
11069  59 159 259 359   -  -   -  -   -  -
11070  60 160 260 360 160 60 260 60 360 60
11071  61 161 261 361   -  -   -  -   -  -
11072  62 162 262 362 162 62   -  -   -  -
11073  63 163 263 363   -  - 263 63   -  -
11074  64 164 264 364 164 64   -  -   -  -
11075  65 165 265 365   -  -   -  - 365 65
11076  66 166 266 366 166 66 266 66   -  -
11077  67 167 267 367   -  -   -  -   -  -
11078  68 168 268 368 168 68   -  -   -  -
11079  69 169 269 369   -  - 269 69   -  -
11080  70 170 270 370 170 70   -  - 370 70
11081  71 171 271 371   -  -   -  -   -  -
11082  72 172 272 372 172 72 272 72   -  -
11083  73 173 273 373   -  -   -  -   -  -
11084  74 174 274 374 174 74   -  -   -  -
11085  75 175 275 375   -  - 275 75 375 75
11086  76 176 276 376 176 76   -  -   -  -
11087  77 177 277 377   -  -   -  -   -  -
11088  78 178 278 378 178 78 278 78   -  -
11089  79 179 279 379   -  -   -  -   -  -
11090  80 180 280 380 180 80   -  - 380 80
11091  81 181 281 381   -  - 281 81   -  -
11092  82 182 282 382 182 82   -  -   -  -
11093  83 183 283 383   -  -   -  -   -  -
11094  84 184 284 384 184 84 284 84   -  -
11095  85 185 285 385   -  -   -  - 385 85
11096  86 186 286 386 186 86   -  -   -  -
11097  87 187 287 387   -  - 287 87   -  -
11098  88 188 288 388 188 88   -  -   -  -
11099  89 189 289 389   -  -   -  -   -  -
11100  90 190 290 390 190 90 290 90 390 90
11101  91 191 291 391   -  -   -  -   -  -
11102  92 192 292 392 192 92   -  -   -  -
11103  93 193 293 393   -  - 293 93   -  -
11104  94 194 294 394 194 94   -  -   -  -
11105  95 195 295 395   -  -   -  - 395 95
11106  96   - 296 396   -  -   -  -   -  -
11107  97 197   - 397   -  -   -  -   -  -
11108  98 198 298   -   -  -   -  -   -  -
11109  99   -   -   -   -  -   -  -   -  -
11110}
11111do_execsql_test joinD-403 {
11112  SELECT t1.*, t2.*, t3.*, t4.*
11113  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11114  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11115  LEFT JOIN t4 ON t1.d=t4.d
11116  WHERE t4.z>0
11117  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11118} {
11119   5 105 205 305   -  -   -  - 305  5
11120  10 110 210 310 110 10   -  - 310 10
11121  15 115 215 315   -  - 215 15 315 15
11122  20 120 220 320 120 20   -  - 320 20
11123  25 125 225 325   -  -   -  - 325 25
11124  30 130 230 330 130 30 230 30 330 30
11125  35 135 235 335   -  -   -  - 335 35
11126  40 140 240 340 140 40   -  - 340 40
11127  45 145 245 345   -  - 245 45 345 45
11128  50 150 250 350 150 50   -  - 350 50
11129  55 155 255 355   -  -   -  - 355 55
11130  60 160 260 360 160 60 260 60 360 60
11131  65 165 265 365   -  -   -  - 365 65
11132  70 170 270 370 170 70   -  - 370 70
11133  75 175 275 375   -  - 275 75 375 75
11134  80 180 280 380 180 80   -  - 380 80
11135  85 185 285 385   -  -   -  - 385 85
11136  90 190 290 390 190 90 290 90 390 90
11137  95 195 295 395   -  -   -  - 395 95
11138}
11139do_execsql_test joinD-404 {
11140  SELECT t1.*, t2.*, t3.*, t4.*
11141  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11142  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11143  LEFT JOIN t4 ON t1.d=t4.d
11144  WHERE t4.z IS NULL OR t4.z>0
11145  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11146} {
11147   1 101 201 301   -  -   -  -   -  -
11148   2 102 202 302 102  2   -  -   -  -
11149   3 103 203 303   -  - 203  3   -  -
11150   4 104 204 304 104  4   -  -   -  -
11151   5 105 205 305   -  -   -  - 305  5
11152   6 106 206 306 106  6 206  6   -  -
11153   7 107 207 307   -  -   -  -   -  -
11154   8 108 208 308 108  8   -  -   -  -
11155   9 109 209 309   -  - 209  9   -  -
11156  10 110 210 310 110 10   -  - 310 10
11157  11 111 211 311   -  -   -  -   -  -
11158  12 112 212 312 112 12 212 12   -  -
11159  13 113 213 313   -  -   -  -   -  -
11160  14 114 214 314 114 14   -  -   -  -
11161  15 115 215 315   -  - 215 15 315 15
11162  16 116 216 316 116 16   -  -   -  -
11163  17 117 217 317   -  -   -  -   -  -
11164  18 118 218 318 118 18 218 18   -  -
11165  19 119 219 319   -  -   -  -   -  -
11166  20 120 220 320 120 20   -  - 320 20
11167  21 121 221 321   -  - 221 21   -  -
11168  22 122 222 322 122 22   -  -   -  -
11169  23 123 223 323   -  -   -  -   -  -
11170  24 124 224 324 124 24 224 24   -  -
11171  25 125 225 325   -  -   -  - 325 25
11172  26 126 226 326 126 26   -  -   -  -
11173  27 127 227 327   -  - 227 27   -  -
11174  28 128 228 328 128 28   -  -   -  -
11175  29 129 229 329   -  -   -  -   -  -
11176  30 130 230 330 130 30 230 30 330 30
11177  31 131 231 331   -  -   -  -   -  -
11178  32 132 232 332 132 32   -  -   -  -
11179  33 133 233 333   -  - 233 33   -  -
11180  34 134 234 334 134 34   -  -   -  -
11181  35 135 235 335   -  -   -  - 335 35
11182  36 136 236 336 136 36 236 36   -  -
11183  37 137 237 337   -  -   -  -   -  -
11184  38 138 238 338 138 38   -  -   -  -
11185  39 139 239 339   -  - 239 39   -  -
11186  40 140 240 340 140 40   -  - 340 40
11187  41 141 241 341   -  -   -  -   -  -
11188  42 142 242 342 142 42 242 42   -  -
11189  43 143 243 343   -  -   -  -   -  -
11190  44 144 244 344 144 44   -  -   -  -
11191  45 145 245 345   -  - 245 45 345 45
11192  46 146 246 346 146 46   -  -   -  -
11193  47 147 247 347   -  -   -  -   -  -
11194  48 148 248 348 148 48 248 48   -  -
11195  49 149 249 349   -  -   -  -   -  -
11196  50 150 250 350 150 50   -  - 350 50
11197  51 151 251 351   -  - 251 51   -  -
11198  52 152 252 352 152 52   -  -   -  -
11199  53 153 253 353   -  -   -  -   -  -
11200  54 154 254 354 154 54 254 54   -  -
11201  55 155 255 355   -  -   -  - 355 55
11202  56 156 256 356 156 56   -  -   -  -
11203  57 157 257 357   -  - 257 57   -  -
11204  58 158 258 358 158 58   -  -   -  -
11205  59 159 259 359   -  -   -  -   -  -
11206  60 160 260 360 160 60 260 60 360 60
11207  61 161 261 361   -  -   -  -   -  -
11208  62 162 262 362 162 62   -  -   -  -
11209  63 163 263 363   -  - 263 63   -  -
11210  64 164 264 364 164 64   -  -   -  -
11211  65 165 265 365   -  -   -  - 365 65
11212  66 166 266 366 166 66 266 66   -  -
11213  67 167 267 367   -  -   -  -   -  -
11214  68 168 268 368 168 68   -  -   -  -
11215  69 169 269 369   -  - 269 69   -  -
11216  70 170 270 370 170 70   -  - 370 70
11217  71 171 271 371   -  -   -  -   -  -
11218  72 172 272 372 172 72 272 72   -  -
11219  73 173 273 373   -  -   -  -   -  -
11220  74 174 274 374 174 74   -  -   -  -
11221  75 175 275 375   -  - 275 75 375 75
11222  76 176 276 376 176 76   -  -   -  -
11223  77 177 277 377   -  -   -  -   -  -
11224  78 178 278 378 178 78 278 78   -  -
11225  79 179 279 379   -  -   -  -   -  -
11226  80 180 280 380 180 80   -  - 380 80
11227  81 181 281 381   -  - 281 81   -  -
11228  82 182 282 382 182 82   -  -   -  -
11229  83 183 283 383   -  -   -  -   -  -
11230  84 184 284 384 184 84 284 84   -  -
11231  85 185 285 385   -  -   -  - 385 85
11232  86 186 286 386 186 86   -  -   -  -
11233  87 187 287 387   -  - 287 87   -  -
11234  88 188 288 388 188 88   -  -   -  -
11235  89 189 289 389   -  -   -  -   -  -
11236  90 190 290 390 190 90 290 90 390 90
11237  91 191 291 391   -  -   -  -   -  -
11238  92 192 292 392 192 92   -  -   -  -
11239  93 193 293 393   -  - 293 93   -  -
11240  94 194 294 394 194 94   -  -   -  -
11241  95 195 295 395   -  -   -  - 395 95
11242  96   - 296 396   -  -   -  -   -  -
11243  97 197   - 397   -  -   -  -   -  -
11244  98 198 298   -   -  -   -  -   -  -
11245  99   -   -   -   -  -   -  -   -  -
11246}
11247do_execsql_test joinD-405 {
11248  SELECT t1.*, t2.*, t3.*, t4.*
11249  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11250  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11251  LEFT JOIN t4 ON t1.d=t4.d
11252  WHERE t2.x>0 AND t4.z>0
11253  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11254} {
11255  10 110 210 310 110 10   -  - 310 10
11256  20 120 220 320 120 20   -  - 320 20
11257  30 130 230 330 130 30 230 30 330 30
11258  40 140 240 340 140 40   -  - 340 40
11259  50 150 250 350 150 50   -  - 350 50
11260  60 160 260 360 160 60 260 60 360 60
11261  70 170 270 370 170 70   -  - 370 70
11262  80 180 280 380 180 80   -  - 380 80
11263  90 190 290 390 190 90 290 90 390 90
11264}
11265do_execsql_test joinD-406 {
11266  SELECT t1.*, t2.*, t3.*, t4.*
11267  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11268  LEFT JOIN t3 ON t1.c=t3.c
11269  LEFT JOIN t4 ON t1.d=t4.d
11270  WHERE t4.z>0 AND t3.y>0
11271  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11272} {
11273  15 115 215 315   -  - 215 15 315 15
11274  30 130 230 330 130 30 230 30 330 30
11275  45 145 245 345   -  - 245 45 345 45
11276  60 160 260 360 160 60 260 60 360 60
11277  75 175 275 375   -  - 275 75 375 75
11278  90 190 290 390 190 90 290 90 390 90
11279}
11280do_execsql_test joinD-407 {
11281  SELECT t1.*, t2.*, t3.*, t4.*
11282  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11283  LEFT JOIN t3 ON t1.c=t3.c
11284  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11285  WHERE t2.x>0 AND t3.y>0
11286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11287} {
11288   6 106 206 306 106  6 206  6   -  -
11289  12 112 212 312 112 12 212 12   -  -
11290  18 118 218 318 118 18 218 18   -  -
11291  24 124 224 324 124 24 224 24   -  -
11292  30 130 230 330 130 30 230 30 330 30
11293  36 136 236 336 136 36 236 36   -  -
11294  42 142 242 342 142 42 242 42   -  -
11295  48 148 248 348 148 48 248 48   -  -
11296  54 154 254 354 154 54 254 54   -  -
11297  60 160 260 360 160 60 260 60 360 60
11298  66 166 266 366 166 66 266 66   -  -
11299  72 172 272 372 172 72 272 72   -  -
11300  78 178 278 378 178 78 278 78   -  -
11301  84 184 284 384 184 84 284 84   -  -
11302  90 190 290 390 190 90 290 90 390 90
11303}
11304do_execsql_test joinD-408 {
11305  SELECT t1.*, t2.*, t3.*, t4.*
11306  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11307  LEFT JOIN t3 ON t1.c=t3.c
11308  LEFT JOIN t4 ON t1.d=t4.d
11309  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
11310  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11311} {
11312  30 130 230 330 130 30 230 30 330 30
11313  60 160 260 360 160 60 260 60 360 60
11314  90 190 290 390 190 90 290 90 390 90
11315}
11316do_execsql_test joinD-409 {
11317  SELECT t1.*, t2.*, t3.*, t4.*
11318  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
11319  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
11320  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
11321  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11322} {
11323   0 100 200 300   -  -   -  -   -  -
11324   1 101 201 301   -  -   -  -   -  -
11325   2 102 202 302 102  2   -  -   -  -
11326   3 103 203 303   -  - 203  3   -  -
11327   4 104 204 304 104  4   -  -   -  -
11328   5 105 205 305   -  -   -  - 305  5
11329   6 106 206 306 106  6 206  6   -  -
11330   7 107 207 307   -  -   -  -   -  -
11331   8 108 208 308 108  8   -  -   -  -
11332   9 109 209 309   -  - 209  9   -  -
11333  10 110 210 310 110 10   -  - 310 10
11334  11 111 211 311   -  -   -  -   -  -
11335  12 112 212 312 112 12 212 12   -  -
11336  13 113 213 313   -  -   -  -   -  -
11337  14 114 214 314 114 14   -  -   -  -
11338  15 115 215 315   -  - 215 15 315 15
11339  16 116 216 316 116 16   -  -   -  -
11340  17 117 217 317   -  -   -  -   -  -
11341  18 118 218 318 118 18 218 18   -  -
11342  19 119 219 319   -  -   -  -   -  -
11343  20 120 220 320 120 20   -  - 320 20
11344  21 121 221 321   -  - 221 21   -  -
11345  22 122 222 322 122 22   -  -   -  -
11346  23 123 223 323   -  -   -  -   -  -
11347  24 124 224 324 124 24 224 24   -  -
11348  25 125 225 325   -  -   -  - 325 25
11349  26 126 226 326 126 26   -  -   -  -
11350  27 127 227 327   -  - 227 27   -  -
11351  28 128 228 328 128 28   -  -   -  -
11352  29 129 229 329   -  -   -  -   -  -
11353  30 130 230 330 130 30 230 30 330 30
11354  31 131 231 331   -  -   -  -   -  -
11355  32 132 232 332 132 32   -  -   -  -
11356  33 133 233 333   -  - 233 33   -  -
11357  34 134 234 334 134 34   -  -   -  -
11358  35 135 235 335   -  -   -  - 335 35
11359  36 136 236 336 136 36 236 36   -  -
11360  37 137 237 337   -  -   -  -   -  -
11361  38 138 238 338 138 38   -  -   -  -
11362  39 139 239 339   -  - 239 39   -  -
11363  40 140 240 340 140 40   -  - 340 40
11364  41 141 241 341   -  -   -  -   -  -
11365  42 142 242 342 142 42 242 42   -  -
11366  43 143 243 343   -  -   -  -   -  -
11367  44 144 244 344 144 44   -  -   -  -
11368  45 145 245 345   -  - 245 45 345 45
11369  46 146 246 346 146 46   -  -   -  -
11370  47 147 247 347   -  -   -  -   -  -
11371  48 148 248 348 148 48 248 48   -  -
11372  49 149 249 349   -  -   -  -   -  -
11373  50 150 250 350 150 50   -  - 350 50
11374  51 151 251 351   -  - 251 51   -  -
11375  52 152 252 352 152 52   -  -   -  -
11376  53 153 253 353   -  -   -  -   -  -
11377  54 154 254 354 154 54 254 54   -  -
11378  55 155 255 355   -  -   -  - 355 55
11379  56 156 256 356 156 56   -  -   -  -
11380  57 157 257 357   -  - 257 57   -  -
11381  58 158 258 358 158 58   -  -   -  -
11382  59 159 259 359   -  -   -  -   -  -
11383  60 160 260 360 160 60 260 60 360 60
11384  61 161 261 361   -  -   -  -   -  -
11385  62 162 262 362 162 62   -  -   -  -
11386  63 163 263 363   -  - 263 63   -  -
11387  64 164 264 364 164 64   -  -   -  -
11388  65 165 265 365   -  -   -  - 365 65
11389  66 166 266 366 166 66 266 66   -  -
11390  67 167 267 367   -  -   -  -   -  -
11391  68 168 268 368 168 68   -  -   -  -
11392  69 169 269 369   -  - 269 69   -  -
11393  70 170 270 370 170 70   -  - 370 70
11394  71 171 271 371   -  -   -  -   -  -
11395  72 172 272 372 172 72 272 72   -  -
11396  73 173 273 373   -  -   -  -   -  -
11397  74 174 274 374 174 74   -  -   -  -
11398  75 175 275 375   -  - 275 75 375 75
11399  76 176 276 376 176 76   -  -   -  -
11400  77 177 277 377   -  -   -  -   -  -
11401  78 178 278 378 178 78 278 78   -  -
11402  79 179 279 379   -  -   -  -   -  -
11403  80 180 280 380 180 80   -  - 380 80
11404  81 181 281 381   -  - 281 81   -  -
11405  82 182 282 382 182 82   -  -   -  -
11406  83 183 283 383   -  -   -  -   -  -
11407  84 184 284 384 184 84 284 84   -  -
11408  85 185 285 385   -  -   -  - 385 85
11409  86 186 286 386 186 86   -  -   -  -
11410  87 187 287 387   -  - 287 87   -  -
11411  88 188 288 388 188 88   -  -   -  -
11412  89 189 289 389   -  -   -  -   -  -
11413  90 190 290 390 190 90 290 90 390 90
11414  91 191 291 391   -  -   -  -   -  -
11415  92 192 292 392 192 92   -  -   -  -
11416  93 193 293 393   -  - 293 93   -  -
11417  94 194 294 394 194 94   -  -   -  -
11418  95 195 295 395   -  -   -  - 395 95
11419  96   - 296 396   -  -   -  -   -  -
11420  97 197   - 397   -  -   -  -   -  -
11421  98 198 298   -   -  -   -  -   -  -
11422  99   -   -   -   -  -   -  -   -  -
11423}
11424do_execsql_test joinD-410 {
11425  SELECT t1.*, t2.*, t3.*, t4.*
11426  FROM t1 LEFT JOIN t2 ON t2.x>0
11427  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
11428  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
11429  WHERE t1.b IS NOT DISTINCT FROM t2.b
11430  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11431} {
11432   2 102 202 302 102  2   -  -   -  -
11433   4 104 204 304 104  4   -  -   -  -
11434   6 106 206 306 106  6 206  6   -  -
11435   8 108 208 308 108  8   -  -   -  -
11436  10 110 210 310 110 10   -  - 310 10
11437  12 112 212 312 112 12 212 12   -  -
11438  14 114 214 314 114 14   -  -   -  -
11439  16 116 216 316 116 16   -  -   -  -
11440  18 118 218 318 118 18 218 18   -  -
11441  20 120 220 320 120 20   -  - 320 20
11442  22 122 222 322 122 22   -  -   -  -
11443  24 124 224 324 124 24 224 24   -  -
11444  26 126 226 326 126 26   -  -   -  -
11445  28 128 228 328 128 28   -  -   -  -
11446  30 130 230 330 130 30 230 30 330 30
11447  32 132 232 332 132 32   -  -   -  -
11448  34 134 234 334 134 34   -  -   -  -
11449  36 136 236 336 136 36 236 36   -  -
11450  38 138 238 338 138 38   -  -   -  -
11451  40 140 240 340 140 40   -  - 340 40
11452  42 142 242 342 142 42 242 42   -  -
11453  44 144 244 344 144 44   -  -   -  -
11454  46 146 246 346 146 46   -  -   -  -
11455  48 148 248 348 148 48 248 48   -  -
11456  50 150 250 350 150 50   -  - 350 50
11457  52 152 252 352 152 52   -  -   -  -
11458  54 154 254 354 154 54 254 54   -  -
11459  56 156 256 356 156 56   -  -   -  -
11460  58 158 258 358 158 58   -  -   -  -
11461  60 160 260 360 160 60 260 60 360 60
11462  62 162 262 362 162 62   -  -   -  -
11463  64 164 264 364 164 64   -  -   -  -
11464  66 166 266 366 166 66 266 66   -  -
11465  68 168 268 368 168 68   -  -   -  -
11466  70 170 270 370 170 70   -  - 370 70
11467  72 172 272 372 172 72 272 72   -  -
11468  74 174 274 374 174 74   -  -   -  -
11469  76 176 276 376 176 76   -  -   -  -
11470  78 178 278 378 178 78 278 78   -  -
11471  80 180 280 380 180 80   -  - 380 80
11472  82 182 282 382 182 82   -  -   -  -
11473  84 184 284 384 184 84 284 84   -  -
11474  86 186 286 386 186 86   -  -   -  -
11475  88 188 288 388 188 88   -  -   -  -
11476  90 190 290 390 190 90 290 90 390 90
11477  92 192 292 392 192 92   -  -   -  -
11478  94 194 294 394 194 94   -  -   -  -
11479}
11480do_execsql_test joinD-411 {
11481  SELECT t1.*, t2.*, t3.*, t4.*
11482  FROM t1 LEFT JOIN t2 ON t2.x>0
11483  LEFT JOIN t3 ON t3.y>0
11484  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
11485  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
11486  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11487} {
11488   6 106 206 306 106  6 206  6   -  -
11489  12 112 212 312 112 12 212 12   -  -
11490  18 118 218 318 118 18 218 18   -  -
11491  24 124 224 324 124 24 224 24   -  -
11492  30 130 230 330 130 30 230 30 330 30
11493  36 136 236 336 136 36 236 36   -  -
11494  42 142 242 342 142 42 242 42   -  -
11495  48 148 248 348 148 48 248 48   -  -
11496  54 154 254 354 154 54 254 54   -  -
11497  60 160 260 360 160 60 260 60 360 60
11498  66 166 266 366 166 66 266 66   -  -
11499  72 172 272 372 172 72 272 72   -  -
11500  78 178 278 378 178 78 278 78   -  -
11501  84 184 284 384 184 84 284 84   -  -
11502  90 190 290 390 190 90 290 90 390 90
11503}
11504do_execsql_test joinD-412 {
11505  SELECT t1.*, t2.*, t3.*, t4.*
11506  FROM t1 LEFT JOIN t2 ON t2.x>0
11507  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
11508  LEFT JOIN t4 ON t4.z>0
11509  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
11510  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11511} {
11512  10 110 210 310 110 10   -  - 310 10
11513  20 120 220 320 120 20   -  - 320 20
11514  30 130 230 330 130 30 230 30 330 30
11515  40 140 240 340 140 40   -  - 340 40
11516  50 150 250 350 150 50   -  - 350 50
11517  60 160 260 360 160 60 260 60 360 60
11518  70 170 270 370 170 70   -  - 370 70
11519  80 180 280 380 180 80   -  - 380 80
11520  90 190 290 390 190 90 290 90 390 90
11521}
11522do_execsql_test joinD-413 {
11523  SELECT t1.*, t2.*, t3.*, t4.*
11524  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
11525  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11526  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11527  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11528} {
11529   0 100 200 300   -  -   -  -   -  -
11530   1 101 201 301   -  -   -  -   -  -
11531   2 102 202 302 102  2   -  -   -  -
11532   3 103 203 303   -  - 203  3   -  -
11533   4 104 204 304 104  4   -  -   -  -
11534   5 105 205 305   -  -   -  - 305  5
11535   6 106 206 306 106  6 206  6   -  -
11536   7 107 207 307   -  -   -  -   -  -
11537   8 108 208 308 108  8   -  -   -  -
11538   9 109 209 309   -  - 209  9   -  -
11539  10 110 210 310 110 10   -  - 310 10
11540  11 111 211 311   -  -   -  -   -  -
11541  12 112 212 312 112 12 212 12   -  -
11542  13 113 213 313   -  -   -  -   -  -
11543  14 114 214 314 114 14   -  -   -  -
11544  15 115 215 315   -  - 215 15 315 15
11545  16 116 216 316 116 16   -  -   -  -
11546  17 117 217 317   -  -   -  -   -  -
11547  18 118 218 318 118 18 218 18   -  -
11548  19 119 219 319   -  -   -  -   -  -
11549  20 120 220 320 120 20   -  - 320 20
11550  21 121 221 321   -  - 221 21   -  -
11551  22 122 222 322 122 22   -  -   -  -
11552  23 123 223 323   -  -   -  -   -  -
11553  24 124 224 324 124 24 224 24   -  -
11554  25 125 225 325   -  -   -  - 325 25
11555  26 126 226 326 126 26   -  -   -  -
11556  27 127 227 327   -  - 227 27   -  -
11557  28 128 228 328 128 28   -  -   -  -
11558  29 129 229 329   -  -   -  -   -  -
11559  30 130 230 330 130 30 230 30 330 30
11560  31 131 231 331   -  -   -  -   -  -
11561  32 132 232 332 132 32   -  -   -  -
11562  33 133 233 333   -  - 233 33   -  -
11563  34 134 234 334 134 34   -  -   -  -
11564  35 135 235 335   -  -   -  - 335 35
11565  36 136 236 336 136 36 236 36   -  -
11566  37 137 237 337   -  -   -  -   -  -
11567  38 138 238 338 138 38   -  -   -  -
11568  39 139 239 339   -  - 239 39   -  -
11569  40 140 240 340 140 40   -  - 340 40
11570  41 141 241 341   -  -   -  -   -  -
11571  42 142 242 342 142 42 242 42   -  -
11572  43 143 243 343   -  -   -  -   -  -
11573  44 144 244 344 144 44   -  -   -  -
11574  45 145 245 345   -  - 245 45 345 45
11575  46 146 246 346 146 46   -  -   -  -
11576  47 147 247 347   -  -   -  -   -  -
11577  48 148 248 348 148 48 248 48   -  -
11578  49 149 249 349   -  -   -  -   -  -
11579  50 150 250 350 150 50   -  - 350 50
11580  51 151 251 351   -  - 251 51   -  -
11581  52 152 252 352 152 52   -  -   -  -
11582  53 153 253 353   -  -   -  -   -  -
11583  54 154 254 354 154 54 254 54   -  -
11584  55 155 255 355   -  -   -  - 355 55
11585  56 156 256 356 156 56   -  -   -  -
11586  57 157 257 357   -  - 257 57   -  -
11587  58 158 258 358 158 58   -  -   -  -
11588  59 159 259 359   -  -   -  -   -  -
11589  60 160 260 360 160 60 260 60 360 60
11590  61 161 261 361   -  -   -  -   -  -
11591  62 162 262 362 162 62   -  -   -  -
11592  63 163 263 363   -  - 263 63   -  -
11593  64 164 264 364 164 64   -  -   -  -
11594  65 165 265 365   -  -   -  - 365 65
11595  66 166 266 366 166 66 266 66   -  -
11596  67 167 267 367   -  -   -  -   -  -
11597  68 168 268 368 168 68   -  -   -  -
11598  69 169 269 369   -  - 269 69   -  -
11599  70 170 270 370 170 70   -  - 370 70
11600  71 171 271 371   -  -   -  -   -  -
11601  72 172 272 372 172 72 272 72   -  -
11602  73 173 273 373   -  -   -  -   -  -
11603  74 174 274 374 174 74   -  -   -  -
11604  75 175 275 375   -  - 275 75 375 75
11605  76 176 276 376 176 76   -  -   -  -
11606  77 177 277 377   -  -   -  -   -  -
11607  78 178 278 378 178 78 278 78   -  -
11608  79 179 279 379   -  -   -  -   -  -
11609  80 180 280 380 180 80   -  - 380 80
11610  81 181 281 381   -  - 281 81   -  -
11611  82 182 282 382 182 82   -  -   -  -
11612  83 183 283 383   -  -   -  -   -  -
11613  84 184 284 384 184 84 284 84   -  -
11614  85 185 285 385   -  -   -  - 385 85
11615  86 186 286 386 186 86   -  -   -  -
11616  87 187 287 387   -  - 287 87   -  -
11617  88 188 288 388 188 88   -  -   -  -
11618  89 189 289 389   -  -   -  -   -  -
11619  90 190 290 390 190 90 290 90 390 90
11620  91 191 291 391   -  -   -  -   -  -
11621  92 192 292 392 192 92   -  -   -  -
11622  93 193 293 393   -  - 293 93   -  -
11623  94 194 294 394 194 94   -  -   -  -
11624  95 195 295 395   -  -   -  - 395 95
11625  96   - 296 396   -  -   -  -   -  -
11626  97 197   - 397   -  -   -  -   -  -
11627  98 198 298   -   -  -   -  -   -  -
11628  99   -   -   -   -  -   -  -   -  -
11629}
11630do_execsql_test joinD-414 {
11631  SELECT t1.*, t2.*, t3.*, t4.*
11632  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11633  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
11634  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11635  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11636} {
11637   0 100 200 300   -  -   -  -   -  -
11638   1 101 201 301   -  -   -  -   -  -
11639   2 102 202 302 102  2   -  -   -  -
11640   3 103 203 303   -  - 203  3   -  -
11641   4 104 204 304 104  4   -  -   -  -
11642   5 105 205 305   -  -   -  - 305  5
11643   6 106 206 306 106  6 206  6   -  -
11644   7 107 207 307   -  -   -  -   -  -
11645   8 108 208 308 108  8   -  -   -  -
11646   9 109 209 309   -  - 209  9   -  -
11647  10 110 210 310 110 10   -  - 310 10
11648  11 111 211 311   -  -   -  -   -  -
11649  12 112 212 312 112 12 212 12   -  -
11650  13 113 213 313   -  -   -  -   -  -
11651  14 114 214 314 114 14   -  -   -  -
11652  15 115 215 315   -  - 215 15 315 15
11653  16 116 216 316 116 16   -  -   -  -
11654  17 117 217 317   -  -   -  -   -  -
11655  18 118 218 318 118 18 218 18   -  -
11656  19 119 219 319   -  -   -  -   -  -
11657  20 120 220 320 120 20   -  - 320 20
11658  21 121 221 321   -  - 221 21   -  -
11659  22 122 222 322 122 22   -  -   -  -
11660  23 123 223 323   -  -   -  -   -  -
11661  24 124 224 324 124 24 224 24   -  -
11662  25 125 225 325   -  -   -  - 325 25
11663  26 126 226 326 126 26   -  -   -  -
11664  27 127 227 327   -  - 227 27   -  -
11665  28 128 228 328 128 28   -  -   -  -
11666  29 129 229 329   -  -   -  -   -  -
11667  30 130 230 330 130 30 230 30 330 30
11668  31 131 231 331   -  -   -  -   -  -
11669  32 132 232 332 132 32   -  -   -  -
11670  33 133 233 333   -  - 233 33   -  -
11671  34 134 234 334 134 34   -  -   -  -
11672  35 135 235 335   -  -   -  - 335 35
11673  36 136 236 336 136 36 236 36   -  -
11674  37 137 237 337   -  -   -  -   -  -
11675  38 138 238 338 138 38   -  -   -  -
11676  39 139 239 339   -  - 239 39   -  -
11677  40 140 240 340 140 40   -  - 340 40
11678  41 141 241 341   -  -   -  -   -  -
11679  42 142 242 342 142 42 242 42   -  -
11680  43 143 243 343   -  -   -  -   -  -
11681  44 144 244 344 144 44   -  -   -  -
11682  45 145 245 345   -  - 245 45 345 45
11683  46 146 246 346 146 46   -  -   -  -
11684  47 147 247 347   -  -   -  -   -  -
11685  48 148 248 348 148 48 248 48   -  -
11686  49 149 249 349   -  -   -  -   -  -
11687  50 150 250 350 150 50   -  - 350 50
11688  51 151 251 351   -  - 251 51   -  -
11689  52 152 252 352 152 52   -  -   -  -
11690  53 153 253 353   -  -   -  -   -  -
11691  54 154 254 354 154 54 254 54   -  -
11692  55 155 255 355   -  -   -  - 355 55
11693  56 156 256 356 156 56   -  -   -  -
11694  57 157 257 357   -  - 257 57   -  -
11695  58 158 258 358 158 58   -  -   -  -
11696  59 159 259 359   -  -   -  -   -  -
11697  60 160 260 360 160 60 260 60 360 60
11698  61 161 261 361   -  -   -  -   -  -
11699  62 162 262 362 162 62   -  -   -  -
11700  63 163 263 363   -  - 263 63   -  -
11701  64 164 264 364 164 64   -  -   -  -
11702  65 165 265 365   -  -   -  - 365 65
11703  66 166 266 366 166 66 266 66   -  -
11704  67 167 267 367   -  -   -  -   -  -
11705  68 168 268 368 168 68   -  -   -  -
11706  69 169 269 369   -  - 269 69   -  -
11707  70 170 270 370 170 70   -  - 370 70
11708  71 171 271 371   -  -   -  -   -  -
11709  72 172 272 372 172 72 272 72   -  -
11710  73 173 273 373   -  -   -  -   -  -
11711  74 174 274 374 174 74   -  -   -  -
11712  75 175 275 375   -  - 275 75 375 75
11713  76 176 276 376 176 76   -  -   -  -
11714  77 177 277 377   -  -   -  -   -  -
11715  78 178 278 378 178 78 278 78   -  -
11716  79 179 279 379   -  -   -  -   -  -
11717  80 180 280 380 180 80   -  - 380 80
11718  81 181 281 381   -  - 281 81   -  -
11719  82 182 282 382 182 82   -  -   -  -
11720  83 183 283 383   -  -   -  -   -  -
11721  84 184 284 384 184 84 284 84   -  -
11722  85 185 285 385   -  -   -  - 385 85
11723  86 186 286 386 186 86   -  -   -  -
11724  87 187 287 387   -  - 287 87   -  -
11725  88 188 288 388 188 88   -  -   -  -
11726  89 189 289 389   -  -   -  -   -  -
11727  90 190 290 390 190 90 290 90 390 90
11728  91 191 291 391   -  -   -  -   -  -
11729  92 192 292 392 192 92   -  -   -  -
11730  93 193 293 393   -  - 293 93   -  -
11731  94 194 294 394 194 94   -  -   -  -
11732  95 195 295 395   -  -   -  - 395 95
11733  96   - 296 396   -  -   -  -   -  -
11734  97 197   - 397   -  -   -  -   -  -
11735  98 198 298   -   -  -   -  -   -  -
11736  99   -   -   -   -  -   -  -   -  -
11737}
11738do_execsql_test joinD-415 {
11739  SELECT t1.*, t2.*, t3.*, t4.*
11740  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11741  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11742  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11743  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11744} {
11745   5 105 205 305   -  -   -  - 305  5
11746  10 110 210 310 110 10   -  - 310 10
11747  15 115 215 315   -  - 215 15 315 15
11748  20 120 220 320 120 20   -  - 320 20
11749  25 125 225 325   -  -   -  - 325 25
11750  30 130 230 330 130 30 230 30 330 30
11751  35 135 235 335   -  -   -  - 335 35
11752  40 140 240 340 140 40   -  - 340 40
11753  45 145 245 345   -  - 245 45 345 45
11754  50 150 250 350 150 50   -  - 350 50
11755  55 155 255 355   -  -   -  - 355 55
11756  60 160 260 360 160 60 260 60 360 60
11757  65 165 265 365   -  -   -  - 365 65
11758  70 170 270 370 170 70   -  - 370 70
11759  75 175 275 375   -  - 275 75 375 75
11760  80 180 280 380 180 80   -  - 380 80
11761  85 185 285 385   -  -   -  - 385 85
11762  90 190 290 390 190 90 290 90 390 90
11763  95 195 295 395   -  -   -  - 395 95
11764   -   -   -   -   -  -   -  - 300  0
11765}
11766do_execsql_test joinD-416 {
11767  SELECT t1.*, t2.*, t3.*, t4.*
11768  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
11769  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11770  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11771  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11772} {
11773   5 105 205 305   -  -   -  - 305  5
11774  10 110 210 310 110 10   -  - 310 10
11775  15 115 215 315   -  - 215 15 315 15
11776  20 120 220 320 120 20   -  - 320 20
11777  25 125 225 325   -  -   -  - 325 25
11778  30 130 230 330 130 30 230 30 330 30
11779  35 135 235 335   -  -   -  - 335 35
11780  40 140 240 340 140 40   -  - 340 40
11781  45 145 245 345   -  - 245 45 345 45
11782  50 150 250 350 150 50   -  - 350 50
11783  55 155 255 355   -  -   -  - 355 55
11784  60 160 260 360 160 60 260 60 360 60
11785  65 165 265 365   -  -   -  - 365 65
11786  70 170 270 370 170 70   -  - 370 70
11787  75 175 275 375   -  - 275 75 375 75
11788  80 180 280 380 180 80   -  - 380 80
11789  85 185 285 385   -  -   -  - 385 85
11790  90 190 290 390 190 90 290 90 390 90
11791  95 195 295 395   -  -   -  - 395 95
11792   -   -   -   -   -  -   -  - 300  0
11793}
11794do_execsql_test joinD-417 {
11795  SELECT t1.*, t2.*, t3.*, t4.*
11796  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11797  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11798  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11799  WHERE t2.x>0
11800  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11801} {
11802  10 110 210 310 110 10   -  - 310 10
11803  20 120 220 320 120 20   -  - 320 20
11804  30 130 230 330 130 30 230 30 330 30
11805  40 140 240 340 140 40   -  - 340 40
11806  50 150 250 350 150 50   -  - 350 50
11807  60 160 260 360 160 60 260 60 360 60
11808  70 170 270 370 170 70   -  - 370 70
11809  80 180 280 380 180 80   -  - 380 80
11810  90 190 290 390 190 90 290 90 390 90
11811}
11812do_execsql_test joinD-418 {
11813  SELECT t1.*, t2.*, t3.*, t4.*
11814  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11815  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11816  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11817  WHERE (t2.x>0 OR t2.x IS NULL)
11818  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11819} {
11820   5 105 205 305   -  -   -  - 305  5
11821  10 110 210 310 110 10   -  - 310 10
11822  15 115 215 315   -  - 215 15 315 15
11823  20 120 220 320 120 20   -  - 320 20
11824  25 125 225 325   -  -   -  - 325 25
11825  30 130 230 330 130 30 230 30 330 30
11826  35 135 235 335   -  -   -  - 335 35
11827  40 140 240 340 140 40   -  - 340 40
11828  45 145 245 345   -  - 245 45 345 45
11829  50 150 250 350 150 50   -  - 350 50
11830  55 155 255 355   -  -   -  - 355 55
11831  60 160 260 360 160 60 260 60 360 60
11832  65 165 265 365   -  -   -  - 365 65
11833  70 170 270 370 170 70   -  - 370 70
11834  75 175 275 375   -  - 275 75 375 75
11835  80 180 280 380 180 80   -  - 380 80
11836  85 185 285 385   -  -   -  - 385 85
11837  90 190 290 390 190 90 290 90 390 90
11838  95 195 295 395   -  -   -  - 395 95
11839   -   -   -   -   -  -   -  - 300  0
11840}
11841do_execsql_test joinD-419 {
11842  SELECT t1.*, t2.*, t3.*, t4.*
11843  FROM t1 LEFT JOIN t2 ON true
11844  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11845  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11846  WHERE t1.b=t2.b AND t2.x>0
11847  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11848} {
11849  10 110 210 310 110 10   -  - 310 10
11850  20 120 220 320 120 20   -  - 320 20
11851  30 130 230 330 130 30 230 30 330 30
11852  40 140 240 340 140 40   -  - 340 40
11853  50 150 250 350 150 50   -  - 350 50
11854  60 160 260 360 160 60 260 60 360 60
11855  70 170 270 370 170 70   -  - 370 70
11856  80 180 280 380 180 80   -  - 380 80
11857  90 190 290 390 190 90 290 90 390 90
11858}
11859do_execsql_test joinD-420 {
11860  SELECT t1.*, t2.*, t3.*, t4.*
11861  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11862  LEFT JOIN t3 ON t1.c=t3.c
11863  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11864  WHERE t3.y>0
11865  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11866} {
11867  15 115 215 315   -  - 215 15 315 15
11868  30 130 230 330 130 30 230 30 330 30
11869  45 145 245 345   -  - 245 45 345 45
11870  60 160 260 360 160 60 260 60 360 60
11871  75 175 275 375   -  - 275 75 375 75
11872  90 190 290 390 190 90 290 90 390 90
11873}
11874do_execsql_test joinD-421 {
11875  SELECT t1.*, t2.*, t3.*, t4.*
11876  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11877  LEFT JOIN t3 ON t1.c=t3.c
11878  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11879  WHERE t3.y>0 OR t3.y IS NULL
11880  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11881} {
11882   5 105 205 305   -  -   -  - 305  5
11883  10 110 210 310 110 10   -  - 310 10
11884  15 115 215 315   -  - 215 15 315 15
11885  20 120 220 320 120 20   -  - 320 20
11886  25 125 225 325   -  -   -  - 325 25
11887  30 130 230 330 130 30 230 30 330 30
11888  35 135 235 335   -  -   -  - 335 35
11889  40 140 240 340 140 40   -  - 340 40
11890  45 145 245 345   -  - 245 45 345 45
11891  50 150 250 350 150 50   -  - 350 50
11892  55 155 255 355   -  -   -  - 355 55
11893  60 160 260 360 160 60 260 60 360 60
11894  65 165 265 365   -  -   -  - 365 65
11895  70 170 270 370 170 70   -  - 370 70
11896  75 175 275 375   -  - 275 75 375 75
11897  80 180 280 380 180 80   -  - 380 80
11898  85 185 285 385   -  -   -  - 385 85
11899  90 190 290 390 190 90 290 90 390 90
11900  95 195 295 395   -  -   -  - 395 95
11901   -   -   -   -   -  -   -  - 300  0
11902}
11903do_execsql_test joinD-422 {
11904  SELECT t1.*, t2.*, t3.*, t4.*
11905  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11906  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11907  RIGHT JOIN t4 ON t1.d=t4.d
11908  WHERE t4.z>0
11909  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11910} {
11911   5 105 205 305   -  -   -  - 305  5
11912  10 110 210 310 110 10   -  - 310 10
11913  15 115 215 315   -  - 215 15 315 15
11914  20 120 220 320 120 20   -  - 320 20
11915  25 125 225 325   -  -   -  - 325 25
11916  30 130 230 330 130 30 230 30 330 30
11917  35 135 235 335   -  -   -  - 335 35
11918  40 140 240 340 140 40   -  - 340 40
11919  45 145 245 345   -  - 245 45 345 45
11920  50 150 250 350 150 50   -  - 350 50
11921  55 155 255 355   -  -   -  - 355 55
11922  60 160 260 360 160 60 260 60 360 60
11923  65 165 265 365   -  -   -  - 365 65
11924  70 170 270 370 170 70   -  - 370 70
11925  75 175 275 375   -  - 275 75 375 75
11926  80 180 280 380 180 80   -  - 380 80
11927  85 185 285 385   -  -   -  - 385 85
11928  90 190 290 390 190 90 290 90 390 90
11929  95 195 295 395   -  -   -  - 395 95
11930}
11931do_execsql_test joinD-423 {
11932  SELECT t1.*, t2.*, t3.*, t4.*
11933  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11934  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11935  RIGHT JOIN t4 ON t1.d=t4.d
11936  WHERE t4.z IS NULL OR t4.z>0
11937  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11938} {
11939   5 105 205 305   -  -   -  - 305  5
11940  10 110 210 310 110 10   -  - 310 10
11941  15 115 215 315   -  - 215 15 315 15
11942  20 120 220 320 120 20   -  - 320 20
11943  25 125 225 325   -  -   -  - 325 25
11944  30 130 230 330 130 30 230 30 330 30
11945  35 135 235 335   -  -   -  - 335 35
11946  40 140 240 340 140 40   -  - 340 40
11947  45 145 245 345   -  - 245 45 345 45
11948  50 150 250 350 150 50   -  - 350 50
11949  55 155 255 355   -  -   -  - 355 55
11950  60 160 260 360 160 60 260 60 360 60
11951  65 165 265 365   -  -   -  - 365 65
11952  70 170 270 370 170 70   -  - 370 70
11953  75 175 275 375   -  - 275 75 375 75
11954  80 180 280 380 180 80   -  - 380 80
11955  85 185 285 385   -  -   -  - 385 85
11956  90 190 290 390 190 90 290 90 390 90
11957  95 195 295 395   -  -   -  - 395 95
11958}
11959do_execsql_test joinD-424 {
11960  SELECT t1.*, t2.*, t3.*, t4.*
11961  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11962  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11963  RIGHT JOIN t4 ON t1.d=t4.d
11964  WHERE t2.x>0 AND t4.z>0
11965  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11966} {
11967  10 110 210 310 110 10   -  - 310 10
11968  20 120 220 320 120 20   -  - 320 20
11969  30 130 230 330 130 30 230 30 330 30
11970  40 140 240 340 140 40   -  - 340 40
11971  50 150 250 350 150 50   -  - 350 50
11972  60 160 260 360 160 60 260 60 360 60
11973  70 170 270 370 170 70   -  - 370 70
11974  80 180 280 380 180 80   -  - 380 80
11975  90 190 290 390 190 90 290 90 390 90
11976}
11977do_execsql_test joinD-425 {
11978  SELECT t1.*, t2.*, t3.*, t4.*
11979  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11980  LEFT JOIN t3 ON t1.c=t3.c
11981  RIGHT JOIN t4 ON t1.d=t4.d
11982  WHERE t4.z>0 AND t3.y>0
11983  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11984} {
11985  15 115 215 315   -  - 215 15 315 15
11986  30 130 230 330 130 30 230 30 330 30
11987  45 145 245 345   -  - 245 45 345 45
11988  60 160 260 360 160 60 260 60 360 60
11989  75 175 275 375   -  - 275 75 375 75
11990  90 190 290 390 190 90 290 90 390 90
11991}
11992do_execsql_test joinD-426 {
11993  SELECT t1.*, t2.*, t3.*, t4.*
11994  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11995  LEFT JOIN t3 ON t1.c=t3.c
11996  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11997  WHERE t2.x>0 AND t3.y>0
11998  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11999} {
12000  30 130 230 330 130 30 230 30 330 30
12001  60 160 260 360 160 60 260 60 360 60
12002  90 190 290 390 190 90 290 90 390 90
12003}
12004do_execsql_test joinD-427 {
12005  SELECT t1.*, t2.*, t3.*, t4.*
12006  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12007  LEFT JOIN t3 ON t1.c=t3.c
12008  RIGHT JOIN t4 ON t1.d=t4.d
12009  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
12010  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12011} {
12012  30 130 230 330 130 30 230 30 330 30
12013  60 160 260 360 160 60 260 60 360 60
12014  90 190 290 390 190 90 290 90 390 90
12015}
12016do_execsql_test joinD-428 {
12017  SELECT t1.*, t2.*, t3.*, t4.*
12018  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
12019  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12020  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
12021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12022} {
12023   5 105 205 305   -  -   -  - 305  5
12024  10 110 210 310 110 10   -  - 310 10
12025  15 115 215 315   -  - 215 15 315 15
12026  20 120 220 320 120 20   -  - 320 20
12027  25 125 225 325   -  -   -  - 325 25
12028  30 130 230 330 130 30 230 30 330 30
12029  35 135 235 335   -  -   -  - 335 35
12030  40 140 240 340 140 40   -  - 340 40
12031  45 145 245 345   -  - 245 45 345 45
12032  50 150 250 350 150 50   -  - 350 50
12033  55 155 255 355   -  -   -  - 355 55
12034  60 160 260 360 160 60 260 60 360 60
12035  65 165 265 365   -  -   -  - 365 65
12036  70 170 270 370 170 70   -  - 370 70
12037  75 175 275 375   -  - 275 75 375 75
12038  80 180 280 380 180 80   -  - 380 80
12039  85 185 285 385   -  -   -  - 385 85
12040  90 190 290 390 190 90 290 90 390 90
12041  95 195 295 395   -  -   -  - 395 95
12042   -   -   -   -   -  -   -  - 300  0
12043}
12044do_execsql_test joinD-429 {
12045  SELECT t1.*, t2.*, t3.*, t4.*
12046  FROM t1 LEFT JOIN t2 ON t2.x>0
12047  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12048  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
12049  WHERE t1.b IS NOT DISTINCT FROM t2.b
12050  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12051} {
12052  10 110 210 310 110 10   -  - 310 10
12053  20 120 220 320 120 20   -  - 320 20
12054  30 130 230 330 130 30 230 30 330 30
12055  40 140 240 340 140 40   -  - 340 40
12056  50 150 250 350 150 50   -  - 350 50
12057  60 160 260 360 160 60 260 60 360 60
12058  70 170 270 370 170 70   -  - 370 70
12059  80 180 280 380 180 80   -  - 380 80
12060  90 190 290 390 190 90 290 90 390 90
12061   -   -   -   -   -  -   -  - 300  0
12062}
12063do_execsql_test joinD-430 {
12064  SELECT t1.*, t2.*, t3.*, t4.*
12065  FROM t1 LEFT JOIN t2 ON t2.x>0
12066  LEFT JOIN t3 ON t3.y>0
12067  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
12068  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
12069  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12070} {
12071  30 130 230 330 130 30 230 30 330 30
12072  60 160 260 360 160 60 260 60 360 60
12073  90 190 290 390 190 90 290 90 390 90
12074   -   -   -   -   -  -   -  - 300  0
12075}
12076do_execsql_test joinD-431 {
12077  SELECT t1.*, t2.*, t3.*, t4.*
12078  FROM t1 LEFT JOIN t2 ON t2.x>0
12079  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12080  RIGHT JOIN t4 ON t4.z>0
12081  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
12082  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12083} {
12084  10 110 210 310 110 10   -  - 310 10
12085  20 120 220 320 120 20   -  - 320 20
12086  30 130 230 330 130 30 230 30 330 30
12087  40 140 240 340 140 40   -  - 340 40
12088  50 150 250 350 150 50   -  - 350 50
12089  60 160 260 360 160 60 260 60 360 60
12090  70 170 270 370 170 70   -  - 370 70
12091  80 180 280 380 180 80   -  - 380 80
12092  90 190 290 390 190 90 290 90 390 90
12093}
12094do_execsql_test joinD-432 {
12095  SELECT t1.*, t2.*, t3.*, t4.*
12096  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
12097  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12098  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
12099  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12100} {
12101   5 105 205 305   -  -   -  - 305  5
12102  10 110 210 310 110 10   -  - 310 10
12103  15 115 215 315   -  - 215 15 315 15
12104  20 120 220 320 120 20   -  - 320 20
12105  25 125 225 325   -  -   -  - 325 25
12106  30 130 230 330 130 30 230 30 330 30
12107  35 135 235 335   -  -   -  - 335 35
12108  40 140 240 340 140 40   -  - 340 40
12109  45 145 245 345   -  - 245 45 345 45
12110  50 150 250 350 150 50   -  - 350 50
12111  55 155 255 355   -  -   -  - 355 55
12112  60 160 260 360 160 60 260 60 360 60
12113  65 165 265 365   -  -   -  - 365 65
12114  70 170 270 370 170 70   -  - 370 70
12115  75 175 275 375   -  - 275 75 375 75
12116  80 180 280 380 180 80   -  - 380 80
12117  85 185 285 385   -  -   -  - 385 85
12118  90 190 290 390 190 90 290 90 390 90
12119  95 195 295 395   -  -   -  - 395 95
12120   -   -   -   -   -  -   -  - 300  0
12121}
12122do_execsql_test joinD-433 {
12123  SELECT t1.*, t2.*, t3.*, t4.*
12124  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12125  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
12126  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
12127  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12128} {
12129   5 105 205 305   -  -   -  - 305  5
12130  10 110 210 310 110 10   -  - 310 10
12131  15 115 215 315   -  - 215 15 315 15
12132  20 120 220 320 120 20   -  - 320 20
12133  25 125 225 325   -  -   -  - 325 25
12134  30 130 230 330 130 30 230 30 330 30
12135  35 135 235 335   -  -   -  - 335 35
12136  40 140 240 340 140 40   -  - 340 40
12137  45 145 245 345   -  - 245 45 345 45
12138  50 150 250 350 150 50   -  - 350 50
12139  55 155 255 355   -  -   -  - 355 55
12140  60 160 260 360 160 60 260 60 360 60
12141  65 165 265 365   -  -   -  - 365 65
12142  70 170 270 370 170 70   -  - 370 70
12143  75 175 275 375   -  - 275 75 375 75
12144  80 180 280 380 180 80   -  - 380 80
12145  85 185 285 385   -  -   -  - 385 85
12146  90 190 290 390 190 90 290 90 390 90
12147  95 195 295 395   -  -   -  - 395 95
12148   -   -   -   -   -  -   -  - 300  0
12149}
12150do_execsql_test joinD-434 {
12151  SELECT t1.*, t2.*, t3.*, t4.*
12152  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12153  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12154  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12155  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12156} {
12157   0 100 200 300   -  -   -  -   -  -
12158   1 101 201 301   -  -   -  -   -  -
12159   2 102 202 302 102  2   -  -   -  -
12160   3 103 203 303   -  - 203  3   -  -
12161   4 104 204 304 104  4   -  -   -  -
12162   5 105 205 305   -  -   -  - 305  5
12163   6 106 206 306 106  6 206  6   -  -
12164   7 107 207 307   -  -   -  -   -  -
12165   8 108 208 308 108  8   -  -   -  -
12166   9 109 209 309   -  - 209  9   -  -
12167  10 110 210 310 110 10   -  - 310 10
12168  11 111 211 311   -  -   -  -   -  -
12169  12 112 212 312 112 12 212 12   -  -
12170  13 113 213 313   -  -   -  -   -  -
12171  14 114 214 314 114 14   -  -   -  -
12172  15 115 215 315   -  - 215 15 315 15
12173  16 116 216 316 116 16   -  -   -  -
12174  17 117 217 317   -  -   -  -   -  -
12175  18 118 218 318 118 18 218 18   -  -
12176  19 119 219 319   -  -   -  -   -  -
12177  20 120 220 320 120 20   -  - 320 20
12178  21 121 221 321   -  - 221 21   -  -
12179  22 122 222 322 122 22   -  -   -  -
12180  23 123 223 323   -  -   -  -   -  -
12181  24 124 224 324 124 24 224 24   -  -
12182  25 125 225 325   -  -   -  - 325 25
12183  26 126 226 326 126 26   -  -   -  -
12184  27 127 227 327   -  - 227 27   -  -
12185  28 128 228 328 128 28   -  -   -  -
12186  29 129 229 329   -  -   -  -   -  -
12187  30 130 230 330 130 30 230 30 330 30
12188  31 131 231 331   -  -   -  -   -  -
12189  32 132 232 332 132 32   -  -   -  -
12190  33 133 233 333   -  - 233 33   -  -
12191  34 134 234 334 134 34   -  -   -  -
12192  35 135 235 335   -  -   -  - 335 35
12193  36 136 236 336 136 36 236 36   -  -
12194  37 137 237 337   -  -   -  -   -  -
12195  38 138 238 338 138 38   -  -   -  -
12196  39 139 239 339   -  - 239 39   -  -
12197  40 140 240 340 140 40   -  - 340 40
12198  41 141 241 341   -  -   -  -   -  -
12199  42 142 242 342 142 42 242 42   -  -
12200  43 143 243 343   -  -   -  -   -  -
12201  44 144 244 344 144 44   -  -   -  -
12202  45 145 245 345   -  - 245 45 345 45
12203  46 146 246 346 146 46   -  -   -  -
12204  47 147 247 347   -  -   -  -   -  -
12205  48 148 248 348 148 48 248 48   -  -
12206  49 149 249 349   -  -   -  -   -  -
12207  50 150 250 350 150 50   -  - 350 50
12208  51 151 251 351   -  - 251 51   -  -
12209  52 152 252 352 152 52   -  -   -  -
12210  53 153 253 353   -  -   -  -   -  -
12211  54 154 254 354 154 54 254 54   -  -
12212  55 155 255 355   -  -   -  - 355 55
12213  56 156 256 356 156 56   -  -   -  -
12214  57 157 257 357   -  - 257 57   -  -
12215  58 158 258 358 158 58   -  -   -  -
12216  59 159 259 359   -  -   -  -   -  -
12217  60 160 260 360 160 60 260 60 360 60
12218  61 161 261 361   -  -   -  -   -  -
12219  62 162 262 362 162 62   -  -   -  -
12220  63 163 263 363   -  - 263 63   -  -
12221  64 164 264 364 164 64   -  -   -  -
12222  65 165 265 365   -  -   -  - 365 65
12223  66 166 266 366 166 66 266 66   -  -
12224  67 167 267 367   -  -   -  -   -  -
12225  68 168 268 368 168 68   -  -   -  -
12226  69 169 269 369   -  - 269 69   -  -
12227  70 170 270 370 170 70   -  - 370 70
12228  71 171 271 371   -  -   -  -   -  -
12229  72 172 272 372 172 72 272 72   -  -
12230  73 173 273 373   -  -   -  -   -  -
12231  74 174 274 374 174 74   -  -   -  -
12232  75 175 275 375   -  - 275 75 375 75
12233  76 176 276 376 176 76   -  -   -  -
12234  77 177 277 377   -  -   -  -   -  -
12235  78 178 278 378 178 78 278 78   -  -
12236  79 179 279 379   -  -   -  -   -  -
12237  80 180 280 380 180 80   -  - 380 80
12238  81 181 281 381   -  - 281 81   -  -
12239  82 182 282 382 182 82   -  -   -  -
12240  83 183 283 383   -  -   -  -   -  -
12241  84 184 284 384 184 84 284 84   -  -
12242  85 185 285 385   -  -   -  - 385 85
12243  86 186 286 386 186 86   -  -   -  -
12244  87 187 287 387   -  - 287 87   -  -
12245  88 188 288 388 188 88   -  -   -  -
12246  89 189 289 389   -  -   -  -   -  -
12247  90 190 290 390 190 90 290 90 390 90
12248  91 191 291 391   -  -   -  -   -  -
12249  92 192 292 392 192 92   -  -   -  -
12250  93 193 293 393   -  - 293 93   -  -
12251  94 194 294 394 194 94   -  -   -  -
12252  95 195 295 395   -  -   -  - 395 95
12253  96   - 296 396   -  -   -  -   -  -
12254  97 197   - 397   -  -   -  -   -  -
12255  98 198 298   -   -  -   -  -   -  -
12256  99   -   -   -   -  -   -  -   -  -
12257   -   -   -   -   -  -   -  - 300  0
12258}
12259do_execsql_test joinD-435 {
12260  SELECT t1.*, t2.*, t3.*, t4.*
12261  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
12262  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12263  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12264  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12265} {
12266   0 100 200 300   -  -   -  -   -  -
12267   1 101 201 301   -  -   -  -   -  -
12268   2 102 202 302 102  2   -  -   -  -
12269   3 103 203 303   -  - 203  3   -  -
12270   4 104 204 304 104  4   -  -   -  -
12271   5 105 205 305   -  -   -  - 305  5
12272   6 106 206 306 106  6 206  6   -  -
12273   7 107 207 307   -  -   -  -   -  -
12274   8 108 208 308 108  8   -  -   -  -
12275   9 109 209 309   -  - 209  9   -  -
12276  10 110 210 310 110 10   -  - 310 10
12277  11 111 211 311   -  -   -  -   -  -
12278  12 112 212 312 112 12 212 12   -  -
12279  13 113 213 313   -  -   -  -   -  -
12280  14 114 214 314 114 14   -  -   -  -
12281  15 115 215 315   -  - 215 15 315 15
12282  16 116 216 316 116 16   -  -   -  -
12283  17 117 217 317   -  -   -  -   -  -
12284  18 118 218 318 118 18 218 18   -  -
12285  19 119 219 319   -  -   -  -   -  -
12286  20 120 220 320 120 20   -  - 320 20
12287  21 121 221 321   -  - 221 21   -  -
12288  22 122 222 322 122 22   -  -   -  -
12289  23 123 223 323   -  -   -  -   -  -
12290  24 124 224 324 124 24 224 24   -  -
12291  25 125 225 325   -  -   -  - 325 25
12292  26 126 226 326 126 26   -  -   -  -
12293  27 127 227 327   -  - 227 27   -  -
12294  28 128 228 328 128 28   -  -   -  -
12295  29 129 229 329   -  -   -  -   -  -
12296  30 130 230 330 130 30 230 30 330 30
12297  31 131 231 331   -  -   -  -   -  -
12298  32 132 232 332 132 32   -  -   -  -
12299  33 133 233 333   -  - 233 33   -  -
12300  34 134 234 334 134 34   -  -   -  -
12301  35 135 235 335   -  -   -  - 335 35
12302  36 136 236 336 136 36 236 36   -  -
12303  37 137 237 337   -  -   -  -   -  -
12304  38 138 238 338 138 38   -  -   -  -
12305  39 139 239 339   -  - 239 39   -  -
12306  40 140 240 340 140 40   -  - 340 40
12307  41 141 241 341   -  -   -  -   -  -
12308  42 142 242 342 142 42 242 42   -  -
12309  43 143 243 343   -  -   -  -   -  -
12310  44 144 244 344 144 44   -  -   -  -
12311  45 145 245 345   -  - 245 45 345 45
12312  46 146 246 346 146 46   -  -   -  -
12313  47 147 247 347   -  -   -  -   -  -
12314  48 148 248 348 148 48 248 48   -  -
12315  49 149 249 349   -  -   -  -   -  -
12316  50 150 250 350 150 50   -  - 350 50
12317  51 151 251 351   -  - 251 51   -  -
12318  52 152 252 352 152 52   -  -   -  -
12319  53 153 253 353   -  -   -  -   -  -
12320  54 154 254 354 154 54 254 54   -  -
12321  55 155 255 355   -  -   -  - 355 55
12322  56 156 256 356 156 56   -  -   -  -
12323  57 157 257 357   -  - 257 57   -  -
12324  58 158 258 358 158 58   -  -   -  -
12325  59 159 259 359   -  -   -  -   -  -
12326  60 160 260 360 160 60 260 60 360 60
12327  61 161 261 361   -  -   -  -   -  -
12328  62 162 262 362 162 62   -  -   -  -
12329  63 163 263 363   -  - 263 63   -  -
12330  64 164 264 364 164 64   -  -   -  -
12331  65 165 265 365   -  -   -  - 365 65
12332  66 166 266 366 166 66 266 66   -  -
12333  67 167 267 367   -  -   -  -   -  -
12334  68 168 268 368 168 68   -  -   -  -
12335  69 169 269 369   -  - 269 69   -  -
12336  70 170 270 370 170 70   -  - 370 70
12337  71 171 271 371   -  -   -  -   -  -
12338  72 172 272 372 172 72 272 72   -  -
12339  73 173 273 373   -  -   -  -   -  -
12340  74 174 274 374 174 74   -  -   -  -
12341  75 175 275 375   -  - 275 75 375 75
12342  76 176 276 376 176 76   -  -   -  -
12343  77 177 277 377   -  -   -  -   -  -
12344  78 178 278 378 178 78 278 78   -  -
12345  79 179 279 379   -  -   -  -   -  -
12346  80 180 280 380 180 80   -  - 380 80
12347  81 181 281 381   -  - 281 81   -  -
12348  82 182 282 382 182 82   -  -   -  -
12349  83 183 283 383   -  -   -  -   -  -
12350  84 184 284 384 184 84 284 84   -  -
12351  85 185 285 385   -  -   -  - 385 85
12352  86 186 286 386 186 86   -  -   -  -
12353  87 187 287 387   -  - 287 87   -  -
12354  88 188 288 388 188 88   -  -   -  -
12355  89 189 289 389   -  -   -  -   -  -
12356  90 190 290 390 190 90 290 90 390 90
12357  91 191 291 391   -  -   -  -   -  -
12358  92 192 292 392 192 92   -  -   -  -
12359  93 193 293 393   -  - 293 93   -  -
12360  94 194 294 394 194 94   -  -   -  -
12361  95 195 295 395   -  -   -  - 395 95
12362  96   - 296 396   -  -   -  -   -  -
12363  97 197   - 397   -  -   -  -   -  -
12364  98 198 298   -   -  -   -  -   -  -
12365  99   -   -   -   -  -   -  -   -  -
12366   -   -   -   -   -  -   -  - 300  0
12367}
12368do_execsql_test joinD-436 {
12369  SELECT t1.*, t2.*, t3.*, t4.*
12370  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12371  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12372  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12373  WHERE t2.x>0
12374  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12375} {
12376   2 102 202 302 102  2   -  -   -  -
12377   4 104 204 304 104  4   -  -   -  -
12378   6 106 206 306 106  6 206  6   -  -
12379   8 108 208 308 108  8   -  -   -  -
12380  10 110 210 310 110 10   -  - 310 10
12381  12 112 212 312 112 12 212 12   -  -
12382  14 114 214 314 114 14   -  -   -  -
12383  16 116 216 316 116 16   -  -   -  -
12384  18 118 218 318 118 18 218 18   -  -
12385  20 120 220 320 120 20   -  - 320 20
12386  22 122 222 322 122 22   -  -   -  -
12387  24 124 224 324 124 24 224 24   -  -
12388  26 126 226 326 126 26   -  -   -  -
12389  28 128 228 328 128 28   -  -   -  -
12390  30 130 230 330 130 30 230 30 330 30
12391  32 132 232 332 132 32   -  -   -  -
12392  34 134 234 334 134 34   -  -   -  -
12393  36 136 236 336 136 36 236 36   -  -
12394  38 138 238 338 138 38   -  -   -  -
12395  40 140 240 340 140 40   -  - 340 40
12396  42 142 242 342 142 42 242 42   -  -
12397  44 144 244 344 144 44   -  -   -  -
12398  46 146 246 346 146 46   -  -   -  -
12399  48 148 248 348 148 48 248 48   -  -
12400  50 150 250 350 150 50   -  - 350 50
12401  52 152 252 352 152 52   -  -   -  -
12402  54 154 254 354 154 54 254 54   -  -
12403  56 156 256 356 156 56   -  -   -  -
12404  58 158 258 358 158 58   -  -   -  -
12405  60 160 260 360 160 60 260 60 360 60
12406  62 162 262 362 162 62   -  -   -  -
12407  64 164 264 364 164 64   -  -   -  -
12408  66 166 266 366 166 66 266 66   -  -
12409  68 168 268 368 168 68   -  -   -  -
12410  70 170 270 370 170 70   -  - 370 70
12411  72 172 272 372 172 72 272 72   -  -
12412  74 174 274 374 174 74   -  -   -  -
12413  76 176 276 376 176 76   -  -   -  -
12414  78 178 278 378 178 78 278 78   -  -
12415  80 180 280 380 180 80   -  - 380 80
12416  82 182 282 382 182 82   -  -   -  -
12417  84 184 284 384 184 84 284 84   -  -
12418  86 186 286 386 186 86   -  -   -  -
12419  88 188 288 388 188 88   -  -   -  -
12420  90 190 290 390 190 90 290 90 390 90
12421  92 192 292 392 192 92   -  -   -  -
12422  94 194 294 394 194 94   -  -   -  -
12423}
12424do_execsql_test joinD-437 {
12425  SELECT t1.*, t2.*, t3.*, t4.*
12426  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12427  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12428  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12429  WHERE (t2.x>0 OR t2.x IS NULL)
12430  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12431} {
12432   1 101 201 301   -  -   -  -   -  -
12433   2 102 202 302 102  2   -  -   -  -
12434   3 103 203 303   -  - 203  3   -  -
12435   4 104 204 304 104  4   -  -   -  -
12436   5 105 205 305   -  -   -  - 305  5
12437   6 106 206 306 106  6 206  6   -  -
12438   7 107 207 307   -  -   -  -   -  -
12439   8 108 208 308 108  8   -  -   -  -
12440   9 109 209 309   -  - 209  9   -  -
12441  10 110 210 310 110 10   -  - 310 10
12442  11 111 211 311   -  -   -  -   -  -
12443  12 112 212 312 112 12 212 12   -  -
12444  13 113 213 313   -  -   -  -   -  -
12445  14 114 214 314 114 14   -  -   -  -
12446  15 115 215 315   -  - 215 15 315 15
12447  16 116 216 316 116 16   -  -   -  -
12448  17 117 217 317   -  -   -  -   -  -
12449  18 118 218 318 118 18 218 18   -  -
12450  19 119 219 319   -  -   -  -   -  -
12451  20 120 220 320 120 20   -  - 320 20
12452  21 121 221 321   -  - 221 21   -  -
12453  22 122 222 322 122 22   -  -   -  -
12454  23 123 223 323   -  -   -  -   -  -
12455  24 124 224 324 124 24 224 24   -  -
12456  25 125 225 325   -  -   -  - 325 25
12457  26 126 226 326 126 26   -  -   -  -
12458  27 127 227 327   -  - 227 27   -  -
12459  28 128 228 328 128 28   -  -   -  -
12460  29 129 229 329   -  -   -  -   -  -
12461  30 130 230 330 130 30 230 30 330 30
12462  31 131 231 331   -  -   -  -   -  -
12463  32 132 232 332 132 32   -  -   -  -
12464  33 133 233 333   -  - 233 33   -  -
12465  34 134 234 334 134 34   -  -   -  -
12466  35 135 235 335   -  -   -  - 335 35
12467  36 136 236 336 136 36 236 36   -  -
12468  37 137 237 337   -  -   -  -   -  -
12469  38 138 238 338 138 38   -  -   -  -
12470  39 139 239 339   -  - 239 39   -  -
12471  40 140 240 340 140 40   -  - 340 40
12472  41 141 241 341   -  -   -  -   -  -
12473  42 142 242 342 142 42 242 42   -  -
12474  43 143 243 343   -  -   -  -   -  -
12475  44 144 244 344 144 44   -  -   -  -
12476  45 145 245 345   -  - 245 45 345 45
12477  46 146 246 346 146 46   -  -   -  -
12478  47 147 247 347   -  -   -  -   -  -
12479  48 148 248 348 148 48 248 48   -  -
12480  49 149 249 349   -  -   -  -   -  -
12481  50 150 250 350 150 50   -  - 350 50
12482  51 151 251 351   -  - 251 51   -  -
12483  52 152 252 352 152 52   -  -   -  -
12484  53 153 253 353   -  -   -  -   -  -
12485  54 154 254 354 154 54 254 54   -  -
12486  55 155 255 355   -  -   -  - 355 55
12487  56 156 256 356 156 56   -  -   -  -
12488  57 157 257 357   -  - 257 57   -  -
12489  58 158 258 358 158 58   -  -   -  -
12490  59 159 259 359   -  -   -  -   -  -
12491  60 160 260 360 160 60 260 60 360 60
12492  61 161 261 361   -  -   -  -   -  -
12493  62 162 262 362 162 62   -  -   -  -
12494  63 163 263 363   -  - 263 63   -  -
12495  64 164 264 364 164 64   -  -   -  -
12496  65 165 265 365   -  -   -  - 365 65
12497  66 166 266 366 166 66 266 66   -  -
12498  67 167 267 367   -  -   -  -   -  -
12499  68 168 268 368 168 68   -  -   -  -
12500  69 169 269 369   -  - 269 69   -  -
12501  70 170 270 370 170 70   -  - 370 70
12502  71 171 271 371   -  -   -  -   -  -
12503  72 172 272 372 172 72 272 72   -  -
12504  73 173 273 373   -  -   -  -   -  -
12505  74 174 274 374 174 74   -  -   -  -
12506  75 175 275 375   -  - 275 75 375 75
12507  76 176 276 376 176 76   -  -   -  -
12508  77 177 277 377   -  -   -  -   -  -
12509  78 178 278 378 178 78 278 78   -  -
12510  79 179 279 379   -  -   -  -   -  -
12511  80 180 280 380 180 80   -  - 380 80
12512  81 181 281 381   -  - 281 81   -  -
12513  82 182 282 382 182 82   -  -   -  -
12514  83 183 283 383   -  -   -  -   -  -
12515  84 184 284 384 184 84 284 84   -  -
12516  85 185 285 385   -  -   -  - 385 85
12517  86 186 286 386 186 86   -  -   -  -
12518  87 187 287 387   -  - 287 87   -  -
12519  88 188 288 388 188 88   -  -   -  -
12520  89 189 289 389   -  -   -  -   -  -
12521  90 190 290 390 190 90 290 90 390 90
12522  91 191 291 391   -  -   -  -   -  -
12523  92 192 292 392 192 92   -  -   -  -
12524  93 193 293 393   -  - 293 93   -  -
12525  94 194 294 394 194 94   -  -   -  -
12526  95 195 295 395   -  -   -  - 395 95
12527  96   - 296 396   -  -   -  -   -  -
12528  97 197   - 397   -  -   -  -   -  -
12529  98 198 298   -   -  -   -  -   -  -
12530  99   -   -   -   -  -   -  -   -  -
12531   -   -   -   -   -  -   -  - 300  0
12532}
12533do_execsql_test joinD-438 {
12534  SELECT t1.*, t2.*, t3.*, t4.*
12535  FROM t1 LEFT JOIN t2 ON true
12536  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12537  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12538  WHERE t1.b=t2.b AND t2.x>0
12539  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12540} {
12541   2 102 202 302 102  2   -  -   -  -
12542   4 104 204 304 104  4   -  -   -  -
12543   6 106 206 306 106  6 206  6   -  -
12544   8 108 208 308 108  8   -  -   -  -
12545  10 110 210 310 110 10   -  - 310 10
12546  12 112 212 312 112 12 212 12   -  -
12547  14 114 214 314 114 14   -  -   -  -
12548  16 116 216 316 116 16   -  -   -  -
12549  18 118 218 318 118 18 218 18   -  -
12550  20 120 220 320 120 20   -  - 320 20
12551  22 122 222 322 122 22   -  -   -  -
12552  24 124 224 324 124 24 224 24   -  -
12553  26 126 226 326 126 26   -  -   -  -
12554  28 128 228 328 128 28   -  -   -  -
12555  30 130 230 330 130 30 230 30 330 30
12556  32 132 232 332 132 32   -  -   -  -
12557  34 134 234 334 134 34   -  -   -  -
12558  36 136 236 336 136 36 236 36   -  -
12559  38 138 238 338 138 38   -  -   -  -
12560  40 140 240 340 140 40   -  - 340 40
12561  42 142 242 342 142 42 242 42   -  -
12562  44 144 244 344 144 44   -  -   -  -
12563  46 146 246 346 146 46   -  -   -  -
12564  48 148 248 348 148 48 248 48   -  -
12565  50 150 250 350 150 50   -  - 350 50
12566  52 152 252 352 152 52   -  -   -  -
12567  54 154 254 354 154 54 254 54   -  -
12568  56 156 256 356 156 56   -  -   -  -
12569  58 158 258 358 158 58   -  -   -  -
12570  60 160 260 360 160 60 260 60 360 60
12571  62 162 262 362 162 62   -  -   -  -
12572  64 164 264 364 164 64   -  -   -  -
12573  66 166 266 366 166 66 266 66   -  -
12574  68 168 268 368 168 68   -  -   -  -
12575  70 170 270 370 170 70   -  - 370 70
12576  72 172 272 372 172 72 272 72   -  -
12577  74 174 274 374 174 74   -  -   -  -
12578  76 176 276 376 176 76   -  -   -  -
12579  78 178 278 378 178 78 278 78   -  -
12580  80 180 280 380 180 80   -  - 380 80
12581  82 182 282 382 182 82   -  -   -  -
12582  84 184 284 384 184 84 284 84   -  -
12583  86 186 286 386 186 86   -  -   -  -
12584  88 188 288 388 188 88   -  -   -  -
12585  90 190 290 390 190 90 290 90 390 90
12586  92 192 292 392 192 92   -  -   -  -
12587  94 194 294 394 194 94   -  -   -  -
12588}
12589do_execsql_test joinD-439 {
12590  SELECT t1.*, t2.*, t3.*, t4.*
12591  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12592  LEFT JOIN t3 ON t1.c=t3.c
12593  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12594  WHERE t3.y>0
12595  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12596} {
12597   3 103 203 303   -  - 203  3   -  -
12598   6 106 206 306 106  6 206  6   -  -
12599   9 109 209 309   -  - 209  9   -  -
12600  12 112 212 312 112 12 212 12   -  -
12601  15 115 215 315   -  - 215 15 315 15
12602  18 118 218 318 118 18 218 18   -  -
12603  21 121 221 321   -  - 221 21   -  -
12604  24 124 224 324 124 24 224 24   -  -
12605  27 127 227 327   -  - 227 27   -  -
12606  30 130 230 330 130 30 230 30 330 30
12607  33 133 233 333   -  - 233 33   -  -
12608  36 136 236 336 136 36 236 36   -  -
12609  39 139 239 339   -  - 239 39   -  -
12610  42 142 242 342 142 42 242 42   -  -
12611  45 145 245 345   -  - 245 45 345 45
12612  48 148 248 348 148 48 248 48   -  -
12613  51 151 251 351   -  - 251 51   -  -
12614  54 154 254 354 154 54 254 54   -  -
12615  57 157 257 357   -  - 257 57   -  -
12616  60 160 260 360 160 60 260 60 360 60
12617  63 163 263 363   -  - 263 63   -  -
12618  66 166 266 366 166 66 266 66   -  -
12619  69 169 269 369   -  - 269 69   -  -
12620  72 172 272 372 172 72 272 72   -  -
12621  75 175 275 375   -  - 275 75 375 75
12622  78 178 278 378 178 78 278 78   -  -
12623  81 181 281 381   -  - 281 81   -  -
12624  84 184 284 384 184 84 284 84   -  -
12625  87 187 287 387   -  - 287 87   -  -
12626  90 190 290 390 190 90 290 90 390 90
12627  93 193 293 393   -  - 293 93   -  -
12628}
12629do_execsql_test joinD-440 {
12630  SELECT t1.*, t2.*, t3.*, t4.*
12631  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12632  LEFT JOIN t3 ON t1.c=t3.c
12633  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12634  WHERE t3.y>0 OR t3.y IS NULL
12635  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12636} {
12637   1 101 201 301   -  -   -  -   -  -
12638   2 102 202 302 102  2   -  -   -  -
12639   3 103 203 303   -  - 203  3   -  -
12640   4 104 204 304 104  4   -  -   -  -
12641   5 105 205 305   -  -   -  - 305  5
12642   6 106 206 306 106  6 206  6   -  -
12643   7 107 207 307   -  -   -  -   -  -
12644   8 108 208 308 108  8   -  -   -  -
12645   9 109 209 309   -  - 209  9   -  -
12646  10 110 210 310 110 10   -  - 310 10
12647  11 111 211 311   -  -   -  -   -  -
12648  12 112 212 312 112 12 212 12   -  -
12649  13 113 213 313   -  -   -  -   -  -
12650  14 114 214 314 114 14   -  -   -  -
12651  15 115 215 315   -  - 215 15 315 15
12652  16 116 216 316 116 16   -  -   -  -
12653  17 117 217 317   -  -   -  -   -  -
12654  18 118 218 318 118 18 218 18   -  -
12655  19 119 219 319   -  -   -  -   -  -
12656  20 120 220 320 120 20   -  - 320 20
12657  21 121 221 321   -  - 221 21   -  -
12658  22 122 222 322 122 22   -  -   -  -
12659  23 123 223 323   -  -   -  -   -  -
12660  24 124 224 324 124 24 224 24   -  -
12661  25 125 225 325   -  -   -  - 325 25
12662  26 126 226 326 126 26   -  -   -  -
12663  27 127 227 327   -  - 227 27   -  -
12664  28 128 228 328 128 28   -  -   -  -
12665  29 129 229 329   -  -   -  -   -  -
12666  30 130 230 330 130 30 230 30 330 30
12667  31 131 231 331   -  -   -  -   -  -
12668  32 132 232 332 132 32   -  -   -  -
12669  33 133 233 333   -  - 233 33   -  -
12670  34 134 234 334 134 34   -  -   -  -
12671  35 135 235 335   -  -   -  - 335 35
12672  36 136 236 336 136 36 236 36   -  -
12673  37 137 237 337   -  -   -  -   -  -
12674  38 138 238 338 138 38   -  -   -  -
12675  39 139 239 339   -  - 239 39   -  -
12676  40 140 240 340 140 40   -  - 340 40
12677  41 141 241 341   -  -   -  -   -  -
12678  42 142 242 342 142 42 242 42   -  -
12679  43 143 243 343   -  -   -  -   -  -
12680  44 144 244 344 144 44   -  -   -  -
12681  45 145 245 345   -  - 245 45 345 45
12682  46 146 246 346 146 46   -  -   -  -
12683  47 147 247 347   -  -   -  -   -  -
12684  48 148 248 348 148 48 248 48   -  -
12685  49 149 249 349   -  -   -  -   -  -
12686  50 150 250 350 150 50   -  - 350 50
12687  51 151 251 351   -  - 251 51   -  -
12688  52 152 252 352 152 52   -  -   -  -
12689  53 153 253 353   -  -   -  -   -  -
12690  54 154 254 354 154 54 254 54   -  -
12691  55 155 255 355   -  -   -  - 355 55
12692  56 156 256 356 156 56   -  -   -  -
12693  57 157 257 357   -  - 257 57   -  -
12694  58 158 258 358 158 58   -  -   -  -
12695  59 159 259 359   -  -   -  -   -  -
12696  60 160 260 360 160 60 260 60 360 60
12697  61 161 261 361   -  -   -  -   -  -
12698  62 162 262 362 162 62   -  -   -  -
12699  63 163 263 363   -  - 263 63   -  -
12700  64 164 264 364 164 64   -  -   -  -
12701  65 165 265 365   -  -   -  - 365 65
12702  66 166 266 366 166 66 266 66   -  -
12703  67 167 267 367   -  -   -  -   -  -
12704  68 168 268 368 168 68   -  -   -  -
12705  69 169 269 369   -  - 269 69   -  -
12706  70 170 270 370 170 70   -  - 370 70
12707  71 171 271 371   -  -   -  -   -  -
12708  72 172 272 372 172 72 272 72   -  -
12709  73 173 273 373   -  -   -  -   -  -
12710  74 174 274 374 174 74   -  -   -  -
12711  75 175 275 375   -  - 275 75 375 75
12712  76 176 276 376 176 76   -  -   -  -
12713  77 177 277 377   -  -   -  -   -  -
12714  78 178 278 378 178 78 278 78   -  -
12715  79 179 279 379   -  -   -  -   -  -
12716  80 180 280 380 180 80   -  - 380 80
12717  81 181 281 381   -  - 281 81   -  -
12718  82 182 282 382 182 82   -  -   -  -
12719  83 183 283 383   -  -   -  -   -  -
12720  84 184 284 384 184 84 284 84   -  -
12721  85 185 285 385   -  -   -  - 385 85
12722  86 186 286 386 186 86   -  -   -  -
12723  87 187 287 387   -  - 287 87   -  -
12724  88 188 288 388 188 88   -  -   -  -
12725  89 189 289 389   -  -   -  -   -  -
12726  90 190 290 390 190 90 290 90 390 90
12727  91 191 291 391   -  -   -  -   -  -
12728  92 192 292 392 192 92   -  -   -  -
12729  93 193 293 393   -  - 293 93   -  -
12730  94 194 294 394 194 94   -  -   -  -
12731  95 195 295 395   -  -   -  - 395 95
12732  96   - 296 396   -  -   -  -   -  -
12733  97 197   - 397   -  -   -  -   -  -
12734  98 198 298   -   -  -   -  -   -  -
12735  99   -   -   -   -  -   -  -   -  -
12736   -   -   -   -   -  -   -  - 300  0
12737}
12738do_execsql_test joinD-441 {
12739  SELECT t1.*, t2.*, t3.*, t4.*
12740  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12741  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12742  FULL JOIN t4 ON t1.d=t4.d
12743  WHERE t4.z>0
12744  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12745} {
12746   5 105 205 305   -  -   -  - 305  5
12747  10 110 210 310 110 10   -  - 310 10
12748  15 115 215 315   -  - 215 15 315 15
12749  20 120 220 320 120 20   -  - 320 20
12750  25 125 225 325   -  -   -  - 325 25
12751  30 130 230 330 130 30 230 30 330 30
12752  35 135 235 335   -  -   -  - 335 35
12753  40 140 240 340 140 40   -  - 340 40
12754  45 145 245 345   -  - 245 45 345 45
12755  50 150 250 350 150 50   -  - 350 50
12756  55 155 255 355   -  -   -  - 355 55
12757  60 160 260 360 160 60 260 60 360 60
12758  65 165 265 365   -  -   -  - 365 65
12759  70 170 270 370 170 70   -  - 370 70
12760  75 175 275 375   -  - 275 75 375 75
12761  80 180 280 380 180 80   -  - 380 80
12762  85 185 285 385   -  -   -  - 385 85
12763  90 190 290 390 190 90 290 90 390 90
12764  95 195 295 395   -  -   -  - 395 95
12765}
12766do_execsql_test joinD-442 {
12767  SELECT t1.*, t2.*, t3.*, t4.*
12768  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12769  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12770  FULL JOIN t4 ON t1.d=t4.d
12771  WHERE t4.z IS NULL OR t4.z>0
12772  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12773} {
12774   1 101 201 301   -  -   -  -   -  -
12775   2 102 202 302 102  2   -  -   -  -
12776   3 103 203 303   -  - 203  3   -  -
12777   4 104 204 304 104  4   -  -   -  -
12778   5 105 205 305   -  -   -  - 305  5
12779   6 106 206 306 106  6 206  6   -  -
12780   7 107 207 307   -  -   -  -   -  -
12781   8 108 208 308 108  8   -  -   -  -
12782   9 109 209 309   -  - 209  9   -  -
12783  10 110 210 310 110 10   -  - 310 10
12784  11 111 211 311   -  -   -  -   -  -
12785  12 112 212 312 112 12 212 12   -  -
12786  13 113 213 313   -  -   -  -   -  -
12787  14 114 214 314 114 14   -  -   -  -
12788  15 115 215 315   -  - 215 15 315 15
12789  16 116 216 316 116 16   -  -   -  -
12790  17 117 217 317   -  -   -  -   -  -
12791  18 118 218 318 118 18 218 18   -  -
12792  19 119 219 319   -  -   -  -   -  -
12793  20 120 220 320 120 20   -  - 320 20
12794  21 121 221 321   -  - 221 21   -  -
12795  22 122 222 322 122 22   -  -   -  -
12796  23 123 223 323   -  -   -  -   -  -
12797  24 124 224 324 124 24 224 24   -  -
12798  25 125 225 325   -  -   -  - 325 25
12799  26 126 226 326 126 26   -  -   -  -
12800  27 127 227 327   -  - 227 27   -  -
12801  28 128 228 328 128 28   -  -   -  -
12802  29 129 229 329   -  -   -  -   -  -
12803  30 130 230 330 130 30 230 30 330 30
12804  31 131 231 331   -  -   -  -   -  -
12805  32 132 232 332 132 32   -  -   -  -
12806  33 133 233 333   -  - 233 33   -  -
12807  34 134 234 334 134 34   -  -   -  -
12808  35 135 235 335   -  -   -  - 335 35
12809  36 136 236 336 136 36 236 36   -  -
12810  37 137 237 337   -  -   -  -   -  -
12811  38 138 238 338 138 38   -  -   -  -
12812  39 139 239 339   -  - 239 39   -  -
12813  40 140 240 340 140 40   -  - 340 40
12814  41 141 241 341   -  -   -  -   -  -
12815  42 142 242 342 142 42 242 42   -  -
12816  43 143 243 343   -  -   -  -   -  -
12817  44 144 244 344 144 44   -  -   -  -
12818  45 145 245 345   -  - 245 45 345 45
12819  46 146 246 346 146 46   -  -   -  -
12820  47 147 247 347   -  -   -  -   -  -
12821  48 148 248 348 148 48 248 48   -  -
12822  49 149 249 349   -  -   -  -   -  -
12823  50 150 250 350 150 50   -  - 350 50
12824  51 151 251 351   -  - 251 51   -  -
12825  52 152 252 352 152 52   -  -   -  -
12826  53 153 253 353   -  -   -  -   -  -
12827  54 154 254 354 154 54 254 54   -  -
12828  55 155 255 355   -  -   -  - 355 55
12829  56 156 256 356 156 56   -  -   -  -
12830  57 157 257 357   -  - 257 57   -  -
12831  58 158 258 358 158 58   -  -   -  -
12832  59 159 259 359   -  -   -  -   -  -
12833  60 160 260 360 160 60 260 60 360 60
12834  61 161 261 361   -  -   -  -   -  -
12835  62 162 262 362 162 62   -  -   -  -
12836  63 163 263 363   -  - 263 63   -  -
12837  64 164 264 364 164 64   -  -   -  -
12838  65 165 265 365   -  -   -  - 365 65
12839  66 166 266 366 166 66 266 66   -  -
12840  67 167 267 367   -  -   -  -   -  -
12841  68 168 268 368 168 68   -  -   -  -
12842  69 169 269 369   -  - 269 69   -  -
12843  70 170 270 370 170 70   -  - 370 70
12844  71 171 271 371   -  -   -  -   -  -
12845  72 172 272 372 172 72 272 72   -  -
12846  73 173 273 373   -  -   -  -   -  -
12847  74 174 274 374 174 74   -  -   -  -
12848  75 175 275 375   -  - 275 75 375 75
12849  76 176 276 376 176 76   -  -   -  -
12850  77 177 277 377   -  -   -  -   -  -
12851  78 178 278 378 178 78 278 78   -  -
12852  79 179 279 379   -  -   -  -   -  -
12853  80 180 280 380 180 80   -  - 380 80
12854  81 181 281 381   -  - 281 81   -  -
12855  82 182 282 382 182 82   -  -   -  -
12856  83 183 283 383   -  -   -  -   -  -
12857  84 184 284 384 184 84 284 84   -  -
12858  85 185 285 385   -  -   -  - 385 85
12859  86 186 286 386 186 86   -  -   -  -
12860  87 187 287 387   -  - 287 87   -  -
12861  88 188 288 388 188 88   -  -   -  -
12862  89 189 289 389   -  -   -  -   -  -
12863  90 190 290 390 190 90 290 90 390 90
12864  91 191 291 391   -  -   -  -   -  -
12865  92 192 292 392 192 92   -  -   -  -
12866  93 193 293 393   -  - 293 93   -  -
12867  94 194 294 394 194 94   -  -   -  -
12868  95 195 295 395   -  -   -  - 395 95
12869  96   - 296 396   -  -   -  -   -  -
12870  97 197   - 397   -  -   -  -   -  -
12871  98 198 298   -   -  -   -  -   -  -
12872  99   -   -   -   -  -   -  -   -  -
12873}
12874do_execsql_test joinD-443 {
12875  SELECT t1.*, t2.*, t3.*, t4.*
12876  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12877  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12878  FULL JOIN t4 ON t1.d=t4.d
12879  WHERE t2.x>0 AND t4.z>0
12880  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12881} {
12882  10 110 210 310 110 10   -  - 310 10
12883  20 120 220 320 120 20   -  - 320 20
12884  30 130 230 330 130 30 230 30 330 30
12885  40 140 240 340 140 40   -  - 340 40
12886  50 150 250 350 150 50   -  - 350 50
12887  60 160 260 360 160 60 260 60 360 60
12888  70 170 270 370 170 70   -  - 370 70
12889  80 180 280 380 180 80   -  - 380 80
12890  90 190 290 390 190 90 290 90 390 90
12891}
12892do_execsql_test joinD-444 {
12893  SELECT t1.*, t2.*, t3.*, t4.*
12894  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12895  LEFT JOIN t3 ON t1.c=t3.c
12896  FULL JOIN t4 ON t1.d=t4.d
12897  WHERE t4.z>0 AND t3.y>0
12898  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12899} {
12900  15 115 215 315   -  - 215 15 315 15
12901  30 130 230 330 130 30 230 30 330 30
12902  45 145 245 345   -  - 245 45 345 45
12903  60 160 260 360 160 60 260 60 360 60
12904  75 175 275 375   -  - 275 75 375 75
12905  90 190 290 390 190 90 290 90 390 90
12906}
12907do_execsql_test joinD-445 {
12908  SELECT t1.*, t2.*, t3.*, t4.*
12909  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12910  LEFT JOIN t3 ON t1.c=t3.c
12911  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12912  WHERE t2.x>0 AND t3.y>0
12913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12914} {
12915   6 106 206 306 106  6 206  6   -  -
12916  12 112 212 312 112 12 212 12   -  -
12917  18 118 218 318 118 18 218 18   -  -
12918  24 124 224 324 124 24 224 24   -  -
12919  30 130 230 330 130 30 230 30 330 30
12920  36 136 236 336 136 36 236 36   -  -
12921  42 142 242 342 142 42 242 42   -  -
12922  48 148 248 348 148 48 248 48   -  -
12923  54 154 254 354 154 54 254 54   -  -
12924  60 160 260 360 160 60 260 60 360 60
12925  66 166 266 366 166 66 266 66   -  -
12926  72 172 272 372 172 72 272 72   -  -
12927  78 178 278 378 178 78 278 78   -  -
12928  84 184 284 384 184 84 284 84   -  -
12929  90 190 290 390 190 90 290 90 390 90
12930}
12931do_execsql_test joinD-446 {
12932  SELECT t1.*, t2.*, t3.*, t4.*
12933  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12934  LEFT JOIN t3 ON t1.c=t3.c
12935  FULL JOIN t4 ON t1.d=t4.d
12936  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
12937  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12938} {
12939  30 130 230 330 130 30 230 30 330 30
12940  60 160 260 360 160 60 260 60 360 60
12941  90 190 290 390 190 90 290 90 390 90
12942}
12943do_execsql_test joinD-447 {
12944  SELECT t1.*, t2.*, t3.*, t4.*
12945  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
12946  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12947  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
12948  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12949} {
12950   0 100 200 300   -  -   -  -   -  -
12951   1 101 201 301   -  -   -  -   -  -
12952   2 102 202 302 102  2   -  -   -  -
12953   3 103 203 303   -  - 203  3   -  -
12954   4 104 204 304 104  4   -  -   -  -
12955   5 105 205 305   -  -   -  - 305  5
12956   6 106 206 306 106  6 206  6   -  -
12957   7 107 207 307   -  -   -  -   -  -
12958   8 108 208 308 108  8   -  -   -  -
12959   9 109 209 309   -  - 209  9   -  -
12960  10 110 210 310 110 10   -  - 310 10
12961  11 111 211 311   -  -   -  -   -  -
12962  12 112 212 312 112 12 212 12   -  -
12963  13 113 213 313   -  -   -  -   -  -
12964  14 114 214 314 114 14   -  -   -  -
12965  15 115 215 315   -  - 215 15 315 15
12966  16 116 216 316 116 16   -  -   -  -
12967  17 117 217 317   -  -   -  -   -  -
12968  18 118 218 318 118 18 218 18   -  -
12969  19 119 219 319   -  -   -  -   -  -
12970  20 120 220 320 120 20   -  - 320 20
12971  21 121 221 321   -  - 221 21   -  -
12972  22 122 222 322 122 22   -  -   -  -
12973  23 123 223 323   -  -   -  -   -  -
12974  24 124 224 324 124 24 224 24   -  -
12975  25 125 225 325   -  -   -  - 325 25
12976  26 126 226 326 126 26   -  -   -  -
12977  27 127 227 327   -  - 227 27   -  -
12978  28 128 228 328 128 28   -  -   -  -
12979  29 129 229 329   -  -   -  -   -  -
12980  30 130 230 330 130 30 230 30 330 30
12981  31 131 231 331   -  -   -  -   -  -
12982  32 132 232 332 132 32   -  -   -  -
12983  33 133 233 333   -  - 233 33   -  -
12984  34 134 234 334 134 34   -  -   -  -
12985  35 135 235 335   -  -   -  - 335 35
12986  36 136 236 336 136 36 236 36   -  -
12987  37 137 237 337   -  -   -  -   -  -
12988  38 138 238 338 138 38   -  -   -  -
12989  39 139 239 339   -  - 239 39   -  -
12990  40 140 240 340 140 40   -  - 340 40
12991  41 141 241 341   -  -   -  -   -  -
12992  42 142 242 342 142 42 242 42   -  -
12993  43 143 243 343   -  -   -  -   -  -
12994  44 144 244 344 144 44   -  -   -  -
12995  45 145 245 345   -  - 245 45 345 45
12996  46 146 246 346 146 46   -  -   -  -
12997  47 147 247 347   -  -   -  -   -  -
12998  48 148 248 348 148 48 248 48   -  -
12999  49 149 249 349   -  -   -  -   -  -
13000  50 150 250 350 150 50   -  - 350 50
13001  51 151 251 351   -  - 251 51   -  -
13002  52 152 252 352 152 52   -  -   -  -
13003  53 153 253 353   -  -   -  -   -  -
13004  54 154 254 354 154 54 254 54   -  -
13005  55 155 255 355   -  -   -  - 355 55
13006  56 156 256 356 156 56   -  -   -  -
13007  57 157 257 357   -  - 257 57   -  -
13008  58 158 258 358 158 58   -  -   -  -
13009  59 159 259 359   -  -   -  -   -  -
13010  60 160 260 360 160 60 260 60 360 60
13011  61 161 261 361   -  -   -  -   -  -
13012  62 162 262 362 162 62   -  -   -  -
13013  63 163 263 363   -  - 263 63   -  -
13014  64 164 264 364 164 64   -  -   -  -
13015  65 165 265 365   -  -   -  - 365 65
13016  66 166 266 366 166 66 266 66   -  -
13017  67 167 267 367   -  -   -  -   -  -
13018  68 168 268 368 168 68   -  -   -  -
13019  69 169 269 369   -  - 269 69   -  -
13020  70 170 270 370 170 70   -  - 370 70
13021  71 171 271 371   -  -   -  -   -  -
13022  72 172 272 372 172 72 272 72   -  -
13023  73 173 273 373   -  -   -  -   -  -
13024  74 174 274 374 174 74   -  -   -  -
13025  75 175 275 375   -  - 275 75 375 75
13026  76 176 276 376 176 76   -  -   -  -
13027  77 177 277 377   -  -   -  -   -  -
13028  78 178 278 378 178 78 278 78   -  -
13029  79 179 279 379   -  -   -  -   -  -
13030  80 180 280 380 180 80   -  - 380 80
13031  81 181 281 381   -  - 281 81   -  -
13032  82 182 282 382 182 82   -  -   -  -
13033  83 183 283 383   -  -   -  -   -  -
13034  84 184 284 384 184 84 284 84   -  -
13035  85 185 285 385   -  -   -  - 385 85
13036  86 186 286 386 186 86   -  -   -  -
13037  87 187 287 387   -  - 287 87   -  -
13038  88 188 288 388 188 88   -  -   -  -
13039  89 189 289 389   -  -   -  -   -  -
13040  90 190 290 390 190 90 290 90 390 90
13041  91 191 291 391   -  -   -  -   -  -
13042  92 192 292 392 192 92   -  -   -  -
13043  93 193 293 393   -  - 293 93   -  -
13044  94 194 294 394 194 94   -  -   -  -
13045  95 195 295 395   -  -   -  - 395 95
13046  96   - 296 396   -  -   -  -   -  -
13047  97 197   - 397   -  -   -  -   -  -
13048  98 198 298   -   -  -   -  -   -  -
13049  99   -   -   -   -  -   -  -   -  -
13050   -   -   -   -   -  -   -  - 300  0
13051}
13052do_execsql_test joinD-448 {
13053  SELECT t1.*, t2.*, t3.*, t4.*
13054  FROM t1 LEFT JOIN t2 ON t2.x>0
13055  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13056  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
13057  WHERE t1.b IS NOT DISTINCT FROM t2.b
13058  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13059} {
13060   2 102 202 302 102  2   -  -   -  -
13061   4 104 204 304 104  4   -  -   -  -
13062   6 106 206 306 106  6 206  6   -  -
13063   8 108 208 308 108  8   -  -   -  -
13064  10 110 210 310 110 10   -  - 310 10
13065  12 112 212 312 112 12 212 12   -  -
13066  14 114 214 314 114 14   -  -   -  -
13067  16 116 216 316 116 16   -  -   -  -
13068  18 118 218 318 118 18 218 18   -  -
13069  20 120 220 320 120 20   -  - 320 20
13070  22 122 222 322 122 22   -  -   -  -
13071  24 124 224 324 124 24 224 24   -  -
13072  26 126 226 326 126 26   -  -   -  -
13073  28 128 228 328 128 28   -  -   -  -
13074  30 130 230 330 130 30 230 30 330 30
13075  32 132 232 332 132 32   -  -   -  -
13076  34 134 234 334 134 34   -  -   -  -
13077  36 136 236 336 136 36 236 36   -  -
13078  38 138 238 338 138 38   -  -   -  -
13079  40 140 240 340 140 40   -  - 340 40
13080  42 142 242 342 142 42 242 42   -  -
13081  44 144 244 344 144 44   -  -   -  -
13082  46 146 246 346 146 46   -  -   -  -
13083  48 148 248 348 148 48 248 48   -  -
13084  50 150 250 350 150 50   -  - 350 50
13085  52 152 252 352 152 52   -  -   -  -
13086  54 154 254 354 154 54 254 54   -  -
13087  56 156 256 356 156 56   -  -   -  -
13088  58 158 258 358 158 58   -  -   -  -
13089  60 160 260 360 160 60 260 60 360 60
13090  62 162 262 362 162 62   -  -   -  -
13091  64 164 264 364 164 64   -  -   -  -
13092  66 166 266 366 166 66 266 66   -  -
13093  68 168 268 368 168 68   -  -   -  -
13094  70 170 270 370 170 70   -  - 370 70
13095  72 172 272 372 172 72 272 72   -  -
13096  74 174 274 374 174 74   -  -   -  -
13097  76 176 276 376 176 76   -  -   -  -
13098  78 178 278 378 178 78 278 78   -  -
13099  80 180 280 380 180 80   -  - 380 80
13100  82 182 282 382 182 82   -  -   -  -
13101  84 184 284 384 184 84 284 84   -  -
13102  86 186 286 386 186 86   -  -   -  -
13103  88 188 288 388 188 88   -  -   -  -
13104  90 190 290 390 190 90 290 90 390 90
13105  92 192 292 392 192 92   -  -   -  -
13106  94 194 294 394 194 94   -  -   -  -
13107   -   -   -   -   -  -   -  - 300  0
13108}
13109do_execsql_test joinD-449 {
13110  SELECT t1.*, t2.*, t3.*, t4.*
13111  FROM t1 LEFT JOIN t2 ON t2.x>0
13112  LEFT JOIN t3 ON t3.y>0
13113  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
13114  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
13115  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13116} {
13117   6 106 206 306 106  6 206  6   -  -
13118  12 112 212 312 112 12 212 12   -  -
13119  18 118 218 318 118 18 218 18   -  -
13120  24 124 224 324 124 24 224 24   -  -
13121  30 130 230 330 130 30 230 30 330 30
13122  36 136 236 336 136 36 236 36   -  -
13123  42 142 242 342 142 42 242 42   -  -
13124  48 148 248 348 148 48 248 48   -  -
13125  54 154 254 354 154 54 254 54   -  -
13126  60 160 260 360 160 60 260 60 360 60
13127  66 166 266 366 166 66 266 66   -  -
13128  72 172 272 372 172 72 272 72   -  -
13129  78 178 278 378 178 78 278 78   -  -
13130  84 184 284 384 184 84 284 84   -  -
13131  90 190 290 390 190 90 290 90 390 90
13132   -   -   -   -   -  -   -  - 300  0
13133}
13134do_execsql_test joinD-450 {
13135  SELECT t1.*, t2.*, t3.*, t4.*
13136  FROM t1 LEFT JOIN t2 ON t2.x>0
13137  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13138  FULL JOIN t4 ON t4.z>0
13139  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
13140  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13141} {
13142  10 110 210 310 110 10   -  - 310 10
13143  20 120 220 320 120 20   -  - 320 20
13144  30 130 230 330 130 30 230 30 330 30
13145  40 140 240 340 140 40   -  - 340 40
13146  50 150 250 350 150 50   -  - 350 50
13147  60 160 260 360 160 60 260 60 360 60
13148  70 170 270 370 170 70   -  - 370 70
13149  80 180 280 380 180 80   -  - 380 80
13150  90 190 290 390 190 90 290 90 390 90
13151}
13152do_execsql_test joinD-451 {
13153  SELECT t1.*, t2.*, t3.*, t4.*
13154  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
13155  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
13156  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
13157  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13158} {
13159   0 100 200 300   -  -   -  -   -  -
13160   1 101 201 301   -  -   -  -   -  -
13161   2 102 202 302 102  2   -  -   -  -
13162   3 103 203 303   -  - 203  3   -  -
13163   4 104 204 304 104  4   -  -   -  -
13164   5 105 205 305   -  -   -  - 305  5
13165   6 106 206 306 106  6 206  6   -  -
13166   7 107 207 307   -  -   -  -   -  -
13167   8 108 208 308 108  8   -  -   -  -
13168   9 109 209 309   -  - 209  9   -  -
13169  10 110 210 310 110 10   -  - 310 10
13170  11 111 211 311   -  -   -  -   -  -
13171  12 112 212 312 112 12 212 12   -  -
13172  13 113 213 313   -  -   -  -   -  -
13173  14 114 214 314 114 14   -  -   -  -
13174  15 115 215 315   -  - 215 15 315 15
13175  16 116 216 316 116 16   -  -   -  -
13176  17 117 217 317   -  -   -  -   -  -
13177  18 118 218 318 118 18 218 18   -  -
13178  19 119 219 319   -  -   -  -   -  -
13179  20 120 220 320 120 20   -  - 320 20
13180  21 121 221 321   -  - 221 21   -  -
13181  22 122 222 322 122 22   -  -   -  -
13182  23 123 223 323   -  -   -  -   -  -
13183  24 124 224 324 124 24 224 24   -  -
13184  25 125 225 325   -  -   -  - 325 25
13185  26 126 226 326 126 26   -  -   -  -
13186  27 127 227 327   -  - 227 27   -  -
13187  28 128 228 328 128 28   -  -   -  -
13188  29 129 229 329   -  -   -  -   -  -
13189  30 130 230 330 130 30 230 30 330 30
13190  31 131 231 331   -  -   -  -   -  -
13191  32 132 232 332 132 32   -  -   -  -
13192  33 133 233 333   -  - 233 33   -  -
13193  34 134 234 334 134 34   -  -   -  -
13194  35 135 235 335   -  -   -  - 335 35
13195  36 136 236 336 136 36 236 36   -  -
13196  37 137 237 337   -  -   -  -   -  -
13197  38 138 238 338 138 38   -  -   -  -
13198  39 139 239 339   -  - 239 39   -  -
13199  40 140 240 340 140 40   -  - 340 40
13200  41 141 241 341   -  -   -  -   -  -
13201  42 142 242 342 142 42 242 42   -  -
13202  43 143 243 343   -  -   -  -   -  -
13203  44 144 244 344 144 44   -  -   -  -
13204  45 145 245 345   -  - 245 45 345 45
13205  46 146 246 346 146 46   -  -   -  -
13206  47 147 247 347   -  -   -  -   -  -
13207  48 148 248 348 148 48 248 48   -  -
13208  49 149 249 349   -  -   -  -   -  -
13209  50 150 250 350 150 50   -  - 350 50
13210  51 151 251 351   -  - 251 51   -  -
13211  52 152 252 352 152 52   -  -   -  -
13212  53 153 253 353   -  -   -  -   -  -
13213  54 154 254 354 154 54 254 54   -  -
13214  55 155 255 355   -  -   -  - 355 55
13215  56 156 256 356 156 56   -  -   -  -
13216  57 157 257 357   -  - 257 57   -  -
13217  58 158 258 358 158 58   -  -   -  -
13218  59 159 259 359   -  -   -  -   -  -
13219  60 160 260 360 160 60 260 60 360 60
13220  61 161 261 361   -  -   -  -   -  -
13221  62 162 262 362 162 62   -  -   -  -
13222  63 163 263 363   -  - 263 63   -  -
13223  64 164 264 364 164 64   -  -   -  -
13224  65 165 265 365   -  -   -  - 365 65
13225  66 166 266 366 166 66 266 66   -  -
13226  67 167 267 367   -  -   -  -   -  -
13227  68 168 268 368 168 68   -  -   -  -
13228  69 169 269 369   -  - 269 69   -  -
13229  70 170 270 370 170 70   -  - 370 70
13230  71 171 271 371   -  -   -  -   -  -
13231  72 172 272 372 172 72 272 72   -  -
13232  73 173 273 373   -  -   -  -   -  -
13233  74 174 274 374 174 74   -  -   -  -
13234  75 175 275 375   -  - 275 75 375 75
13235  76 176 276 376 176 76   -  -   -  -
13236  77 177 277 377   -  -   -  -   -  -
13237  78 178 278 378 178 78 278 78   -  -
13238  79 179 279 379   -  -   -  -   -  -
13239  80 180 280 380 180 80   -  - 380 80
13240  81 181 281 381   -  - 281 81   -  -
13241  82 182 282 382 182 82   -  -   -  -
13242  83 183 283 383   -  -   -  -   -  -
13243  84 184 284 384 184 84 284 84   -  -
13244  85 185 285 385   -  -   -  - 385 85
13245  86 186 286 386 186 86   -  -   -  -
13246  87 187 287 387   -  - 287 87   -  -
13247  88 188 288 388 188 88   -  -   -  -
13248  89 189 289 389   -  -   -  -   -  -
13249  90 190 290 390 190 90 290 90 390 90
13250  91 191 291 391   -  -   -  -   -  -
13251  92 192 292 392 192 92   -  -   -  -
13252  93 193 293 393   -  - 293 93   -  -
13253  94 194 294 394 194 94   -  -   -  -
13254  95 195 295 395   -  -   -  - 395 95
13255  96   - 296 396   -  -   -  -   -  -
13256  97 197   - 397   -  -   -  -   -  -
13257  98 198 298   -   -  -   -  -   -  -
13258  99   -   -   -   -  -   -  -   -  -
13259   -   -   -   -   -  -   -  - 300  0
13260}
13261do_execsql_test joinD-452 {
13262  SELECT t1.*, t2.*, t3.*, t4.*
13263  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13264  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
13265  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
13266  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13267} {
13268   0 100 200 300   -  -   -  -   -  -
13269   1 101 201 301   -  -   -  -   -  -
13270   2 102 202 302 102  2   -  -   -  -
13271   3 103 203 303   -  - 203  3   -  -
13272   4 104 204 304 104  4   -  -   -  -
13273   5 105 205 305   -  -   -  - 305  5
13274   6 106 206 306 106  6 206  6   -  -
13275   7 107 207 307   -  -   -  -   -  -
13276   8 108 208 308 108  8   -  -   -  -
13277   9 109 209 309   -  - 209  9   -  -
13278  10 110 210 310 110 10   -  - 310 10
13279  11 111 211 311   -  -   -  -   -  -
13280  12 112 212 312 112 12 212 12   -  -
13281  13 113 213 313   -  -   -  -   -  -
13282  14 114 214 314 114 14   -  -   -  -
13283  15 115 215 315   -  - 215 15 315 15
13284  16 116 216 316 116 16   -  -   -  -
13285  17 117 217 317   -  -   -  -   -  -
13286  18 118 218 318 118 18 218 18   -  -
13287  19 119 219 319   -  -   -  -   -  -
13288  20 120 220 320 120 20   -  - 320 20
13289  21 121 221 321   -  - 221 21   -  -
13290  22 122 222 322 122 22   -  -   -  -
13291  23 123 223 323   -  -   -  -   -  -
13292  24 124 224 324 124 24 224 24   -  -
13293  25 125 225 325   -  -   -  - 325 25
13294  26 126 226 326 126 26   -  -   -  -
13295  27 127 227 327   -  - 227 27   -  -
13296  28 128 228 328 128 28   -  -   -  -
13297  29 129 229 329   -  -   -  -   -  -
13298  30 130 230 330 130 30 230 30 330 30
13299  31 131 231 331   -  -   -  -   -  -
13300  32 132 232 332 132 32   -  -   -  -
13301  33 133 233 333   -  - 233 33   -  -
13302  34 134 234 334 134 34   -  -   -  -
13303  35 135 235 335   -  -   -  - 335 35
13304  36 136 236 336 136 36 236 36   -  -
13305  37 137 237 337   -  -   -  -   -  -
13306  38 138 238 338 138 38   -  -   -  -
13307  39 139 239 339   -  - 239 39   -  -
13308  40 140 240 340 140 40   -  - 340 40
13309  41 141 241 341   -  -   -  -   -  -
13310  42 142 242 342 142 42 242 42   -  -
13311  43 143 243 343   -  -   -  -   -  -
13312  44 144 244 344 144 44   -  -   -  -
13313  45 145 245 345   -  - 245 45 345 45
13314  46 146 246 346 146 46   -  -   -  -
13315  47 147 247 347   -  -   -  -   -  -
13316  48 148 248 348 148 48 248 48   -  -
13317  49 149 249 349   -  -   -  -   -  -
13318  50 150 250 350 150 50   -  - 350 50
13319  51 151 251 351   -  - 251 51   -  -
13320  52 152 252 352 152 52   -  -   -  -
13321  53 153 253 353   -  -   -  -   -  -
13322  54 154 254 354 154 54 254 54   -  -
13323  55 155 255 355   -  -   -  - 355 55
13324  56 156 256 356 156 56   -  -   -  -
13325  57 157 257 357   -  - 257 57   -  -
13326  58 158 258 358 158 58   -  -   -  -
13327  59 159 259 359   -  -   -  -   -  -
13328  60 160 260 360 160 60 260 60 360 60
13329  61 161 261 361   -  -   -  -   -  -
13330  62 162 262 362 162 62   -  -   -  -
13331  63 163 263 363   -  - 263 63   -  -
13332  64 164 264 364 164 64   -  -   -  -
13333  65 165 265 365   -  -   -  - 365 65
13334  66 166 266 366 166 66 266 66   -  -
13335  67 167 267 367   -  -   -  -   -  -
13336  68 168 268 368 168 68   -  -   -  -
13337  69 169 269 369   -  - 269 69   -  -
13338  70 170 270 370 170 70   -  - 370 70
13339  71 171 271 371   -  -   -  -   -  -
13340  72 172 272 372 172 72 272 72   -  -
13341  73 173 273 373   -  -   -  -   -  -
13342  74 174 274 374 174 74   -  -   -  -
13343  75 175 275 375   -  - 275 75 375 75
13344  76 176 276 376 176 76   -  -   -  -
13345  77 177 277 377   -  -   -  -   -  -
13346  78 178 278 378 178 78 278 78   -  -
13347  79 179 279 379   -  -   -  -   -  -
13348  80 180 280 380 180 80   -  - 380 80
13349  81 181 281 381   -  - 281 81   -  -
13350  82 182 282 382 182 82   -  -   -  -
13351  83 183 283 383   -  -   -  -   -  -
13352  84 184 284 384 184 84 284 84   -  -
13353  85 185 285 385   -  -   -  - 385 85
13354  86 186 286 386 186 86   -  -   -  -
13355  87 187 287 387   -  - 287 87   -  -
13356  88 188 288 388 188 88   -  -   -  -
13357  89 189 289 389   -  -   -  -   -  -
13358  90 190 290 390 190 90 290 90 390 90
13359  91 191 291 391   -  -   -  -   -  -
13360  92 192 292 392 192 92   -  -   -  -
13361  93 193 293 393   -  - 293 93   -  -
13362  94 194 294 394 194 94   -  -   -  -
13363  95 195 295 395   -  -   -  - 395 95
13364  96   - 296 396   -  -   -  -   -  -
13365  97 197   - 397   -  -   -  -   -  -
13366  98 198 298   -   -  -   -  -   -  -
13367  99   -   -   -   -  -   -  -   -  -
13368   -   -   -   -   -  -   -  - 300  0
13369}
13370do_execsql_test joinD-453 {
13371  SELECT t1.*, t2.*, t3.*, t4.*
13372  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13373  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13374  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13375  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13376} {
13377  15 115 215 315   -  - 215 15 315 15
13378  30 130 230 330 130 30 230 30 330 30
13379  45 145 245 345   -  - 245 45 345 45
13380  60 160 260 360 160 60 260 60 360 60
13381  75 175 275 375   -  - 275 75 375 75
13382  90 190 290 390 190 90 290 90 390 90
13383}
13384do_execsql_test joinD-454 {
13385  SELECT t1.*, t2.*, t3.*, t4.*
13386  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13387  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13388  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13389  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13390} {
13391  15 115 215 315   -  - 215 15 315 15
13392  30 130 230 330 130 30 230 30 330 30
13393  45 145 245 345   -  - 245 45 345 45
13394  60 160 260 360 160 60 260 60 360 60
13395  75 175 275 375   -  - 275 75 375 75
13396  90 190 290 390 190 90 290 90 390 90
13397}
13398do_execsql_test joinD-455 {
13399  SELECT t1.*, t2.*, t3.*, t4.*
13400  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13401  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13402  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13403  WHERE t2.x>0
13404  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13405} {
13406  30 130 230 330 130 30 230 30 330 30
13407  60 160 260 360 160 60 260 60 360 60
13408  90 190 290 390 190 90 290 90 390 90
13409}
13410do_execsql_test joinD-456 {
13411  SELECT t1.*, t2.*, t3.*, t4.*
13412  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13413  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13414  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13415  WHERE (t2.x>0 OR t2.x IS NULL)
13416  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13417} {
13418  15 115 215 315   -  - 215 15 315 15
13419  30 130 230 330 130 30 230 30 330 30
13420  45 145 245 345   -  - 245 45 345 45
13421  60 160 260 360 160 60 260 60 360 60
13422  75 175 275 375   -  - 275 75 375 75
13423  90 190 290 390 190 90 290 90 390 90
13424}
13425do_execsql_test joinD-457 {
13426  SELECT t1.*, t2.*, t3.*, t4.*
13427  FROM t1 LEFT JOIN t2 ON true
13428  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13429  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13430  WHERE t1.b=t2.b AND t2.x>0
13431  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13432} {
13433  30 130 230 330 130 30 230 30 330 30
13434  60 160 260 360 160 60 260 60 360 60
13435  90 190 290 390 190 90 290 90 390 90
13436}
13437do_execsql_test joinD-458 {
13438  SELECT t1.*, t2.*, t3.*, t4.*
13439  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13440  RIGHT JOIN t3 ON t1.c=t3.c
13441  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13442  WHERE t3.y>0
13443  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13444} {
13445  15 115 215 315   -  - 215 15 315 15
13446  30 130 230 330 130 30 230 30 330 30
13447  45 145 245 345   -  - 245 45 345 45
13448  60 160 260 360 160 60 260 60 360 60
13449  75 175 275 375   -  - 275 75 375 75
13450  90 190 290 390 190 90 290 90 390 90
13451}
13452do_execsql_test joinD-459 {
13453  SELECT t1.*, t2.*, t3.*, t4.*
13454  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13455  RIGHT JOIN t3 ON t1.c=t3.c
13456  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13457  WHERE t3.y>0 OR t3.y IS NULL
13458  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13459} {
13460  15 115 215 315   -  - 215 15 315 15
13461  30 130 230 330 130 30 230 30 330 30
13462  45 145 245 345   -  - 245 45 345 45
13463  60 160 260 360 160 60 260 60 360 60
13464  75 175 275 375   -  - 275 75 375 75
13465  90 190 290 390 190 90 290 90 390 90
13466}
13467do_execsql_test joinD-460 {
13468  SELECT t1.*, t2.*, t3.*, t4.*
13469  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13470  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13471  INNER JOIN t4 ON t1.d=t4.d
13472  WHERE t4.z>0
13473  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13474} {
13475  15 115 215 315   -  - 215 15 315 15
13476  30 130 230 330 130 30 230 30 330 30
13477  45 145 245 345   -  - 245 45 345 45
13478  60 160 260 360 160 60 260 60 360 60
13479  75 175 275 375   -  - 275 75 375 75
13480  90 190 290 390 190 90 290 90 390 90
13481}
13482do_execsql_test joinD-461 {
13483  SELECT t1.*, t2.*, t3.*, t4.*
13484  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13485  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13486  INNER JOIN t4 ON t1.d=t4.d
13487  WHERE t4.z IS NULL OR t4.z>0
13488  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13489} {
13490  15 115 215 315   -  - 215 15 315 15
13491  30 130 230 330 130 30 230 30 330 30
13492  45 145 245 345   -  - 245 45 345 45
13493  60 160 260 360 160 60 260 60 360 60
13494  75 175 275 375   -  - 275 75 375 75
13495  90 190 290 390 190 90 290 90 390 90
13496}
13497do_execsql_test joinD-462 {
13498  SELECT t1.*, t2.*, t3.*, t4.*
13499  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13500  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13501  INNER JOIN t4 ON t1.d=t4.d
13502  WHERE t2.x>0 AND t4.z>0
13503  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13504} {
13505  30 130 230 330 130 30 230 30 330 30
13506  60 160 260 360 160 60 260 60 360 60
13507  90 190 290 390 190 90 290 90 390 90
13508}
13509do_execsql_test joinD-463 {
13510  SELECT t1.*, t2.*, t3.*, t4.*
13511  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13512  RIGHT JOIN t3 ON t1.c=t3.c
13513  INNER JOIN t4 ON t1.d=t4.d
13514  WHERE t4.z>0 AND t3.y>0
13515  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13516} {
13517  15 115 215 315   -  - 215 15 315 15
13518  30 130 230 330 130 30 230 30 330 30
13519  45 145 245 345   -  - 245 45 345 45
13520  60 160 260 360 160 60 260 60 360 60
13521  75 175 275 375   -  - 275 75 375 75
13522  90 190 290 390 190 90 290 90 390 90
13523}
13524do_execsql_test joinD-464 {
13525  SELECT t1.*, t2.*, t3.*, t4.*
13526  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13527  RIGHT JOIN t3 ON t1.c=t3.c
13528  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13529  WHERE t2.x>0 AND t3.y>0
13530  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13531} {
13532  30 130 230 330 130 30 230 30 330 30
13533  60 160 260 360 160 60 260 60 360 60
13534  90 190 290 390 190 90 290 90 390 90
13535}
13536do_execsql_test joinD-465 {
13537  SELECT t1.*, t2.*, t3.*, t4.*
13538  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13539  RIGHT JOIN t3 ON t1.c=t3.c
13540  INNER JOIN t4 ON t1.d=t4.d
13541  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
13542  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13543} {
13544  30 130 230 330 130 30 230 30 330 30
13545  60 160 260 360 160 60 260 60 360 60
13546  90 190 290 390 190 90 290 90 390 90
13547}
13548do_execsql_test joinD-466 {
13549  SELECT t1.*, t2.*, t3.*, t4.*
13550  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13551  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13552  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13553  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13554} {
13555  15 115 215 315   -  - 215 15 315 15
13556  30 130 230 330 130 30 230 30 330 30
13557  45 145 245 345   -  - 245 45 345 45
13558  60 160 260 360 160 60 260 60 360 60
13559  75 175 275 375   -  - 275 75 375 75
13560  90 190 290 390 190 90 290 90 390 90
13561}
13562do_execsql_test joinD-467 {
13563  SELECT t1.*, t2.*, t3.*, t4.*
13564  FROM t1 LEFT JOIN t2 ON t2.x>0
13565  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13566  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13567  WHERE t1.b IS NOT DISTINCT FROM t2.b
13568  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13569} {
13570  30 130 230 330 130 30 230 30 330 30
13571  60 160 260 360 160 60 260 60 360 60
13572  90 190 290 390 190 90 290 90 390 90
13573}
13574do_execsql_test joinD-468 {
13575  SELECT t1.*, t2.*, t3.*, t4.*
13576  FROM t1 LEFT JOIN t2 ON t2.x>0
13577  RIGHT JOIN t3 ON t3.y>0
13578  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13579  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
13580  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13581} {
13582  30 130 230 330 130 30 230 30 330 30
13583  60 160 260 360 160 60 260 60 360 60
13584  90 190 290 390 190 90 290 90 390 90
13585}
13586do_execsql_test joinD-469 {
13587  SELECT t1.*, t2.*, t3.*, t4.*
13588  FROM t1 LEFT JOIN t2 ON t2.x>0
13589  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13590  INNER JOIN t4 ON t4.z>0
13591  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
13592  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13593} {
13594  30 130 230 330 130 30 230 30 330 30
13595  60 160 260 360 160 60 260 60 360 60
13596  90 190 290 390 190 90 290 90 390 90
13597}
13598do_execsql_test joinD-470 {
13599  SELECT t1.*, t2.*, t3.*, t4.*
13600  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
13601  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13602  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13603  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13604} {
13605  15 115 215 315   -  - 215 15 315 15
13606  30 130 230 330 130 30 230 30 330 30
13607  45 145 245 345   -  - 245 45 345 45
13608  60 160 260 360 160 60 260 60 360 60
13609  75 175 275 375   -  - 275 75 375 75
13610  90 190 290 390 190 90 290 90 390 90
13611}
13612do_execsql_test joinD-471 {
13613  SELECT t1.*, t2.*, t3.*, t4.*
13614  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13615  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
13616  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13617  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13618} {
13619  15 115 215 315   -  - 215 15 315 15
13620  30 130 230 330 130 30 230 30 330 30
13621  45 145 245 345   -  - 245 45 345 45
13622  60 160 260 360 160 60 260 60 360 60
13623  75 175 275 375   -  - 275 75 375 75
13624  90 190 290 390 190 90 290 90 390 90
13625}
13626do_execsql_test joinD-472 {
13627  SELECT t1.*, t2.*, t3.*, t4.*
13628  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13629  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13630  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13631  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13632} {
13633   3 103 203 303   -  - 203  3   -  -
13634   6 106 206 306 106  6 206  6   -  -
13635   9 109 209 309   -  - 209  9   -  -
13636  12 112 212 312 112 12 212 12   -  -
13637  15 115 215 315   -  - 215 15 315 15
13638  18 118 218 318 118 18 218 18   -  -
13639  21 121 221 321   -  - 221 21   -  -
13640  24 124 224 324 124 24 224 24   -  -
13641  27 127 227 327   -  - 227 27   -  -
13642  30 130 230 330 130 30 230 30 330 30
13643  33 133 233 333   -  - 233 33   -  -
13644  36 136 236 336 136 36 236 36   -  -
13645  39 139 239 339   -  - 239 39   -  -
13646  42 142 242 342 142 42 242 42   -  -
13647  45 145 245 345   -  - 245 45 345 45
13648  48 148 248 348 148 48 248 48   -  -
13649  51 151 251 351   -  - 251 51   -  -
13650  54 154 254 354 154 54 254 54   -  -
13651  57 157 257 357   -  - 257 57   -  -
13652  60 160 260 360 160 60 260 60 360 60
13653  63 163 263 363   -  - 263 63   -  -
13654  66 166 266 366 166 66 266 66   -  -
13655  69 169 269 369   -  - 269 69   -  -
13656  72 172 272 372 172 72 272 72   -  -
13657  75 175 275 375   -  - 275 75 375 75
13658  78 178 278 378 178 78 278 78   -  -
13659  81 181 281 381   -  - 281 81   -  -
13660  84 184 284 384 184 84 284 84   -  -
13661  87 187 287 387   -  - 287 87   -  -
13662  90 190 290 390 190 90 290 90 390 90
13663  93 193 293 393   -  - 293 93   -  -
13664   -   -   -   -   -  - 200  0   -  -
13665}
13666do_execsql_test joinD-473 {
13667  SELECT t1.*, t2.*, t3.*, t4.*
13668  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13669  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13670  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13671  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13672} {
13673   3 103 203 303   -  - 203  3   -  -
13674   6 106 206 306 106  6 206  6   -  -
13675   9 109 209 309   -  - 209  9   -  -
13676  12 112 212 312 112 12 212 12   -  -
13677  15 115 215 315   -  - 215 15 315 15
13678  18 118 218 318 118 18 218 18   -  -
13679  21 121 221 321   -  - 221 21   -  -
13680  24 124 224 324 124 24 224 24   -  -
13681  27 127 227 327   -  - 227 27   -  -
13682  30 130 230 330 130 30 230 30 330 30
13683  33 133 233 333   -  - 233 33   -  -
13684  36 136 236 336 136 36 236 36   -  -
13685  39 139 239 339   -  - 239 39   -  -
13686  42 142 242 342 142 42 242 42   -  -
13687  45 145 245 345   -  - 245 45 345 45
13688  48 148 248 348 148 48 248 48   -  -
13689  51 151 251 351   -  - 251 51   -  -
13690  54 154 254 354 154 54 254 54   -  -
13691  57 157 257 357   -  - 257 57   -  -
13692  60 160 260 360 160 60 260 60 360 60
13693  63 163 263 363   -  - 263 63   -  -
13694  66 166 266 366 166 66 266 66   -  -
13695  69 169 269 369   -  - 269 69   -  -
13696  72 172 272 372 172 72 272 72   -  -
13697  75 175 275 375   -  - 275 75 375 75
13698  78 178 278 378 178 78 278 78   -  -
13699  81 181 281 381   -  - 281 81   -  -
13700  84 184 284 384 184 84 284 84   -  -
13701  87 187 287 387   -  - 287 87   -  -
13702  90 190 290 390 190 90 290 90 390 90
13703  93 193 293 393   -  - 293 93   -  -
13704   -   -   -   -   -  - 200  0   -  -
13705}
13706do_execsql_test joinD-474 {
13707  SELECT t1.*, t2.*, t3.*, t4.*
13708  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13709  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13710  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13711  WHERE t2.x>0
13712  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13713} {
13714   6 106 206 306 106  6 206  6   -  -
13715  12 112 212 312 112 12 212 12   -  -
13716  18 118 218 318 118 18 218 18   -  -
13717  24 124 224 324 124 24 224 24   -  -
13718  30 130 230 330 130 30 230 30 330 30
13719  36 136 236 336 136 36 236 36   -  -
13720  42 142 242 342 142 42 242 42   -  -
13721  48 148 248 348 148 48 248 48   -  -
13722  54 154 254 354 154 54 254 54   -  -
13723  60 160 260 360 160 60 260 60 360 60
13724  66 166 266 366 166 66 266 66   -  -
13725  72 172 272 372 172 72 272 72   -  -
13726  78 178 278 378 178 78 278 78   -  -
13727  84 184 284 384 184 84 284 84   -  -
13728  90 190 290 390 190 90 290 90 390 90
13729}
13730do_execsql_test joinD-475 {
13731  SELECT t1.*, t2.*, t3.*, t4.*
13732  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13733  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13734  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13735  WHERE (t2.x>0 OR t2.x IS NULL)
13736  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13737} {
13738   3 103 203 303   -  - 203  3   -  -
13739   6 106 206 306 106  6 206  6   -  -
13740   9 109 209 309   -  - 209  9   -  -
13741  12 112 212 312 112 12 212 12   -  -
13742  15 115 215 315   -  - 215 15 315 15
13743  18 118 218 318 118 18 218 18   -  -
13744  21 121 221 321   -  - 221 21   -  -
13745  24 124 224 324 124 24 224 24   -  -
13746  27 127 227 327   -  - 227 27   -  -
13747  30 130 230 330 130 30 230 30 330 30
13748  33 133 233 333   -  - 233 33   -  -
13749  36 136 236 336 136 36 236 36   -  -
13750  39 139 239 339   -  - 239 39   -  -
13751  42 142 242 342 142 42 242 42   -  -
13752  45 145 245 345   -  - 245 45 345 45
13753  48 148 248 348 148 48 248 48   -  -
13754  51 151 251 351   -  - 251 51   -  -
13755  54 154 254 354 154 54 254 54   -  -
13756  57 157 257 357   -  - 257 57   -  -
13757  60 160 260 360 160 60 260 60 360 60
13758  63 163 263 363   -  - 263 63   -  -
13759  66 166 266 366 166 66 266 66   -  -
13760  69 169 269 369   -  - 269 69   -  -
13761  72 172 272 372 172 72 272 72   -  -
13762  75 175 275 375   -  - 275 75 375 75
13763  78 178 278 378 178 78 278 78   -  -
13764  81 181 281 381   -  - 281 81   -  -
13765  84 184 284 384 184 84 284 84   -  -
13766  87 187 287 387   -  - 287 87   -  -
13767  90 190 290 390 190 90 290 90 390 90
13768  93 193 293 393   -  - 293 93   -  -
13769   -   -   -   -   -  - 200  0   -  -
13770}
13771do_execsql_test joinD-476 {
13772  SELECT t1.*, t2.*, t3.*, t4.*
13773  FROM t1 LEFT JOIN t2 ON true
13774  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13775  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13776  WHERE t1.b=t2.b AND t2.x>0
13777  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13778} {
13779   6 106 206 306 106  6 206  6   -  -
13780  12 112 212 312 112 12 212 12   -  -
13781  18 118 218 318 118 18 218 18   -  -
13782  24 124 224 324 124 24 224 24   -  -
13783  30 130 230 330 130 30 230 30 330 30
13784  36 136 236 336 136 36 236 36   -  -
13785  42 142 242 342 142 42 242 42   -  -
13786  48 148 248 348 148 48 248 48   -  -
13787  54 154 254 354 154 54 254 54   -  -
13788  60 160 260 360 160 60 260 60 360 60
13789  66 166 266 366 166 66 266 66   -  -
13790  72 172 272 372 172 72 272 72   -  -
13791  78 178 278 378 178 78 278 78   -  -
13792  84 184 284 384 184 84 284 84   -  -
13793  90 190 290 390 190 90 290 90 390 90
13794}
13795do_execsql_test joinD-477 {
13796  SELECT t1.*, t2.*, t3.*, t4.*
13797  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13798  RIGHT JOIN t3 ON t1.c=t3.c
13799  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13800  WHERE t3.y>0
13801  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13802} {
13803   3 103 203 303   -  - 203  3   -  -
13804   6 106 206 306 106  6 206  6   -  -
13805   9 109 209 309   -  - 209  9   -  -
13806  12 112 212 312 112 12 212 12   -  -
13807  15 115 215 315   -  - 215 15 315 15
13808  18 118 218 318 118 18 218 18   -  -
13809  21 121 221 321   -  - 221 21   -  -
13810  24 124 224 324 124 24 224 24   -  -
13811  27 127 227 327   -  - 227 27   -  -
13812  30 130 230 330 130 30 230 30 330 30
13813  33 133 233 333   -  - 233 33   -  -
13814  36 136 236 336 136 36 236 36   -  -
13815  39 139 239 339   -  - 239 39   -  -
13816  42 142 242 342 142 42 242 42   -  -
13817  45 145 245 345   -  - 245 45 345 45
13818  48 148 248 348 148 48 248 48   -  -
13819  51 151 251 351   -  - 251 51   -  -
13820  54 154 254 354 154 54 254 54   -  -
13821  57 157 257 357   -  - 257 57   -  -
13822  60 160 260 360 160 60 260 60 360 60
13823  63 163 263 363   -  - 263 63   -  -
13824  66 166 266 366 166 66 266 66   -  -
13825  69 169 269 369   -  - 269 69   -  -
13826  72 172 272 372 172 72 272 72   -  -
13827  75 175 275 375   -  - 275 75 375 75
13828  78 178 278 378 178 78 278 78   -  -
13829  81 181 281 381   -  - 281 81   -  -
13830  84 184 284 384 184 84 284 84   -  -
13831  87 187 287 387   -  - 287 87   -  -
13832  90 190 290 390 190 90 290 90 390 90
13833  93 193 293 393   -  - 293 93   -  -
13834}
13835do_execsql_test joinD-478 {
13836  SELECT t1.*, t2.*, t3.*, t4.*
13837  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13838  RIGHT JOIN t3 ON t1.c=t3.c
13839  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13840  WHERE t3.y>0 OR t3.y IS NULL
13841  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13842} {
13843   3 103 203 303   -  - 203  3   -  -
13844   6 106 206 306 106  6 206  6   -  -
13845   9 109 209 309   -  - 209  9   -  -
13846  12 112 212 312 112 12 212 12   -  -
13847  15 115 215 315   -  - 215 15 315 15
13848  18 118 218 318 118 18 218 18   -  -
13849  21 121 221 321   -  - 221 21   -  -
13850  24 124 224 324 124 24 224 24   -  -
13851  27 127 227 327   -  - 227 27   -  -
13852  30 130 230 330 130 30 230 30 330 30
13853  33 133 233 333   -  - 233 33   -  -
13854  36 136 236 336 136 36 236 36   -  -
13855  39 139 239 339   -  - 239 39   -  -
13856  42 142 242 342 142 42 242 42   -  -
13857  45 145 245 345   -  - 245 45 345 45
13858  48 148 248 348 148 48 248 48   -  -
13859  51 151 251 351   -  - 251 51   -  -
13860  54 154 254 354 154 54 254 54   -  -
13861  57 157 257 357   -  - 257 57   -  -
13862  60 160 260 360 160 60 260 60 360 60
13863  63 163 263 363   -  - 263 63   -  -
13864  66 166 266 366 166 66 266 66   -  -
13865  69 169 269 369   -  - 269 69   -  -
13866  72 172 272 372 172 72 272 72   -  -
13867  75 175 275 375   -  - 275 75 375 75
13868  78 178 278 378 178 78 278 78   -  -
13869  81 181 281 381   -  - 281 81   -  -
13870  84 184 284 384 184 84 284 84   -  -
13871  87 187 287 387   -  - 287 87   -  -
13872  90 190 290 390 190 90 290 90 390 90
13873  93 193 293 393   -  - 293 93   -  -
13874}
13875do_execsql_test joinD-479 {
13876  SELECT t1.*, t2.*, t3.*, t4.*
13877  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13878  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13879  LEFT JOIN t4 ON t1.d=t4.d
13880  WHERE t4.z>0
13881  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13882} {
13883  15 115 215 315   -  - 215 15 315 15
13884  30 130 230 330 130 30 230 30 330 30
13885  45 145 245 345   -  - 245 45 345 45
13886  60 160 260 360 160 60 260 60 360 60
13887  75 175 275 375   -  - 275 75 375 75
13888  90 190 290 390 190 90 290 90 390 90
13889}
13890do_execsql_test joinD-480 {
13891  SELECT t1.*, t2.*, t3.*, t4.*
13892  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13893  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13894  LEFT JOIN t4 ON t1.d=t4.d
13895  WHERE t4.z IS NULL OR t4.z>0
13896  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13897} {
13898   3 103 203 303   -  - 203  3   -  -
13899   6 106 206 306 106  6 206  6   -  -
13900   9 109 209 309   -  - 209  9   -  -
13901  12 112 212 312 112 12 212 12   -  -
13902  15 115 215 315   -  - 215 15 315 15
13903  18 118 218 318 118 18 218 18   -  -
13904  21 121 221 321   -  - 221 21   -  -
13905  24 124 224 324 124 24 224 24   -  -
13906  27 127 227 327   -  - 227 27   -  -
13907  30 130 230 330 130 30 230 30 330 30
13908  33 133 233 333   -  - 233 33   -  -
13909  36 136 236 336 136 36 236 36   -  -
13910  39 139 239 339   -  - 239 39   -  -
13911  42 142 242 342 142 42 242 42   -  -
13912  45 145 245 345   -  - 245 45 345 45
13913  48 148 248 348 148 48 248 48   -  -
13914  51 151 251 351   -  - 251 51   -  -
13915  54 154 254 354 154 54 254 54   -  -
13916  57 157 257 357   -  - 257 57   -  -
13917  60 160 260 360 160 60 260 60 360 60
13918  63 163 263 363   -  - 263 63   -  -
13919  66 166 266 366 166 66 266 66   -  -
13920  69 169 269 369   -  - 269 69   -  -
13921  72 172 272 372 172 72 272 72   -  -
13922  75 175 275 375   -  - 275 75 375 75
13923  78 178 278 378 178 78 278 78   -  -
13924  81 181 281 381   -  - 281 81   -  -
13925  84 184 284 384 184 84 284 84   -  -
13926  87 187 287 387   -  - 287 87   -  -
13927  90 190 290 390 190 90 290 90 390 90
13928  93 193 293 393   -  - 293 93   -  -
13929   -   -   -   -   -  - 200  0   -  -
13930}
13931do_execsql_test joinD-481 {
13932  SELECT t1.*, t2.*, t3.*, t4.*
13933  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13934  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13935  LEFT JOIN t4 ON t1.d=t4.d
13936  WHERE t2.x>0 AND t4.z>0
13937  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13938} {
13939  30 130 230 330 130 30 230 30 330 30
13940  60 160 260 360 160 60 260 60 360 60
13941  90 190 290 390 190 90 290 90 390 90
13942}
13943do_execsql_test joinD-482 {
13944  SELECT t1.*, t2.*, t3.*, t4.*
13945  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13946  RIGHT JOIN t3 ON t1.c=t3.c
13947  LEFT JOIN t4 ON t1.d=t4.d
13948  WHERE t4.z>0 AND t3.y>0
13949  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13950} {
13951  15 115 215 315   -  - 215 15 315 15
13952  30 130 230 330 130 30 230 30 330 30
13953  45 145 245 345   -  - 245 45 345 45
13954  60 160 260 360 160 60 260 60 360 60
13955  75 175 275 375   -  - 275 75 375 75
13956  90 190 290 390 190 90 290 90 390 90
13957}
13958do_execsql_test joinD-483 {
13959  SELECT t1.*, t2.*, t3.*, t4.*
13960  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13961  RIGHT JOIN t3 ON t1.c=t3.c
13962  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13963  WHERE t2.x>0 AND t3.y>0
13964  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13965} {
13966   6 106 206 306 106  6 206  6   -  -
13967  12 112 212 312 112 12 212 12   -  -
13968  18 118 218 318 118 18 218 18   -  -
13969  24 124 224 324 124 24 224 24   -  -
13970  30 130 230 330 130 30 230 30 330 30
13971  36 136 236 336 136 36 236 36   -  -
13972  42 142 242 342 142 42 242 42   -  -
13973  48 148 248 348 148 48 248 48   -  -
13974  54 154 254 354 154 54 254 54   -  -
13975  60 160 260 360 160 60 260 60 360 60
13976  66 166 266 366 166 66 266 66   -  -
13977  72 172 272 372 172 72 272 72   -  -
13978  78 178 278 378 178 78 278 78   -  -
13979  84 184 284 384 184 84 284 84   -  -
13980  90 190 290 390 190 90 290 90 390 90
13981}
13982do_execsql_test joinD-484 {
13983  SELECT t1.*, t2.*, t3.*, t4.*
13984  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13985  RIGHT JOIN t3 ON t1.c=t3.c
13986  LEFT JOIN t4 ON t1.d=t4.d
13987  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
13988  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13989} {
13990  30 130 230 330 130 30 230 30 330 30
13991  60 160 260 360 160 60 260 60 360 60
13992  90 190 290 390 190 90 290 90 390 90
13993}
13994do_execsql_test joinD-485 {
13995  SELECT t1.*, t2.*, t3.*, t4.*
13996  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13997  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13998  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13999  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14000} {
14001   3 103 203 303   -  - 203  3   -  -
14002   6 106 206 306 106  6 206  6   -  -
14003   9 109 209 309   -  - 209  9   -  -
14004  12 112 212 312 112 12 212 12   -  -
14005  15 115 215 315   -  - 215 15 315 15
14006  18 118 218 318 118 18 218 18   -  -
14007  21 121 221 321   -  - 221 21   -  -
14008  24 124 224 324 124 24 224 24   -  -
14009  27 127 227 327   -  - 227 27   -  -
14010  30 130 230 330 130 30 230 30 330 30
14011  33 133 233 333   -  - 233 33   -  -
14012  36 136 236 336 136 36 236 36   -  -
14013  39 139 239 339   -  - 239 39   -  -
14014  42 142 242 342 142 42 242 42   -  -
14015  45 145 245 345   -  - 245 45 345 45
14016  48 148 248 348 148 48 248 48   -  -
14017  51 151 251 351   -  - 251 51   -  -
14018  54 154 254 354 154 54 254 54   -  -
14019  57 157 257 357   -  - 257 57   -  -
14020  60 160 260 360 160 60 260 60 360 60
14021  63 163 263 363   -  - 263 63   -  -
14022  66 166 266 366 166 66 266 66   -  -
14023  69 169 269 369   -  - 269 69   -  -
14024  72 172 272 372 172 72 272 72   -  -
14025  75 175 275 375   -  - 275 75 375 75
14026  78 178 278 378 178 78 278 78   -  -
14027  81 181 281 381   -  - 281 81   -  -
14028  84 184 284 384 184 84 284 84   -  -
14029  87 187 287 387   -  - 287 87   -  -
14030  90 190 290 390 190 90 290 90 390 90
14031  93 193 293 393   -  - 293 93   -  -
14032   -   -   -   -   -  - 200  0   -  -
14033}
14034do_execsql_test joinD-486 {
14035  SELECT t1.*, t2.*, t3.*, t4.*
14036  FROM t1 LEFT JOIN t2 ON t2.x>0
14037  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14038  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14039  WHERE t1.b IS NOT DISTINCT FROM t2.b
14040  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14041} {
14042   6 106 206 306 106  6 206  6   -  -
14043  12 112 212 312 112 12 212 12   -  -
14044  18 118 218 318 118 18 218 18   -  -
14045  24 124 224 324 124 24 224 24   -  -
14046  30 130 230 330 130 30 230 30 330 30
14047  36 136 236 336 136 36 236 36   -  -
14048  42 142 242 342 142 42 242 42   -  -
14049  48 148 248 348 148 48 248 48   -  -
14050  54 154 254 354 154 54 254 54   -  -
14051  60 160 260 360 160 60 260 60 360 60
14052  66 166 266 366 166 66 266 66   -  -
14053  72 172 272 372 172 72 272 72   -  -
14054  78 178 278 378 178 78 278 78   -  -
14055  84 184 284 384 184 84 284 84   -  -
14056  90 190 290 390 190 90 290 90 390 90
14057   -   -   -   -   -  - 200  0   -  -
14058}
14059do_execsql_test joinD-487 {
14060  SELECT t1.*, t2.*, t3.*, t4.*
14061  FROM t1 LEFT JOIN t2 ON t2.x>0
14062  RIGHT JOIN t3 ON t3.y>0
14063  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14064  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
14065  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14066} {
14067   6 106 206 306 106  6 206  6   -  -
14068  12 112 212 312 112 12 212 12   -  -
14069  18 118 218 318 118 18 218 18   -  -
14070  24 124 224 324 124 24 224 24   -  -
14071  30 130 230 330 130 30 230 30 330 30
14072  36 136 236 336 136 36 236 36   -  -
14073  42 142 242 342 142 42 242 42   -  -
14074  48 148 248 348 148 48 248 48   -  -
14075  54 154 254 354 154 54 254 54   -  -
14076  60 160 260 360 160 60 260 60 360 60
14077  66 166 266 366 166 66 266 66   -  -
14078  72 172 272 372 172 72 272 72   -  -
14079  78 178 278 378 178 78 278 78   -  -
14080  84 184 284 384 184 84 284 84   -  -
14081  90 190 290 390 190 90 290 90 390 90
14082}
14083do_execsql_test joinD-488 {
14084  SELECT t1.*, t2.*, t3.*, t4.*
14085  FROM t1 LEFT JOIN t2 ON t2.x>0
14086  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14087  LEFT JOIN t4 ON t4.z>0
14088  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
14089  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14090} {
14091  30 130 230 330 130 30 230 30 330 30
14092  60 160 260 360 160 60 260 60 360 60
14093  90 190 290 390 190 90 290 90 390 90
14094}
14095do_execsql_test joinD-489 {
14096  SELECT t1.*, t2.*, t3.*, t4.*
14097  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
14098  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14099  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
14100  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14101} {
14102   3 103 203 303   -  - 203  3   -  -
14103   6 106 206 306 106  6 206  6   -  -
14104   9 109 209 309   -  - 209  9   -  -
14105  12 112 212 312 112 12 212 12   -  -
14106  15 115 215 315   -  - 215 15 315 15
14107  18 118 218 318 118 18 218 18   -  -
14108  21 121 221 321   -  - 221 21   -  -
14109  24 124 224 324 124 24 224 24   -  -
14110  27 127 227 327   -  - 227 27   -  -
14111  30 130 230 330 130 30 230 30 330 30
14112  33 133 233 333   -  - 233 33   -  -
14113  36 136 236 336 136 36 236 36   -  -
14114  39 139 239 339   -  - 239 39   -  -
14115  42 142 242 342 142 42 242 42   -  -
14116  45 145 245 345   -  - 245 45 345 45
14117  48 148 248 348 148 48 248 48   -  -
14118  51 151 251 351   -  - 251 51   -  -
14119  54 154 254 354 154 54 254 54   -  -
14120  57 157 257 357   -  - 257 57   -  -
14121  60 160 260 360 160 60 260 60 360 60
14122  63 163 263 363   -  - 263 63   -  -
14123  66 166 266 366 166 66 266 66   -  -
14124  69 169 269 369   -  - 269 69   -  -
14125  72 172 272 372 172 72 272 72   -  -
14126  75 175 275 375   -  - 275 75 375 75
14127  78 178 278 378 178 78 278 78   -  -
14128  81 181 281 381   -  - 281 81   -  -
14129  84 184 284 384 184 84 284 84   -  -
14130  87 187 287 387   -  - 287 87   -  -
14131  90 190 290 390 190 90 290 90 390 90
14132  93 193 293 393   -  - 293 93   -  -
14133   -   -   -   -   -  - 200  0   -  -
14134}
14135do_execsql_test joinD-490 {
14136  SELECT t1.*, t2.*, t3.*, t4.*
14137  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14138  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
14139  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
14140  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14141} {
14142   3 103 203 303   -  - 203  3   -  -
14143   6 106 206 306 106  6 206  6   -  -
14144   9 109 209 309   -  - 209  9   -  -
14145  12 112 212 312 112 12 212 12   -  -
14146  15 115 215 315   -  - 215 15 315 15
14147  18 118 218 318 118 18 218 18   -  -
14148  21 121 221 321   -  - 221 21   -  -
14149  24 124 224 324 124 24 224 24   -  -
14150  27 127 227 327   -  - 227 27   -  -
14151  30 130 230 330 130 30 230 30 330 30
14152  33 133 233 333   -  - 233 33   -  -
14153  36 136 236 336 136 36 236 36   -  -
14154  39 139 239 339   -  - 239 39   -  -
14155  42 142 242 342 142 42 242 42   -  -
14156  45 145 245 345   -  - 245 45 345 45
14157  48 148 248 348 148 48 248 48   -  -
14158  51 151 251 351   -  - 251 51   -  -
14159  54 154 254 354 154 54 254 54   -  -
14160  57 157 257 357   -  - 257 57   -  -
14161  60 160 260 360 160 60 260 60 360 60
14162  63 163 263 363   -  - 263 63   -  -
14163  66 166 266 366 166 66 266 66   -  -
14164  69 169 269 369   -  - 269 69   -  -
14165  72 172 272 372 172 72 272 72   -  -
14166  75 175 275 375   -  - 275 75 375 75
14167  78 178 278 378 178 78 278 78   -  -
14168  81 181 281 381   -  - 281 81   -  -
14169  84 184 284 384 184 84 284 84   -  -
14170  87 187 287 387   -  - 287 87   -  -
14171  90 190 290 390 190 90 290 90 390 90
14172  93 193 293 393   -  - 293 93   -  -
14173   -   -   -   -   -  - 200  0   -  -
14174}
14175do_execsql_test joinD-491 {
14176  SELECT t1.*, t2.*, t3.*, t4.*
14177  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14178  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14179  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14180  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14181} {
14182  15 115 215 315   -  - 215 15 315 15
14183  30 130 230 330 130 30 230 30 330 30
14184  45 145 245 345   -  - 245 45 345 45
14185  60 160 260 360 160 60 260 60 360 60
14186  75 175 275 375   -  - 275 75 375 75
14187  90 190 290 390 190 90 290 90 390 90
14188   -   -   -   -   -  -   -  - 300  0
14189   -   -   -   -   -  -   -  - 305  5
14190   -   -   -   -   -  -   -  - 310 10
14191   -   -   -   -   -  -   -  - 320 20
14192   -   -   -   -   -  -   -  - 325 25
14193   -   -   -   -   -  -   -  - 335 35
14194   -   -   -   -   -  -   -  - 340 40
14195   -   -   -   -   -  -   -  - 350 50
14196   -   -   -   -   -  -   -  - 355 55
14197   -   -   -   -   -  -   -  - 365 65
14198   -   -   -   -   -  -   -  - 370 70
14199   -   -   -   -   -  -   -  - 380 80
14200   -   -   -   -   -  -   -  - 385 85
14201   -   -   -   -   -  -   -  - 395 95
14202}
14203do_execsql_test joinD-492 {
14204  SELECT t1.*, t2.*, t3.*, t4.*
14205  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
14206  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14207  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14208  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14209} {
14210  15 115 215 315   -  - 215 15 315 15
14211  30 130 230 330 130 30 230 30 330 30
14212  45 145 245 345   -  - 245 45 345 45
14213  60 160 260 360 160 60 260 60 360 60
14214  75 175 275 375   -  - 275 75 375 75
14215  90 190 290 390 190 90 290 90 390 90
14216   -   -   -   -   -  -   -  - 300  0
14217   -   -   -   -   -  -   -  - 305  5
14218   -   -   -   -   -  -   -  - 310 10
14219   -   -   -   -   -  -   -  - 320 20
14220   -   -   -   -   -  -   -  - 325 25
14221   -   -   -   -   -  -   -  - 335 35
14222   -   -   -   -   -  -   -  - 340 40
14223   -   -   -   -   -  -   -  - 350 50
14224   -   -   -   -   -  -   -  - 355 55
14225   -   -   -   -   -  -   -  - 365 65
14226   -   -   -   -   -  -   -  - 370 70
14227   -   -   -   -   -  -   -  - 380 80
14228   -   -   -   -   -  -   -  - 385 85
14229   -   -   -   -   -  -   -  - 395 95
14230}
14231do_execsql_test joinD-493 {
14232  SELECT t1.*, t2.*, t3.*, t4.*
14233  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14234  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14235  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14236  WHERE t2.x>0
14237  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14238} {
14239  30 130 230 330 130 30 230 30 330 30
14240  60 160 260 360 160 60 260 60 360 60
14241  90 190 290 390 190 90 290 90 390 90
14242}
14243do_execsql_test joinD-494 {
14244  SELECT t1.*, t2.*, t3.*, t4.*
14245  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14246  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14247  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14248  WHERE (t2.x>0 OR t2.x IS NULL)
14249  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14250} {
14251  15 115 215 315   -  - 215 15 315 15
14252  30 130 230 330 130 30 230 30 330 30
14253  45 145 245 345   -  - 245 45 345 45
14254  60 160 260 360 160 60 260 60 360 60
14255  75 175 275 375   -  - 275 75 375 75
14256  90 190 290 390 190 90 290 90 390 90
14257   -   -   -   -   -  -   -  - 300  0
14258   -   -   -   -   -  -   -  - 305  5
14259   -   -   -   -   -  -   -  - 310 10
14260   -   -   -   -   -  -   -  - 320 20
14261   -   -   -   -   -  -   -  - 325 25
14262   -   -   -   -   -  -   -  - 335 35
14263   -   -   -   -   -  -   -  - 340 40
14264   -   -   -   -   -  -   -  - 350 50
14265   -   -   -   -   -  -   -  - 355 55
14266   -   -   -   -   -  -   -  - 365 65
14267   -   -   -   -   -  -   -  - 370 70
14268   -   -   -   -   -  -   -  - 380 80
14269   -   -   -   -   -  -   -  - 385 85
14270   -   -   -   -   -  -   -  - 395 95
14271}
14272do_execsql_test joinD-495 {
14273  SELECT t1.*, t2.*, t3.*, t4.*
14274  FROM t1 LEFT JOIN t2 ON true
14275  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14276  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14277  WHERE t1.b=t2.b AND t2.x>0
14278  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14279} {
14280  30 130 230 330 130 30 230 30 330 30
14281  60 160 260 360 160 60 260 60 360 60
14282  90 190 290 390 190 90 290 90 390 90
14283}
14284do_execsql_test joinD-496 {
14285  SELECT t1.*, t2.*, t3.*, t4.*
14286  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14287  RIGHT JOIN t3 ON t1.c=t3.c
14288  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14289  WHERE t3.y>0
14290  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14291} {
14292  15 115 215 315   -  - 215 15 315 15
14293  30 130 230 330 130 30 230 30 330 30
14294  45 145 245 345   -  - 245 45 345 45
14295  60 160 260 360 160 60 260 60 360 60
14296  75 175 275 375   -  - 275 75 375 75
14297  90 190 290 390 190 90 290 90 390 90
14298}
14299do_execsql_test joinD-497 {
14300  SELECT t1.*, t2.*, t3.*, t4.*
14301  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14302  RIGHT JOIN t3 ON t1.c=t3.c
14303  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14304  WHERE t3.y>0 OR t3.y IS NULL
14305  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14306} {
14307  15 115 215 315   -  - 215 15 315 15
14308  30 130 230 330 130 30 230 30 330 30
14309  45 145 245 345   -  - 245 45 345 45
14310  60 160 260 360 160 60 260 60 360 60
14311  75 175 275 375   -  - 275 75 375 75
14312  90 190 290 390 190 90 290 90 390 90
14313   -   -   -   -   -  -   -  - 300  0
14314   -   -   -   -   -  -   -  - 305  5
14315   -   -   -   -   -  -   -  - 310 10
14316   -   -   -   -   -  -   -  - 320 20
14317   -   -   -   -   -  -   -  - 325 25
14318   -   -   -   -   -  -   -  - 335 35
14319   -   -   -   -   -  -   -  - 340 40
14320   -   -   -   -   -  -   -  - 350 50
14321   -   -   -   -   -  -   -  - 355 55
14322   -   -   -   -   -  -   -  - 365 65
14323   -   -   -   -   -  -   -  - 370 70
14324   -   -   -   -   -  -   -  - 380 80
14325   -   -   -   -   -  -   -  - 385 85
14326   -   -   -   -   -  -   -  - 395 95
14327}
14328do_execsql_test joinD-498 {
14329  SELECT t1.*, t2.*, t3.*, t4.*
14330  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14331  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14332  RIGHT JOIN t4 ON t1.d=t4.d
14333  WHERE t4.z>0
14334  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14335} {
14336  15 115 215 315   -  - 215 15 315 15
14337  30 130 230 330 130 30 230 30 330 30
14338  45 145 245 345   -  - 245 45 345 45
14339  60 160 260 360 160 60 260 60 360 60
14340  75 175 275 375   -  - 275 75 375 75
14341  90 190 290 390 190 90 290 90 390 90
14342   -   -   -   -   -  -   -  - 305  5
14343   -   -   -   -   -  -   -  - 310 10
14344   -   -   -   -   -  -   -  - 320 20
14345   -   -   -   -   -  -   -  - 325 25
14346   -   -   -   -   -  -   -  - 335 35
14347   -   -   -   -   -  -   -  - 340 40
14348   -   -   -   -   -  -   -  - 350 50
14349   -   -   -   -   -  -   -  - 355 55
14350   -   -   -   -   -  -   -  - 365 65
14351   -   -   -   -   -  -   -  - 370 70
14352   -   -   -   -   -  -   -  - 380 80
14353   -   -   -   -   -  -   -  - 385 85
14354   -   -   -   -   -  -   -  - 395 95
14355}
14356do_execsql_test joinD-499 {
14357  SELECT t1.*, t2.*, t3.*, t4.*
14358  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14359  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14360  RIGHT JOIN t4 ON t1.d=t4.d
14361  WHERE t4.z IS NULL OR t4.z>0
14362  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14363} {
14364  15 115 215 315   -  - 215 15 315 15
14365  30 130 230 330 130 30 230 30 330 30
14366  45 145 245 345   -  - 245 45 345 45
14367  60 160 260 360 160 60 260 60 360 60
14368  75 175 275 375   -  - 275 75 375 75
14369  90 190 290 390 190 90 290 90 390 90
14370   -   -   -   -   -  -   -  - 305  5
14371   -   -   -   -   -  -   -  - 310 10
14372   -   -   -   -   -  -   -  - 320 20
14373   -   -   -   -   -  -   -  - 325 25
14374   -   -   -   -   -  -   -  - 335 35
14375   -   -   -   -   -  -   -  - 340 40
14376   -   -   -   -   -  -   -  - 350 50
14377   -   -   -   -   -  -   -  - 355 55
14378   -   -   -   -   -  -   -  - 365 65
14379   -   -   -   -   -  -   -  - 370 70
14380   -   -   -   -   -  -   -  - 380 80
14381   -   -   -   -   -  -   -  - 385 85
14382   -   -   -   -   -  -   -  - 395 95
14383}
14384do_execsql_test joinD-500 {
14385  SELECT t1.*, t2.*, t3.*, t4.*
14386  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14387  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14388  RIGHT JOIN t4 ON t1.d=t4.d
14389  WHERE t2.x>0 AND t4.z>0
14390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14391} {
14392  30 130 230 330 130 30 230 30 330 30
14393  60 160 260 360 160 60 260 60 360 60
14394  90 190 290 390 190 90 290 90 390 90
14395}
14396do_execsql_test joinD-501 {
14397  SELECT t1.*, t2.*, t3.*, t4.*
14398  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14399  RIGHT JOIN t3 ON t1.c=t3.c
14400  RIGHT JOIN t4 ON t1.d=t4.d
14401  WHERE t4.z>0 AND t3.y>0
14402  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14403} {
14404  15 115 215 315   -  - 215 15 315 15
14405  30 130 230 330 130 30 230 30 330 30
14406  45 145 245 345   -  - 245 45 345 45
14407  60 160 260 360 160 60 260 60 360 60
14408  75 175 275 375   -  - 275 75 375 75
14409  90 190 290 390 190 90 290 90 390 90
14410}
14411do_execsql_test joinD-502 {
14412  SELECT t1.*, t2.*, t3.*, t4.*
14413  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14414  RIGHT JOIN t3 ON t1.c=t3.c
14415  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14416  WHERE t2.x>0 AND t3.y>0
14417  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14418} {
14419  30 130 230 330 130 30 230 30 330 30
14420  60 160 260 360 160 60 260 60 360 60
14421  90 190 290 390 190 90 290 90 390 90
14422}
14423do_execsql_test joinD-503 {
14424  SELECT t1.*, t2.*, t3.*, t4.*
14425  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14426  RIGHT JOIN t3 ON t1.c=t3.c
14427  RIGHT JOIN t4 ON t1.d=t4.d
14428  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
14429  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14430} {
14431  30 130 230 330 130 30 230 30 330 30
14432  60 160 260 360 160 60 260 60 360 60
14433  90 190 290 390 190 90 290 90 390 90
14434}
14435do_execsql_test joinD-504 {
14436  SELECT t1.*, t2.*, t3.*, t4.*
14437  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
14438  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14439  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14440  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14441} {
14442  15 115 215 315   -  - 215 15 315 15
14443  30 130 230 330 130 30 230 30 330 30
14444  45 145 245 345   -  - 245 45 345 45
14445  60 160 260 360 160 60 260 60 360 60
14446  75 175 275 375   -  - 275 75 375 75
14447  90 190 290 390 190 90 290 90 390 90
14448   -   -   -   -   -  -   -  - 300  0
14449   -   -   -   -   -  -   -  - 305  5
14450   -   -   -   -   -  -   -  - 310 10
14451   -   -   -   -   -  -   -  - 320 20
14452   -   -   -   -   -  -   -  - 325 25
14453   -   -   -   -   -  -   -  - 335 35
14454   -   -   -   -   -  -   -  - 340 40
14455   -   -   -   -   -  -   -  - 350 50
14456   -   -   -   -   -  -   -  - 355 55
14457   -   -   -   -   -  -   -  - 365 65
14458   -   -   -   -   -  -   -  - 370 70
14459   -   -   -   -   -  -   -  - 380 80
14460   -   -   -   -   -  -   -  - 385 85
14461   -   -   -   -   -  -   -  - 395 95
14462}
14463do_execsql_test joinD-505 {
14464  SELECT t1.*, t2.*, t3.*, t4.*
14465  FROM t1 LEFT JOIN t2 ON t2.x>0
14466  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14467  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14468  WHERE t1.b IS NOT DISTINCT FROM t2.b
14469  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14470} {
14471  30 130 230 330 130 30 230 30 330 30
14472  60 160 260 360 160 60 260 60 360 60
14473  90 190 290 390 190 90 290 90 390 90
14474   -   -   -   -   -  -   -  - 300  0
14475   -   -   -   -   -  -   -  - 305  5
14476   -   -   -   -   -  -   -  - 310 10
14477   -   -   -   -   -  -   -  - 320 20
14478   -   -   -   -   -  -   -  - 325 25
14479   -   -   -   -   -  -   -  - 335 35
14480   -   -   -   -   -  -   -  - 340 40
14481   -   -   -   -   -  -   -  - 350 50
14482   -   -   -   -   -  -   -  - 355 55
14483   -   -   -   -   -  -   -  - 365 65
14484   -   -   -   -   -  -   -  - 370 70
14485   -   -   -   -   -  -   -  - 380 80
14486   -   -   -   -   -  -   -  - 385 85
14487   -   -   -   -   -  -   -  - 395 95
14488}
14489do_execsql_test joinD-506 {
14490  SELECT t1.*, t2.*, t3.*, t4.*
14491  FROM t1 LEFT JOIN t2 ON t2.x>0
14492  RIGHT JOIN t3 ON t3.y>0
14493  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14494  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
14495  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14496} {
14497  30 130 230 330 130 30 230 30 330 30
14498  60 160 260 360 160 60 260 60 360 60
14499  90 190 290 390 190 90 290 90 390 90
14500   -   -   -   -   -  -   -  - 300  0
14501}
14502do_execsql_test joinD-507 {
14503  SELECT t1.*, t2.*, t3.*, t4.*
14504  FROM t1 LEFT JOIN t2 ON t2.x>0
14505  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14506  RIGHT JOIN t4 ON t4.z>0
14507  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
14508  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14509} {
14510  30 130 230 330 130 30 230 30 330 30
14511  60 160 260 360 160 60 260 60 360 60
14512  90 190 290 390 190 90 290 90 390 90
14513}
14514do_execsql_test joinD-508 {
14515  SELECT t1.*, t2.*, t3.*, t4.*
14516  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
14517  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14518  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14519  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14520} {
14521  15 115 215 315   -  - 215 15 315 15
14522  30 130 230 330 130 30 230 30 330 30
14523  45 145 245 345   -  - 245 45 345 45
14524  60 160 260 360 160 60 260 60 360 60
14525  75 175 275 375   -  - 275 75 375 75
14526  90 190 290 390 190 90 290 90 390 90
14527   -   -   -   -   -  -   -  - 300  0
14528   -   -   -   -   -  -   -  - 305  5
14529   -   -   -   -   -  -   -  - 310 10
14530   -   -   -   -   -  -   -  - 320 20
14531   -   -   -   -   -  -   -  - 325 25
14532   -   -   -   -   -  -   -  - 335 35
14533   -   -   -   -   -  -   -  - 340 40
14534   -   -   -   -   -  -   -  - 350 50
14535   -   -   -   -   -  -   -  - 355 55
14536   -   -   -   -   -  -   -  - 365 65
14537   -   -   -   -   -  -   -  - 370 70
14538   -   -   -   -   -  -   -  - 380 80
14539   -   -   -   -   -  -   -  - 385 85
14540   -   -   -   -   -  -   -  - 395 95
14541}
14542do_execsql_test joinD-509 {
14543  SELECT t1.*, t2.*, t3.*, t4.*
14544  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14545  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
14546  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14547  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14548} {
14549  15 115 215 315   -  - 215 15 315 15
14550  30 130 230 330 130 30 230 30 330 30
14551  45 145 245 345   -  - 245 45 345 45
14552  60 160 260 360 160 60 260 60 360 60
14553  75 175 275 375   -  - 275 75 375 75
14554  90 190 290 390 190 90 290 90 390 90
14555   -   -   -   -   -  -   -  - 300  0
14556   -   -   -   -   -  -   -  - 305  5
14557   -   -   -   -   -  -   -  - 310 10
14558   -   -   -   -   -  -   -  - 320 20
14559   -   -   -   -   -  -   -  - 325 25
14560   -   -   -   -   -  -   -  - 335 35
14561   -   -   -   -   -  -   -  - 340 40
14562   -   -   -   -   -  -   -  - 350 50
14563   -   -   -   -   -  -   -  - 355 55
14564   -   -   -   -   -  -   -  - 365 65
14565   -   -   -   -   -  -   -  - 370 70
14566   -   -   -   -   -  -   -  - 380 80
14567   -   -   -   -   -  -   -  - 385 85
14568   -   -   -   -   -  -   -  - 395 95
14569}
14570do_execsql_test joinD-510 {
14571  SELECT t1.*, t2.*, t3.*, t4.*
14572  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14573  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14574  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14575  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14576} {
14577   3 103 203 303   -  - 203  3   -  -
14578   6 106 206 306 106  6 206  6   -  -
14579   9 109 209 309   -  - 209  9   -  -
14580  12 112 212 312 112 12 212 12   -  -
14581  15 115 215 315   -  - 215 15 315 15
14582  18 118 218 318 118 18 218 18   -  -
14583  21 121 221 321   -  - 221 21   -  -
14584  24 124 224 324 124 24 224 24   -  -
14585  27 127 227 327   -  - 227 27   -  -
14586  30 130 230 330 130 30 230 30 330 30
14587  33 133 233 333   -  - 233 33   -  -
14588  36 136 236 336 136 36 236 36   -  -
14589  39 139 239 339   -  - 239 39   -  -
14590  42 142 242 342 142 42 242 42   -  -
14591  45 145 245 345   -  - 245 45 345 45
14592  48 148 248 348 148 48 248 48   -  -
14593  51 151 251 351   -  - 251 51   -  -
14594  54 154 254 354 154 54 254 54   -  -
14595  57 157 257 357   -  - 257 57   -  -
14596  60 160 260 360 160 60 260 60 360 60
14597  63 163 263 363   -  - 263 63   -  -
14598  66 166 266 366 166 66 266 66   -  -
14599  69 169 269 369   -  - 269 69   -  -
14600  72 172 272 372 172 72 272 72   -  -
14601  75 175 275 375   -  - 275 75 375 75
14602  78 178 278 378 178 78 278 78   -  -
14603  81 181 281 381   -  - 281 81   -  -
14604  84 184 284 384 184 84 284 84   -  -
14605  87 187 287 387   -  - 287 87   -  -
14606  90 190 290 390 190 90 290 90 390 90
14607  93 193 293 393   -  - 293 93   -  -
14608   -   -   -   -   -  - 200  0   -  -
14609   -   -   -   -   -  -   -  - 300  0
14610   -   -   -   -   -  -   -  - 305  5
14611   -   -   -   -   -  -   -  - 310 10
14612   -   -   -   -   -  -   -  - 320 20
14613   -   -   -   -   -  -   -  - 325 25
14614   -   -   -   -   -  -   -  - 335 35
14615   -   -   -   -   -  -   -  - 340 40
14616   -   -   -   -   -  -   -  - 350 50
14617   -   -   -   -   -  -   -  - 355 55
14618   -   -   -   -   -  -   -  - 365 65
14619   -   -   -   -   -  -   -  - 370 70
14620   -   -   -   -   -  -   -  - 380 80
14621   -   -   -   -   -  -   -  - 385 85
14622   -   -   -   -   -  -   -  - 395 95
14623}
14624do_execsql_test joinD-511 {
14625  SELECT t1.*, t2.*, t3.*, t4.*
14626  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
14627  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14628  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14629  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14630} {
14631   3 103 203 303   -  - 203  3   -  -
14632   6 106 206 306 106  6 206  6   -  -
14633   9 109 209 309   -  - 209  9   -  -
14634  12 112 212 312 112 12 212 12   -  -
14635  15 115 215 315   -  - 215 15 315 15
14636  18 118 218 318 118 18 218 18   -  -
14637  21 121 221 321   -  - 221 21   -  -
14638  24 124 224 324 124 24 224 24   -  -
14639  27 127 227 327   -  - 227 27   -  -
14640  30 130 230 330 130 30 230 30 330 30
14641  33 133 233 333   -  - 233 33   -  -
14642  36 136 236 336 136 36 236 36   -  -
14643  39 139 239 339   -  - 239 39   -  -
14644  42 142 242 342 142 42 242 42   -  -
14645  45 145 245 345   -  - 245 45 345 45
14646  48 148 248 348 148 48 248 48   -  -
14647  51 151 251 351   -  - 251 51   -  -
14648  54 154 254 354 154 54 254 54   -  -
14649  57 157 257 357   -  - 257 57   -  -
14650  60 160 260 360 160 60 260 60 360 60
14651  63 163 263 363   -  - 263 63   -  -
14652  66 166 266 366 166 66 266 66   -  -
14653  69 169 269 369   -  - 269 69   -  -
14654  72 172 272 372 172 72 272 72   -  -
14655  75 175 275 375   -  - 275 75 375 75
14656  78 178 278 378 178 78 278 78   -  -
14657  81 181 281 381   -  - 281 81   -  -
14658  84 184 284 384 184 84 284 84   -  -
14659  87 187 287 387   -  - 287 87   -  -
14660  90 190 290 390 190 90 290 90 390 90
14661  93 193 293 393   -  - 293 93   -  -
14662   -   -   -   -   -  - 200  0   -  -
14663   -   -   -   -   -  -   -  - 300  0
14664   -   -   -   -   -  -   -  - 305  5
14665   -   -   -   -   -  -   -  - 310 10
14666   -   -   -   -   -  -   -  - 320 20
14667   -   -   -   -   -  -   -  - 325 25
14668   -   -   -   -   -  -   -  - 335 35
14669   -   -   -   -   -  -   -  - 340 40
14670   -   -   -   -   -  -   -  - 350 50
14671   -   -   -   -   -  -   -  - 355 55
14672   -   -   -   -   -  -   -  - 365 65
14673   -   -   -   -   -  -   -  - 370 70
14674   -   -   -   -   -  -   -  - 380 80
14675   -   -   -   -   -  -   -  - 385 85
14676   -   -   -   -   -  -   -  - 395 95
14677}
14678do_execsql_test joinD-512 {
14679  SELECT t1.*, t2.*, t3.*, t4.*
14680  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14681  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14682  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14683  WHERE t2.x>0
14684  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14685} {
14686   6 106 206 306 106  6 206  6   -  -
14687  12 112 212 312 112 12 212 12   -  -
14688  18 118 218 318 118 18 218 18   -  -
14689  24 124 224 324 124 24 224 24   -  -
14690  30 130 230 330 130 30 230 30 330 30
14691  36 136 236 336 136 36 236 36   -  -
14692  42 142 242 342 142 42 242 42   -  -
14693  48 148 248 348 148 48 248 48   -  -
14694  54 154 254 354 154 54 254 54   -  -
14695  60 160 260 360 160 60 260 60 360 60
14696  66 166 266 366 166 66 266 66   -  -
14697  72 172 272 372 172 72 272 72   -  -
14698  78 178 278 378 178 78 278 78   -  -
14699  84 184 284 384 184 84 284 84   -  -
14700  90 190 290 390 190 90 290 90 390 90
14701}
14702do_execsql_test joinD-513 {
14703  SELECT t1.*, t2.*, t3.*, t4.*
14704  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14705  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14706  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14707  WHERE (t2.x>0 OR t2.x IS NULL)
14708  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14709} {
14710   3 103 203 303   -  - 203  3   -  -
14711   6 106 206 306 106  6 206  6   -  -
14712   9 109 209 309   -  - 209  9   -  -
14713  12 112 212 312 112 12 212 12   -  -
14714  15 115 215 315   -  - 215 15 315 15
14715  18 118 218 318 118 18 218 18   -  -
14716  21 121 221 321   -  - 221 21   -  -
14717  24 124 224 324 124 24 224 24   -  -
14718  27 127 227 327   -  - 227 27   -  -
14719  30 130 230 330 130 30 230 30 330 30
14720  33 133 233 333   -  - 233 33   -  -
14721  36 136 236 336 136 36 236 36   -  -
14722  39 139 239 339   -  - 239 39   -  -
14723  42 142 242 342 142 42 242 42   -  -
14724  45 145 245 345   -  - 245 45 345 45
14725  48 148 248 348 148 48 248 48   -  -
14726  51 151 251 351   -  - 251 51   -  -
14727  54 154 254 354 154 54 254 54   -  -
14728  57 157 257 357   -  - 257 57   -  -
14729  60 160 260 360 160 60 260 60 360 60
14730  63 163 263 363   -  - 263 63   -  -
14731  66 166 266 366 166 66 266 66   -  -
14732  69 169 269 369   -  - 269 69   -  -
14733  72 172 272 372 172 72 272 72   -  -
14734  75 175 275 375   -  - 275 75 375 75
14735  78 178 278 378 178 78 278 78   -  -
14736  81 181 281 381   -  - 281 81   -  -
14737  84 184 284 384 184 84 284 84   -  -
14738  87 187 287 387   -  - 287 87   -  -
14739  90 190 290 390 190 90 290 90 390 90
14740  93 193 293 393   -  - 293 93   -  -
14741   -   -   -   -   -  - 200  0   -  -
14742   -   -   -   -   -  -   -  - 300  0
14743   -   -   -   -   -  -   -  - 305  5
14744   -   -   -   -   -  -   -  - 310 10
14745   -   -   -   -   -  -   -  - 320 20
14746   -   -   -   -   -  -   -  - 325 25
14747   -   -   -   -   -  -   -  - 335 35
14748   -   -   -   -   -  -   -  - 340 40
14749   -   -   -   -   -  -   -  - 350 50
14750   -   -   -   -   -  -   -  - 355 55
14751   -   -   -   -   -  -   -  - 365 65
14752   -   -   -   -   -  -   -  - 370 70
14753   -   -   -   -   -  -   -  - 380 80
14754   -   -   -   -   -  -   -  - 385 85
14755   -   -   -   -   -  -   -  - 395 95
14756}
14757do_execsql_test joinD-514 {
14758  SELECT t1.*, t2.*, t3.*, t4.*
14759  FROM t1 LEFT JOIN t2 ON true
14760  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14761  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14762  WHERE t1.b=t2.b AND t2.x>0
14763  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14764} {
14765   6 106 206 306 106  6 206  6   -  -
14766  12 112 212 312 112 12 212 12   -  -
14767  18 118 218 318 118 18 218 18   -  -
14768  24 124 224 324 124 24 224 24   -  -
14769  30 130 230 330 130 30 230 30 330 30
14770  36 136 236 336 136 36 236 36   -  -
14771  42 142 242 342 142 42 242 42   -  -
14772  48 148 248 348 148 48 248 48   -  -
14773  54 154 254 354 154 54 254 54   -  -
14774  60 160 260 360 160 60 260 60 360 60
14775  66 166 266 366 166 66 266 66   -  -
14776  72 172 272 372 172 72 272 72   -  -
14777  78 178 278 378 178 78 278 78   -  -
14778  84 184 284 384 184 84 284 84   -  -
14779  90 190 290 390 190 90 290 90 390 90
14780}
14781do_execsql_test joinD-515 {
14782  SELECT t1.*, t2.*, t3.*, t4.*
14783  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14784  RIGHT JOIN t3 ON t1.c=t3.c
14785  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14786  WHERE t3.y>0
14787  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14788} {
14789   3 103 203 303   -  - 203  3   -  -
14790   6 106 206 306 106  6 206  6   -  -
14791   9 109 209 309   -  - 209  9   -  -
14792  12 112 212 312 112 12 212 12   -  -
14793  15 115 215 315   -  - 215 15 315 15
14794  18 118 218 318 118 18 218 18   -  -
14795  21 121 221 321   -  - 221 21   -  -
14796  24 124 224 324 124 24 224 24   -  -
14797  27 127 227 327   -  - 227 27   -  -
14798  30 130 230 330 130 30 230 30 330 30
14799  33 133 233 333   -  - 233 33   -  -
14800  36 136 236 336 136 36 236 36   -  -
14801  39 139 239 339   -  - 239 39   -  -
14802  42 142 242 342 142 42 242 42   -  -
14803  45 145 245 345   -  - 245 45 345 45
14804  48 148 248 348 148 48 248 48   -  -
14805  51 151 251 351   -  - 251 51   -  -
14806  54 154 254 354 154 54 254 54   -  -
14807  57 157 257 357   -  - 257 57   -  -
14808  60 160 260 360 160 60 260 60 360 60
14809  63 163 263 363   -  - 263 63   -  -
14810  66 166 266 366 166 66 266 66   -  -
14811  69 169 269 369   -  - 269 69   -  -
14812  72 172 272 372 172 72 272 72   -  -
14813  75 175 275 375   -  - 275 75 375 75
14814  78 178 278 378 178 78 278 78   -  -
14815  81 181 281 381   -  - 281 81   -  -
14816  84 184 284 384 184 84 284 84   -  -
14817  87 187 287 387   -  - 287 87   -  -
14818  90 190 290 390 190 90 290 90 390 90
14819  93 193 293 393   -  - 293 93   -  -
14820}
14821do_execsql_test joinD-516 {
14822  SELECT t1.*, t2.*, t3.*, t4.*
14823  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14824  RIGHT JOIN t3 ON t1.c=t3.c
14825  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14826  WHERE t3.y>0 OR t3.y IS NULL
14827  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14828} {
14829   3 103 203 303   -  - 203  3   -  -
14830   6 106 206 306 106  6 206  6   -  -
14831   9 109 209 309   -  - 209  9   -  -
14832  12 112 212 312 112 12 212 12   -  -
14833  15 115 215 315   -  - 215 15 315 15
14834  18 118 218 318 118 18 218 18   -  -
14835  21 121 221 321   -  - 221 21   -  -
14836  24 124 224 324 124 24 224 24   -  -
14837  27 127 227 327   -  - 227 27   -  -
14838  30 130 230 330 130 30 230 30 330 30
14839  33 133 233 333   -  - 233 33   -  -
14840  36 136 236 336 136 36 236 36   -  -
14841  39 139 239 339   -  - 239 39   -  -
14842  42 142 242 342 142 42 242 42   -  -
14843  45 145 245 345   -  - 245 45 345 45
14844  48 148 248 348 148 48 248 48   -  -
14845  51 151 251 351   -  - 251 51   -  -
14846  54 154 254 354 154 54 254 54   -  -
14847  57 157 257 357   -  - 257 57   -  -
14848  60 160 260 360 160 60 260 60 360 60
14849  63 163 263 363   -  - 263 63   -  -
14850  66 166 266 366 166 66 266 66   -  -
14851  69 169 269 369   -  - 269 69   -  -
14852  72 172 272 372 172 72 272 72   -  -
14853  75 175 275 375   -  - 275 75 375 75
14854  78 178 278 378 178 78 278 78   -  -
14855  81 181 281 381   -  - 281 81   -  -
14856  84 184 284 384 184 84 284 84   -  -
14857  87 187 287 387   -  - 287 87   -  -
14858  90 190 290 390 190 90 290 90 390 90
14859  93 193 293 393   -  - 293 93   -  -
14860   -   -   -   -   -  -   -  - 300  0
14861   -   -   -   -   -  -   -  - 305  5
14862   -   -   -   -   -  -   -  - 310 10
14863   -   -   -   -   -  -   -  - 320 20
14864   -   -   -   -   -  -   -  - 325 25
14865   -   -   -   -   -  -   -  - 335 35
14866   -   -   -   -   -  -   -  - 340 40
14867   -   -   -   -   -  -   -  - 350 50
14868   -   -   -   -   -  -   -  - 355 55
14869   -   -   -   -   -  -   -  - 365 65
14870   -   -   -   -   -  -   -  - 370 70
14871   -   -   -   -   -  -   -  - 380 80
14872   -   -   -   -   -  -   -  - 385 85
14873   -   -   -   -   -  -   -  - 395 95
14874}
14875do_execsql_test joinD-517 {
14876  SELECT t1.*, t2.*, t3.*, t4.*
14877  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14878  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14879  FULL JOIN t4 ON t1.d=t4.d
14880  WHERE t4.z>0
14881  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14882} {
14883  15 115 215 315   -  - 215 15 315 15
14884  30 130 230 330 130 30 230 30 330 30
14885  45 145 245 345   -  - 245 45 345 45
14886  60 160 260 360 160 60 260 60 360 60
14887  75 175 275 375   -  - 275 75 375 75
14888  90 190 290 390 190 90 290 90 390 90
14889   -   -   -   -   -  -   -  - 305  5
14890   -   -   -   -   -  -   -  - 310 10
14891   -   -   -   -   -  -   -  - 320 20
14892   -   -   -   -   -  -   -  - 325 25
14893   -   -   -   -   -  -   -  - 335 35
14894   -   -   -   -   -  -   -  - 340 40
14895   -   -   -   -   -  -   -  - 350 50
14896   -   -   -   -   -  -   -  - 355 55
14897   -   -   -   -   -  -   -  - 365 65
14898   -   -   -   -   -  -   -  - 370 70
14899   -   -   -   -   -  -   -  - 380 80
14900   -   -   -   -   -  -   -  - 385 85
14901   -   -   -   -   -  -   -  - 395 95
14902}
14903do_execsql_test joinD-518 {
14904  SELECT t1.*, t2.*, t3.*, t4.*
14905  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14906  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14907  FULL JOIN t4 ON t1.d=t4.d
14908  WHERE t4.z IS NULL OR t4.z>0
14909  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14910} {
14911   3 103 203 303   -  - 203  3   -  -
14912   6 106 206 306 106  6 206  6   -  -
14913   9 109 209 309   -  - 209  9   -  -
14914  12 112 212 312 112 12 212 12   -  -
14915  15 115 215 315   -  - 215 15 315 15
14916  18 118 218 318 118 18 218 18   -  -
14917  21 121 221 321   -  - 221 21   -  -
14918  24 124 224 324 124 24 224 24   -  -
14919  27 127 227 327   -  - 227 27   -  -
14920  30 130 230 330 130 30 230 30 330 30
14921  33 133 233 333   -  - 233 33   -  -
14922  36 136 236 336 136 36 236 36   -  -
14923  39 139 239 339   -  - 239 39   -  -
14924  42 142 242 342 142 42 242 42   -  -
14925  45 145 245 345   -  - 245 45 345 45
14926  48 148 248 348 148 48 248 48   -  -
14927  51 151 251 351   -  - 251 51   -  -
14928  54 154 254 354 154 54 254 54   -  -
14929  57 157 257 357   -  - 257 57   -  -
14930  60 160 260 360 160 60 260 60 360 60
14931  63 163 263 363   -  - 263 63   -  -
14932  66 166 266 366 166 66 266 66   -  -
14933  69 169 269 369   -  - 269 69   -  -
14934  72 172 272 372 172 72 272 72   -  -
14935  75 175 275 375   -  - 275 75 375 75
14936  78 178 278 378 178 78 278 78   -  -
14937  81 181 281 381   -  - 281 81   -  -
14938  84 184 284 384 184 84 284 84   -  -
14939  87 187 287 387   -  - 287 87   -  -
14940  90 190 290 390 190 90 290 90 390 90
14941  93 193 293 393   -  - 293 93   -  -
14942   -   -   -   -   -  - 200  0   -  -
14943   -   -   -   -   -  -   -  - 305  5
14944   -   -   -   -   -  -   -  - 310 10
14945   -   -   -   -   -  -   -  - 320 20
14946   -   -   -   -   -  -   -  - 325 25
14947   -   -   -   -   -  -   -  - 335 35
14948   -   -   -   -   -  -   -  - 340 40
14949   -   -   -   -   -  -   -  - 350 50
14950   -   -   -   -   -  -   -  - 355 55
14951   -   -   -   -   -  -   -  - 365 65
14952   -   -   -   -   -  -   -  - 370 70
14953   -   -   -   -   -  -   -  - 380 80
14954   -   -   -   -   -  -   -  - 385 85
14955   -   -   -   -   -  -   -  - 395 95
14956}
14957do_execsql_test joinD-519 {
14958  SELECT t1.*, t2.*, t3.*, t4.*
14959  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14960  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14961  FULL JOIN t4 ON t1.d=t4.d
14962  WHERE t2.x>0 AND t4.z>0
14963  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14964} {
14965  30 130 230 330 130 30 230 30 330 30
14966  60 160 260 360 160 60 260 60 360 60
14967  90 190 290 390 190 90 290 90 390 90
14968}
14969do_execsql_test joinD-520 {
14970  SELECT t1.*, t2.*, t3.*, t4.*
14971  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14972  RIGHT JOIN t3 ON t1.c=t3.c
14973  FULL JOIN t4 ON t1.d=t4.d
14974  WHERE t4.z>0 AND t3.y>0
14975  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14976} {
14977  15 115 215 315   -  - 215 15 315 15
14978  30 130 230 330 130 30 230 30 330 30
14979  45 145 245 345   -  - 245 45 345 45
14980  60 160 260 360 160 60 260 60 360 60
14981  75 175 275 375   -  - 275 75 375 75
14982  90 190 290 390 190 90 290 90 390 90
14983}
14984do_execsql_test joinD-521 {
14985  SELECT t1.*, t2.*, t3.*, t4.*
14986  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14987  RIGHT JOIN t3 ON t1.c=t3.c
14988  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14989  WHERE t2.x>0 AND t3.y>0
14990  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14991} {
14992   6 106 206 306 106  6 206  6   -  -
14993  12 112 212 312 112 12 212 12   -  -
14994  18 118 218 318 118 18 218 18   -  -
14995  24 124 224 324 124 24 224 24   -  -
14996  30 130 230 330 130 30 230 30 330 30
14997  36 136 236 336 136 36 236 36   -  -
14998  42 142 242 342 142 42 242 42   -  -
14999  48 148 248 348 148 48 248 48   -  -
15000  54 154 254 354 154 54 254 54   -  -
15001  60 160 260 360 160 60 260 60 360 60
15002  66 166 266 366 166 66 266 66   -  -
15003  72 172 272 372 172 72 272 72   -  -
15004  78 178 278 378 178 78 278 78   -  -
15005  84 184 284 384 184 84 284 84   -  -
15006  90 190 290 390 190 90 290 90 390 90
15007}
15008do_execsql_test joinD-522 {
15009  SELECT t1.*, t2.*, t3.*, t4.*
15010  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15011  RIGHT JOIN t3 ON t1.c=t3.c
15012  FULL JOIN t4 ON t1.d=t4.d
15013  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
15014  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15015} {
15016  30 130 230 330 130 30 230 30 330 30
15017  60 160 260 360 160 60 260 60 360 60
15018  90 190 290 390 190 90 290 90 390 90
15019}
15020do_execsql_test joinD-523 {
15021  SELECT t1.*, t2.*, t3.*, t4.*
15022  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15023  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
15024  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
15025  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15026} {
15027   3 103 203 303   -  - 203  3   -  -
15028   6 106 206 306 106  6 206  6   -  -
15029   9 109 209 309   -  - 209  9   -  -
15030  12 112 212 312 112 12 212 12   -  -
15031  15 115 215 315   -  - 215 15 315 15
15032  18 118 218 318 118 18 218 18   -  -
15033  21 121 221 321   -  - 221 21   -  -
15034  24 124 224 324 124 24 224 24   -  -
15035  27 127 227 327   -  - 227 27   -  -
15036  30 130 230 330 130 30 230 30 330 30
15037  33 133 233 333   -  - 233 33   -  -
15038  36 136 236 336 136 36 236 36   -  -
15039  39 139 239 339   -  - 239 39   -  -
15040  42 142 242 342 142 42 242 42   -  -
15041  45 145 245 345   -  - 245 45 345 45
15042  48 148 248 348 148 48 248 48   -  -
15043  51 151 251 351   -  - 251 51   -  -
15044  54 154 254 354 154 54 254 54   -  -
15045  57 157 257 357   -  - 257 57   -  -
15046  60 160 260 360 160 60 260 60 360 60
15047  63 163 263 363   -  - 263 63   -  -
15048  66 166 266 366 166 66 266 66   -  -
15049  69 169 269 369   -  - 269 69   -  -
15050  72 172 272 372 172 72 272 72   -  -
15051  75 175 275 375   -  - 275 75 375 75
15052  78 178 278 378 178 78 278 78   -  -
15053  81 181 281 381   -  - 281 81   -  -
15054  84 184 284 384 184 84 284 84   -  -
15055  87 187 287 387   -  - 287 87   -  -
15056  90 190 290 390 190 90 290 90 390 90
15057  93 193 293 393   -  - 293 93   -  -
15058   -   -   -   -   -  - 200  0   -  -
15059   -   -   -   -   -  -   -  - 300  0
15060   -   -   -   -   -  -   -  - 305  5
15061   -   -   -   -   -  -   -  - 310 10
15062   -   -   -   -   -  -   -  - 320 20
15063   -   -   -   -   -  -   -  - 325 25
15064   -   -   -   -   -  -   -  - 335 35
15065   -   -   -   -   -  -   -  - 340 40
15066   -   -   -   -   -  -   -  - 350 50
15067   -   -   -   -   -  -   -  - 355 55
15068   -   -   -   -   -  -   -  - 365 65
15069   -   -   -   -   -  -   -  - 370 70
15070   -   -   -   -   -  -   -  - 380 80
15071   -   -   -   -   -  -   -  - 385 85
15072   -   -   -   -   -  -   -  - 395 95
15073}
15074do_execsql_test joinD-524 {
15075  SELECT t1.*, t2.*, t3.*, t4.*
15076  FROM t1 LEFT JOIN t2 ON t2.x>0
15077  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
15078  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
15079  WHERE t1.b IS NOT DISTINCT FROM t2.b
15080  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15081} {
15082   6 106 206 306 106  6 206  6   -  -
15083  12 112 212 312 112 12 212 12   -  -
15084  18 118 218 318 118 18 218 18   -  -
15085  24 124 224 324 124 24 224 24   -  -
15086  30 130 230 330 130 30 230 30 330 30
15087  36 136 236 336 136 36 236 36   -  -
15088  42 142 242 342 142 42 242 42   -  -
15089  48 148 248 348 148 48 248 48   -  -
15090  54 154 254 354 154 54 254 54   -  -
15091  60 160 260 360 160 60 260 60 360 60
15092  66 166 266 366 166 66 266 66   -  -
15093  72 172 272 372 172 72 272 72   -  -
15094  78 178 278 378 178 78 278 78   -  -
15095  84 184 284 384 184 84 284 84   -  -
15096  90 190 290 390 190 90 290 90 390 90
15097   -   -   -   -   -  - 200  0   -  -
15098   -   -   -   -   -  -   -  - 300  0
15099   -   -   -   -   -  -   -  - 305  5
15100   -   -   -   -   -  -   -  - 310 10
15101   -   -   -   -   -  -   -  - 320 20
15102   -   -   -   -   -  -   -  - 325 25
15103   -   -   -   -   -  -   -  - 335 35
15104   -   -   -   -   -  -   -  - 340 40
15105   -   -   -   -   -  -   -  - 350 50
15106   -   -   -   -   -  -   -  - 355 55
15107   -   -   -   -   -  -   -  - 365 65
15108   -   -   -   -   -  -   -  - 370 70
15109   -   -   -   -   -  -   -  - 380 80
15110   -   -   -   -   -  -   -  - 385 85
15111   -   -   -   -   -  -   -  - 395 95
15112}
15113do_execsql_test joinD-525 {
15114  SELECT t1.*, t2.*, t3.*, t4.*
15115  FROM t1 LEFT JOIN t2 ON t2.x>0
15116  RIGHT JOIN t3 ON t3.y>0
15117  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
15118  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
15119  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15120} {
15121   6 106 206 306 106  6 206  6   -  -
15122  12 112 212 312 112 12 212 12   -  -
15123  18 118 218 318 118 18 218 18   -  -
15124  24 124 224 324 124 24 224 24   -  -
15125  30 130 230 330 130 30 230 30 330 30
15126  36 136 236 336 136 36 236 36   -  -
15127  42 142 242 342 142 42 242 42   -  -
15128  48 148 248 348 148 48 248 48   -  -
15129  54 154 254 354 154 54 254 54   -  -
15130  60 160 260 360 160 60 260 60 360 60
15131  66 166 266 366 166 66 266 66   -  -
15132  72 172 272 372 172 72 272 72   -  -
15133  78 178 278 378 178 78 278 78   -  -
15134  84 184 284 384 184 84 284 84   -  -
15135  90 190 290 390 190 90 290 90 390 90
15136   -   -   -   -   -  -   -  - 300  0
15137}
15138do_execsql_test joinD-526 {
15139  SELECT t1.*, t2.*, t3.*, t4.*
15140  FROM t1 LEFT JOIN t2 ON t2.x>0
15141  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
15142  FULL JOIN t4 ON t4.z>0
15143  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
15144  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15145} {
15146  30 130 230 330 130 30 230 30 330 30
15147  60 160 260 360 160 60 260 60 360 60
15148  90 190 290 390 190 90 290 90 390 90
15149}
15150do_execsql_test joinD-527 {
15151  SELECT t1.*, t2.*, t3.*, t4.*
15152  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
15153  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
15154  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
15155  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15156} {
15157   3 103 203 303   -  - 203  3   -  -
15158   6 106 206 306 106  6 206  6   -  -
15159   9 109 209 309   -  - 209  9   -  -
15160  12 112 212 312 112 12 212 12   -  -
15161  15 115 215 315   -  - 215 15 315 15
15162  18 118 218 318 118 18 218 18   -  -
15163  21 121 221 321   -  - 221 21   -  -
15164  24 124 224 324 124 24 224 24   -  -
15165  27 127 227 327   -  - 227 27   -  -
15166  30 130 230 330 130 30 230 30 330 30
15167  33 133 233 333   -  - 233 33   -  -
15168  36 136 236 336 136 36 236 36   -  -
15169  39 139 239 339   -  - 239 39   -  -
15170  42 142 242 342 142 42 242 42   -  -
15171  45 145 245 345   -  - 245 45 345 45
15172  48 148 248 348 148 48 248 48   -  -
15173  51 151 251 351   -  - 251 51   -  -
15174  54 154 254 354 154 54 254 54   -  -
15175  57 157 257 357   -  - 257 57   -  -
15176  60 160 260 360 160 60 260 60 360 60
15177  63 163 263 363   -  - 263 63   -  -
15178  66 166 266 366 166 66 266 66   -  -
15179  69 169 269 369   -  - 269 69   -  -
15180  72 172 272 372 172 72 272 72   -  -
15181  75 175 275 375   -  - 275 75 375 75
15182  78 178 278 378 178 78 278 78   -  -
15183  81 181 281 381   -  - 281 81   -  -
15184  84 184 284 384 184 84 284 84   -  -
15185  87 187 287 387   -  - 287 87   -  -
15186  90 190 290 390 190 90 290 90 390 90
15187  93 193 293 393   -  - 293 93   -  -
15188   -   -   -   -   -  - 200  0   -  -
15189   -   -   -   -   -  -   -  - 300  0
15190   -   -   -   -   -  -   -  - 305  5
15191   -   -   -   -   -  -   -  - 310 10
15192   -   -   -   -   -  -   -  - 320 20
15193   -   -   -   -   -  -   -  - 325 25
15194   -   -   -   -   -  -   -  - 335 35
15195   -   -   -   -   -  -   -  - 340 40
15196   -   -   -   -   -  -   -  - 350 50
15197   -   -   -   -   -  -   -  - 355 55
15198   -   -   -   -   -  -   -  - 365 65
15199   -   -   -   -   -  -   -  - 370 70
15200   -   -   -   -   -  -   -  - 380 80
15201   -   -   -   -   -  -   -  - 385 85
15202   -   -   -   -   -  -   -  - 395 95
15203}
15204do_execsql_test joinD-528 {
15205  SELECT t1.*, t2.*, t3.*, t4.*
15206  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15207  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
15208  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
15209  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15210} {
15211   3 103 203 303   -  - 203  3   -  -
15212   6 106 206 306 106  6 206  6   -  -
15213   9 109 209 309   -  - 209  9   -  -
15214  12 112 212 312 112 12 212 12   -  -
15215  15 115 215 315   -  - 215 15 315 15
15216  18 118 218 318 118 18 218 18   -  -
15217  21 121 221 321   -  - 221 21   -  -
15218  24 124 224 324 124 24 224 24   -  -
15219  27 127 227 327   -  - 227 27   -  -
15220  30 130 230 330 130 30 230 30 330 30
15221  33 133 233 333   -  - 233 33   -  -
15222  36 136 236 336 136 36 236 36   -  -
15223  39 139 239 339   -  - 239 39   -  -
15224  42 142 242 342 142 42 242 42   -  -
15225  45 145 245 345   -  - 245 45 345 45
15226  48 148 248 348 148 48 248 48   -  -
15227  51 151 251 351   -  - 251 51   -  -
15228  54 154 254 354 154 54 254 54   -  -
15229  57 157 257 357   -  - 257 57   -  -
15230  60 160 260 360 160 60 260 60 360 60
15231  63 163 263 363   -  - 263 63   -  -
15232  66 166 266 366 166 66 266 66   -  -
15233  69 169 269 369   -  - 269 69   -  -
15234  72 172 272 372 172 72 272 72   -  -
15235  75 175 275 375   -  - 275 75 375 75
15236  78 178 278 378 178 78 278 78   -  -
15237  81 181 281 381   -  - 281 81   -  -
15238  84 184 284 384 184 84 284 84   -  -
15239  87 187 287 387   -  - 287 87   -  -
15240  90 190 290 390 190 90 290 90 390 90
15241  93 193 293 393   -  - 293 93   -  -
15242   -   -   -   -   -  - 200  0   -  -
15243   -   -   -   -   -  -   -  - 300  0
15244   -   -   -   -   -  -   -  - 305  5
15245   -   -   -   -   -  -   -  - 310 10
15246   -   -   -   -   -  -   -  - 320 20
15247   -   -   -   -   -  -   -  - 325 25
15248   -   -   -   -   -  -   -  - 335 35
15249   -   -   -   -   -  -   -  - 340 40
15250   -   -   -   -   -  -   -  - 350 50
15251   -   -   -   -   -  -   -  - 355 55
15252   -   -   -   -   -  -   -  - 365 65
15253   -   -   -   -   -  -   -  - 370 70
15254   -   -   -   -   -  -   -  - 380 80
15255   -   -   -   -   -  -   -  - 385 85
15256   -   -   -   -   -  -   -  - 395 95
15257}
15258do_execsql_test joinD-529 {
15259  SELECT t1.*, t2.*, t3.*, t4.*
15260  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15261  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15262  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15263  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15264} {
15265   5 105 205 305   -  -   -  - 305  5
15266  10 110 210 310 110 10   -  - 310 10
15267  15 115 215 315   -  - 215 15 315 15
15268  20 120 220 320 120 20   -  - 320 20
15269  25 125 225 325   -  -   -  - 325 25
15270  30 130 230 330 130 30 230 30 330 30
15271  35 135 235 335   -  -   -  - 335 35
15272  40 140 240 340 140 40   -  - 340 40
15273  45 145 245 345   -  - 245 45 345 45
15274  50 150 250 350 150 50   -  - 350 50
15275  55 155 255 355   -  -   -  - 355 55
15276  60 160 260 360 160 60 260 60 360 60
15277  65 165 265 365   -  -   -  - 365 65
15278  70 170 270 370 170 70   -  - 370 70
15279  75 175 275 375   -  - 275 75 375 75
15280  80 180 280 380 180 80   -  - 380 80
15281  85 185 285 385   -  -   -  - 385 85
15282  90 190 290 390 190 90 290 90 390 90
15283  95 195 295 395   -  -   -  - 395 95
15284}
15285do_execsql_test joinD-530 {
15286  SELECT t1.*, t2.*, t3.*, t4.*
15287  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15288  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15289  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15290  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15291} {
15292   5 105 205 305   -  -   -  - 305  5
15293  10 110 210 310 110 10   -  - 310 10
15294  15 115 215 315   -  - 215 15 315 15
15295  20 120 220 320 120 20   -  - 320 20
15296  25 125 225 325   -  -   -  - 325 25
15297  30 130 230 330 130 30 230 30 330 30
15298  35 135 235 335   -  -   -  - 335 35
15299  40 140 240 340 140 40   -  - 340 40
15300  45 145 245 345   -  - 245 45 345 45
15301  50 150 250 350 150 50   -  - 350 50
15302  55 155 255 355   -  -   -  - 355 55
15303  60 160 260 360 160 60 260 60 360 60
15304  65 165 265 365   -  -   -  - 365 65
15305  70 170 270 370 170 70   -  - 370 70
15306  75 175 275 375   -  - 275 75 375 75
15307  80 180 280 380 180 80   -  - 380 80
15308  85 185 285 385   -  -   -  - 385 85
15309  90 190 290 390 190 90 290 90 390 90
15310  95 195 295 395   -  -   -  - 395 95
15311}
15312do_execsql_test joinD-531 {
15313  SELECT t1.*, t2.*, t3.*, t4.*
15314  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15315  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15316  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15317  WHERE t2.x>0
15318  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15319} {
15320  10 110 210 310 110 10   -  - 310 10
15321  20 120 220 320 120 20   -  - 320 20
15322  30 130 230 330 130 30 230 30 330 30
15323  40 140 240 340 140 40   -  - 340 40
15324  50 150 250 350 150 50   -  - 350 50
15325  60 160 260 360 160 60 260 60 360 60
15326  70 170 270 370 170 70   -  - 370 70
15327  80 180 280 380 180 80   -  - 380 80
15328  90 190 290 390 190 90 290 90 390 90
15329}
15330do_execsql_test joinD-532 {
15331  SELECT t1.*, t2.*, t3.*, t4.*
15332  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15333  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15334  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15335  WHERE (t2.x>0 OR t2.x IS NULL)
15336  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15337} {
15338   5 105 205 305   -  -   -  - 305  5
15339  10 110 210 310 110 10   -  - 310 10
15340  15 115 215 315   -  - 215 15 315 15
15341  20 120 220 320 120 20   -  - 320 20
15342  25 125 225 325   -  -   -  - 325 25
15343  30 130 230 330 130 30 230 30 330 30
15344  35 135 235 335   -  -   -  - 335 35
15345  40 140 240 340 140 40   -  - 340 40
15346  45 145 245 345   -  - 245 45 345 45
15347  50 150 250 350 150 50   -  - 350 50
15348  55 155 255 355   -  -   -  - 355 55
15349  60 160 260 360 160 60 260 60 360 60
15350  65 165 265 365   -  -   -  - 365 65
15351  70 170 270 370 170 70   -  - 370 70
15352  75 175 275 375   -  - 275 75 375 75
15353  80 180 280 380 180 80   -  - 380 80
15354  85 185 285 385   -  -   -  - 385 85
15355  90 190 290 390 190 90 290 90 390 90
15356  95 195 295 395   -  -   -  - 395 95
15357}
15358do_execsql_test joinD-533 {
15359  SELECT t1.*, t2.*, t3.*, t4.*
15360  FROM t1 LEFT JOIN t2 ON true
15361  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15362  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15363  WHERE t1.b=t2.b AND t2.x>0
15364  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15365} {
15366  10 110 210 310 110 10   -  - 310 10
15367  20 120 220 320 120 20   -  - 320 20
15368  30 130 230 330 130 30 230 30 330 30
15369  40 140 240 340 140 40   -  - 340 40
15370  50 150 250 350 150 50   -  - 350 50
15371  60 160 260 360 160 60 260 60 360 60
15372  70 170 270 370 170 70   -  - 370 70
15373  80 180 280 380 180 80   -  - 380 80
15374  90 190 290 390 190 90 290 90 390 90
15375}
15376do_execsql_test joinD-534 {
15377  SELECT t1.*, t2.*, t3.*, t4.*
15378  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15379  FULL JOIN t3 ON t1.c=t3.c
15380  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15381  WHERE t3.y>0
15382  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15383} {
15384  15 115 215 315   -  - 215 15 315 15
15385  30 130 230 330 130 30 230 30 330 30
15386  45 145 245 345   -  - 245 45 345 45
15387  60 160 260 360 160 60 260 60 360 60
15388  75 175 275 375   -  - 275 75 375 75
15389  90 190 290 390 190 90 290 90 390 90
15390}
15391do_execsql_test joinD-535 {
15392  SELECT t1.*, t2.*, t3.*, t4.*
15393  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15394  FULL JOIN t3 ON t1.c=t3.c
15395  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15396  WHERE t3.y>0 OR t3.y IS NULL
15397  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15398} {
15399   5 105 205 305   -  -   -  - 305  5
15400  10 110 210 310 110 10   -  - 310 10
15401  15 115 215 315   -  - 215 15 315 15
15402  20 120 220 320 120 20   -  - 320 20
15403  25 125 225 325   -  -   -  - 325 25
15404  30 130 230 330 130 30 230 30 330 30
15405  35 135 235 335   -  -   -  - 335 35
15406  40 140 240 340 140 40   -  - 340 40
15407  45 145 245 345   -  - 245 45 345 45
15408  50 150 250 350 150 50   -  - 350 50
15409  55 155 255 355   -  -   -  - 355 55
15410  60 160 260 360 160 60 260 60 360 60
15411  65 165 265 365   -  -   -  - 365 65
15412  70 170 270 370 170 70   -  - 370 70
15413  75 175 275 375   -  - 275 75 375 75
15414  80 180 280 380 180 80   -  - 380 80
15415  85 185 285 385   -  -   -  - 385 85
15416  90 190 290 390 190 90 290 90 390 90
15417  95 195 295 395   -  -   -  - 395 95
15418}
15419do_execsql_test joinD-536 {
15420  SELECT t1.*, t2.*, t3.*, t4.*
15421  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15422  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15423  INNER JOIN t4 ON t1.d=t4.d
15424  WHERE t4.z>0
15425  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15426} {
15427   5 105 205 305   -  -   -  - 305  5
15428  10 110 210 310 110 10   -  - 310 10
15429  15 115 215 315   -  - 215 15 315 15
15430  20 120 220 320 120 20   -  - 320 20
15431  25 125 225 325   -  -   -  - 325 25
15432  30 130 230 330 130 30 230 30 330 30
15433  35 135 235 335   -  -   -  - 335 35
15434  40 140 240 340 140 40   -  - 340 40
15435  45 145 245 345   -  - 245 45 345 45
15436  50 150 250 350 150 50   -  - 350 50
15437  55 155 255 355   -  -   -  - 355 55
15438  60 160 260 360 160 60 260 60 360 60
15439  65 165 265 365   -  -   -  - 365 65
15440  70 170 270 370 170 70   -  - 370 70
15441  75 175 275 375   -  - 275 75 375 75
15442  80 180 280 380 180 80   -  - 380 80
15443  85 185 285 385   -  -   -  - 385 85
15444  90 190 290 390 190 90 290 90 390 90
15445  95 195 295 395   -  -   -  - 395 95
15446}
15447do_execsql_test joinD-537 {
15448  SELECT t1.*, t2.*, t3.*, t4.*
15449  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15450  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15451  INNER JOIN t4 ON t1.d=t4.d
15452  WHERE t4.z IS NULL OR t4.z>0
15453  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15454} {
15455   5 105 205 305   -  -   -  - 305  5
15456  10 110 210 310 110 10   -  - 310 10
15457  15 115 215 315   -  - 215 15 315 15
15458  20 120 220 320 120 20   -  - 320 20
15459  25 125 225 325   -  -   -  - 325 25
15460  30 130 230 330 130 30 230 30 330 30
15461  35 135 235 335   -  -   -  - 335 35
15462  40 140 240 340 140 40   -  - 340 40
15463  45 145 245 345   -  - 245 45 345 45
15464  50 150 250 350 150 50   -  - 350 50
15465  55 155 255 355   -  -   -  - 355 55
15466  60 160 260 360 160 60 260 60 360 60
15467  65 165 265 365   -  -   -  - 365 65
15468  70 170 270 370 170 70   -  - 370 70
15469  75 175 275 375   -  - 275 75 375 75
15470  80 180 280 380 180 80   -  - 380 80
15471  85 185 285 385   -  -   -  - 385 85
15472  90 190 290 390 190 90 290 90 390 90
15473  95 195 295 395   -  -   -  - 395 95
15474}
15475do_execsql_test joinD-538 {
15476  SELECT t1.*, t2.*, t3.*, t4.*
15477  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15478  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15479  INNER JOIN t4 ON t1.d=t4.d
15480  WHERE t2.x>0 AND t4.z>0
15481  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15482} {
15483  10 110 210 310 110 10   -  - 310 10
15484  20 120 220 320 120 20   -  - 320 20
15485  30 130 230 330 130 30 230 30 330 30
15486  40 140 240 340 140 40   -  - 340 40
15487  50 150 250 350 150 50   -  - 350 50
15488  60 160 260 360 160 60 260 60 360 60
15489  70 170 270 370 170 70   -  - 370 70
15490  80 180 280 380 180 80   -  - 380 80
15491  90 190 290 390 190 90 290 90 390 90
15492}
15493do_execsql_test joinD-539 {
15494  SELECT t1.*, t2.*, t3.*, t4.*
15495  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15496  FULL JOIN t3 ON t1.c=t3.c
15497  INNER JOIN t4 ON t1.d=t4.d
15498  WHERE t4.z>0 AND t3.y>0
15499  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15500} {
15501  15 115 215 315   -  - 215 15 315 15
15502  30 130 230 330 130 30 230 30 330 30
15503  45 145 245 345   -  - 245 45 345 45
15504  60 160 260 360 160 60 260 60 360 60
15505  75 175 275 375   -  - 275 75 375 75
15506  90 190 290 390 190 90 290 90 390 90
15507}
15508do_execsql_test joinD-540 {
15509  SELECT t1.*, t2.*, t3.*, t4.*
15510  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15511  FULL JOIN t3 ON t1.c=t3.c
15512  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15513  WHERE t2.x>0 AND t3.y>0
15514  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15515} {
15516  30 130 230 330 130 30 230 30 330 30
15517  60 160 260 360 160 60 260 60 360 60
15518  90 190 290 390 190 90 290 90 390 90
15519}
15520do_execsql_test joinD-541 {
15521  SELECT t1.*, t2.*, t3.*, t4.*
15522  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15523  FULL JOIN t3 ON t1.c=t3.c
15524  INNER JOIN t4 ON t1.d=t4.d
15525  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
15526  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15527} {
15528  30 130 230 330 130 30 230 30 330 30
15529  60 160 260 360 160 60 260 60 360 60
15530  90 190 290 390 190 90 290 90 390 90
15531}
15532do_execsql_test joinD-542 {
15533  SELECT t1.*, t2.*, t3.*, t4.*
15534  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15535  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
15536  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
15537  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15538} {
15539   5 105 205 305   -  -   -  - 305  5
15540  10 110 210 310 110 10   -  - 310 10
15541  15 115 215 315   -  - 215 15 315 15
15542  20 120 220 320 120 20   -  - 320 20
15543  25 125 225 325   -  -   -  - 325 25
15544  30 130 230 330 130 30 230 30 330 30
15545  35 135 235 335   -  -   -  - 335 35
15546  40 140 240 340 140 40   -  - 340 40
15547  45 145 245 345   -  - 245 45 345 45
15548  50 150 250 350 150 50   -  - 350 50
15549  55 155 255 355   -  -   -  - 355 55
15550  60 160 260 360 160 60 260 60 360 60
15551  65 165 265 365   -  -   -  - 365 65
15552  70 170 270 370 170 70   -  - 370 70
15553  75 175 275 375   -  - 275 75 375 75
15554  80 180 280 380 180 80   -  - 380 80
15555  85 185 285 385   -  -   -  - 385 85
15556  90 190 290 390 190 90 290 90 390 90
15557  95 195 295 395   -  -   -  - 395 95
15558}
15559do_execsql_test joinD-543 {
15560  SELECT t1.*, t2.*, t3.*, t4.*
15561  FROM t1 LEFT JOIN t2 ON t2.x>0
15562  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
15563  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
15564  WHERE t1.b IS NOT DISTINCT FROM t2.b
15565  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15566} {
15567  10 110 210 310 110 10   -  - 310 10
15568  20 120 220 320 120 20   -  - 320 20
15569  30 130 230 330 130 30 230 30 330 30
15570  40 140 240 340 140 40   -  - 340 40
15571  50 150 250 350 150 50   -  - 350 50
15572  60 160 260 360 160 60 260 60 360 60
15573  70 170 270 370 170 70   -  - 370 70
15574  80 180 280 380 180 80   -  - 380 80
15575  90 190 290 390 190 90 290 90 390 90
15576}
15577do_execsql_test joinD-544 {
15578  SELECT t1.*, t2.*, t3.*, t4.*
15579  FROM t1 LEFT JOIN t2 ON t2.x>0
15580  FULL JOIN t3 ON t3.y>0
15581  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
15582  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
15583  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15584} {
15585  30 130 230 330 130 30 230 30 330 30
15586  60 160 260 360 160 60 260 60 360 60
15587  90 190 290 390 190 90 290 90 390 90
15588}
15589do_execsql_test joinD-545 {
15590  SELECT t1.*, t2.*, t3.*, t4.*
15591  FROM t1 LEFT JOIN t2 ON t2.x>0
15592  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
15593  INNER JOIN t4 ON t4.z>0
15594  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
15595  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15596} {
15597  10 110 210 310 110 10   -  - 310 10
15598  20 120 220 320 120 20   -  - 320 20
15599  30 130 230 330 130 30 230 30 330 30
15600  40 140 240 340 140 40   -  - 340 40
15601  50 150 250 350 150 50   -  - 350 50
15602  60 160 260 360 160 60 260 60 360 60
15603  70 170 270 370 170 70   -  - 370 70
15604  80 180 280 380 180 80   -  - 380 80
15605  90 190 290 390 190 90 290 90 390 90
15606}
15607do_execsql_test joinD-546 {
15608  SELECT t1.*, t2.*, t3.*, t4.*
15609  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
15610  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15611  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15612  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15613} {
15614   5 105 205 305   -  -   -  - 305  5
15615  10 110 210 310 110 10   -  - 310 10
15616  15 115 215 315   -  - 215 15 315 15
15617  20 120 220 320 120 20   -  - 320 20
15618  25 125 225 325   -  -   -  - 325 25
15619  30 130 230 330 130 30 230 30 330 30
15620  35 135 235 335   -  -   -  - 335 35
15621  40 140 240 340 140 40   -  - 340 40
15622  45 145 245 345   -  - 245 45 345 45
15623  50 150 250 350 150 50   -  - 350 50
15624  55 155 255 355   -  -   -  - 355 55
15625  60 160 260 360 160 60 260 60 360 60
15626  65 165 265 365   -  -   -  - 365 65
15627  70 170 270 370 170 70   -  - 370 70
15628  75 175 275 375   -  - 275 75 375 75
15629  80 180 280 380 180 80   -  - 380 80
15630  85 185 285 385   -  -   -  - 385 85
15631  90 190 290 390 190 90 290 90 390 90
15632  95 195 295 395   -  -   -  - 395 95
15633}
15634do_execsql_test joinD-547 {
15635  SELECT t1.*, t2.*, t3.*, t4.*
15636  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15637  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15638  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15639  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15640} {
15641   0 100 200 300   -  -   -  -   -  -
15642   1 101 201 301   -  -   -  -   -  -
15643   2 102 202 302 102  2   -  -   -  -
15644   3 103 203 303   -  - 203  3   -  -
15645   4 104 204 304 104  4   -  -   -  -
15646   5 105 205 305   -  -   -  - 305  5
15647   6 106 206 306 106  6 206  6   -  -
15648   7 107 207 307   -  -   -  -   -  -
15649   8 108 208 308 108  8   -  -   -  -
15650   9 109 209 309   -  - 209  9   -  -
15651  10 110 210 310 110 10   -  - 310 10
15652  11 111 211 311   -  -   -  -   -  -
15653  12 112 212 312 112 12 212 12   -  -
15654  13 113 213 313   -  -   -  -   -  -
15655  14 114 214 314 114 14   -  -   -  -
15656  15 115 215 315   -  - 215 15 315 15
15657  16 116 216 316 116 16   -  -   -  -
15658  17 117 217 317   -  -   -  -   -  -
15659  18 118 218 318 118 18 218 18   -  -
15660  19 119 219 319   -  -   -  -   -  -
15661  20 120 220 320 120 20   -  - 320 20
15662  21 121 221 321   -  - 221 21   -  -
15663  22 122 222 322 122 22   -  -   -  -
15664  23 123 223 323   -  -   -  -   -  -
15665  24 124 224 324 124 24 224 24   -  -
15666  25 125 225 325   -  -   -  - 325 25
15667  26 126 226 326 126 26   -  -   -  -
15668  27 127 227 327   -  - 227 27   -  -
15669  28 128 228 328 128 28   -  -   -  -
15670  29 129 229 329   -  -   -  -   -  -
15671  30 130 230 330 130 30 230 30 330 30
15672  31 131 231 331   -  -   -  -   -  -
15673  32 132 232 332 132 32   -  -   -  -
15674  33 133 233 333   -  - 233 33   -  -
15675  34 134 234 334 134 34   -  -   -  -
15676  35 135 235 335   -  -   -  - 335 35
15677  36 136 236 336 136 36 236 36   -  -
15678  37 137 237 337   -  -   -  -   -  -
15679  38 138 238 338 138 38   -  -   -  -
15680  39 139 239 339   -  - 239 39   -  -
15681  40 140 240 340 140 40   -  - 340 40
15682  41 141 241 341   -  -   -  -   -  -
15683  42 142 242 342 142 42 242 42   -  -
15684  43 143 243 343   -  -   -  -   -  -
15685  44 144 244 344 144 44   -  -   -  -
15686  45 145 245 345   -  - 245 45 345 45
15687  46 146 246 346 146 46   -  -   -  -
15688  47 147 247 347   -  -   -  -   -  -
15689  48 148 248 348 148 48 248 48   -  -
15690  49 149 249 349   -  -   -  -   -  -
15691  50 150 250 350 150 50   -  - 350 50
15692  51 151 251 351   -  - 251 51   -  -
15693  52 152 252 352 152 52   -  -   -  -
15694  53 153 253 353   -  -   -  -   -  -
15695  54 154 254 354 154 54 254 54   -  -
15696  55 155 255 355   -  -   -  - 355 55
15697  56 156 256 356 156 56   -  -   -  -
15698  57 157 257 357   -  - 257 57   -  -
15699  58 158 258 358 158 58   -  -   -  -
15700  59 159 259 359   -  -   -  -   -  -
15701  60 160 260 360 160 60 260 60 360 60
15702  61 161 261 361   -  -   -  -   -  -
15703  62 162 262 362 162 62   -  -   -  -
15704  63 163 263 363   -  - 263 63   -  -
15705  64 164 264 364 164 64   -  -   -  -
15706  65 165 265 365   -  -   -  - 365 65
15707  66 166 266 366 166 66 266 66   -  -
15708  67 167 267 367   -  -   -  -   -  -
15709  68 168 268 368 168 68   -  -   -  -
15710  69 169 269 369   -  - 269 69   -  -
15711  70 170 270 370 170 70   -  - 370 70
15712  71 171 271 371   -  -   -  -   -  -
15713  72 172 272 372 172 72 272 72   -  -
15714  73 173 273 373   -  -   -  -   -  -
15715  74 174 274 374 174 74   -  -   -  -
15716  75 175 275 375   -  - 275 75 375 75
15717  76 176 276 376 176 76   -  -   -  -
15718  77 177 277 377   -  -   -  -   -  -
15719  78 178 278 378 178 78 278 78   -  -
15720  79 179 279 379   -  -   -  -   -  -
15721  80 180 280 380 180 80   -  - 380 80
15722  81 181 281 381   -  - 281 81   -  -
15723  82 182 282 382 182 82   -  -   -  -
15724  83 183 283 383   -  -   -  -   -  -
15725  84 184 284 384 184 84 284 84   -  -
15726  85 185 285 385   -  -   -  - 385 85
15727  86 186 286 386 186 86   -  -   -  -
15728  87 187 287 387   -  - 287 87   -  -
15729  88 188 288 388 188 88   -  -   -  -
15730  89 189 289 389   -  -   -  -   -  -
15731  90 190 290 390 190 90 290 90 390 90
15732  91 191 291 391   -  -   -  -   -  -
15733  92 192 292 392 192 92   -  -   -  -
15734  93 193 293 393   -  - 293 93   -  -
15735  94 194 294 394 194 94   -  -   -  -
15736  95 195 295 395   -  -   -  - 395 95
15737  96   - 296 396   -  -   -  -   -  -
15738  97 197   - 397   -  -   -  -   -  -
15739  98 198 298   -   -  -   -  -   -  -
15740  99   -   -   -   -  -   -  -   -  -
15741   -   -   -   -   -  - 200  0   -  -
15742}
15743do_execsql_test joinD-548 {
15744  SELECT t1.*, t2.*, t3.*, t4.*
15745  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15746  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15747  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15748  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15749} {
15750   0 100 200 300   -  -   -  -   -  -
15751   1 101 201 301   -  -   -  -   -  -
15752   2 102 202 302 102  2   -  -   -  -
15753   3 103 203 303   -  - 203  3   -  -
15754   4 104 204 304 104  4   -  -   -  -
15755   5 105 205 305   -  -   -  - 305  5
15756   6 106 206 306 106  6 206  6   -  -
15757   7 107 207 307   -  -   -  -   -  -
15758   8 108 208 308 108  8   -  -   -  -
15759   9 109 209 309   -  - 209  9   -  -
15760  10 110 210 310 110 10   -  - 310 10
15761  11 111 211 311   -  -   -  -   -  -
15762  12 112 212 312 112 12 212 12   -  -
15763  13 113 213 313   -  -   -  -   -  -
15764  14 114 214 314 114 14   -  -   -  -
15765  15 115 215 315   -  - 215 15 315 15
15766  16 116 216 316 116 16   -  -   -  -
15767  17 117 217 317   -  -   -  -   -  -
15768  18 118 218 318 118 18 218 18   -  -
15769  19 119 219 319   -  -   -  -   -  -
15770  20 120 220 320 120 20   -  - 320 20
15771  21 121 221 321   -  - 221 21   -  -
15772  22 122 222 322 122 22   -  -   -  -
15773  23 123 223 323   -  -   -  -   -  -
15774  24 124 224 324 124 24 224 24   -  -
15775  25 125 225 325   -  -   -  - 325 25
15776  26 126 226 326 126 26   -  -   -  -
15777  27 127 227 327   -  - 227 27   -  -
15778  28 128 228 328 128 28   -  -   -  -
15779  29 129 229 329   -  -   -  -   -  -
15780  30 130 230 330 130 30 230 30 330 30
15781  31 131 231 331   -  -   -  -   -  -
15782  32 132 232 332 132 32   -  -   -  -
15783  33 133 233 333   -  - 233 33   -  -
15784  34 134 234 334 134 34   -  -   -  -
15785  35 135 235 335   -  -   -  - 335 35
15786  36 136 236 336 136 36 236 36   -  -
15787  37 137 237 337   -  -   -  -   -  -
15788  38 138 238 338 138 38   -  -   -  -
15789  39 139 239 339   -  - 239 39   -  -
15790  40 140 240 340 140 40   -  - 340 40
15791  41 141 241 341   -  -   -  -   -  -
15792  42 142 242 342 142 42 242 42   -  -
15793  43 143 243 343   -  -   -  -   -  -
15794  44 144 244 344 144 44   -  -   -  -
15795  45 145 245 345   -  - 245 45 345 45
15796  46 146 246 346 146 46   -  -   -  -
15797  47 147 247 347   -  -   -  -   -  -
15798  48 148 248 348 148 48 248 48   -  -
15799  49 149 249 349   -  -   -  -   -  -
15800  50 150 250 350 150 50   -  - 350 50
15801  51 151 251 351   -  - 251 51   -  -
15802  52 152 252 352 152 52   -  -   -  -
15803  53 153 253 353   -  -   -  -   -  -
15804  54 154 254 354 154 54 254 54   -  -
15805  55 155 255 355   -  -   -  - 355 55
15806  56 156 256 356 156 56   -  -   -  -
15807  57 157 257 357   -  - 257 57   -  -
15808  58 158 258 358 158 58   -  -   -  -
15809  59 159 259 359   -  -   -  -   -  -
15810  60 160 260 360 160 60 260 60 360 60
15811  61 161 261 361   -  -   -  -   -  -
15812  62 162 262 362 162 62   -  -   -  -
15813  63 163 263 363   -  - 263 63   -  -
15814  64 164 264 364 164 64   -  -   -  -
15815  65 165 265 365   -  -   -  - 365 65
15816  66 166 266 366 166 66 266 66   -  -
15817  67 167 267 367   -  -   -  -   -  -
15818  68 168 268 368 168 68   -  -   -  -
15819  69 169 269 369   -  - 269 69   -  -
15820  70 170 270 370 170 70   -  - 370 70
15821  71 171 271 371   -  -   -  -   -  -
15822  72 172 272 372 172 72 272 72   -  -
15823  73 173 273 373   -  -   -  -   -  -
15824  74 174 274 374 174 74   -  -   -  -
15825  75 175 275 375   -  - 275 75 375 75
15826  76 176 276 376 176 76   -  -   -  -
15827  77 177 277 377   -  -   -  -   -  -
15828  78 178 278 378 178 78 278 78   -  -
15829  79 179 279 379   -  -   -  -   -  -
15830  80 180 280 380 180 80   -  - 380 80
15831  81 181 281 381   -  - 281 81   -  -
15832  82 182 282 382 182 82   -  -   -  -
15833  83 183 283 383   -  -   -  -   -  -
15834  84 184 284 384 184 84 284 84   -  -
15835  85 185 285 385   -  -   -  - 385 85
15836  86 186 286 386 186 86   -  -   -  -
15837  87 187 287 387   -  - 287 87   -  -
15838  88 188 288 388 188 88   -  -   -  -
15839  89 189 289 389   -  -   -  -   -  -
15840  90 190 290 390 190 90 290 90 390 90
15841  91 191 291 391   -  -   -  -   -  -
15842  92 192 292 392 192 92   -  -   -  -
15843  93 193 293 393   -  - 293 93   -  -
15844  94 194 294 394 194 94   -  -   -  -
15845  95 195 295 395   -  -   -  - 395 95
15846  96   - 296 396   -  -   -  -   -  -
15847  97 197   - 397   -  -   -  -   -  -
15848  98 198 298   -   -  -   -  -   -  -
15849  99   -   -   -   -  -   -  -   -  -
15850   -   -   -   -   -  - 200  0   -  -
15851}
15852do_execsql_test joinD-549 {
15853  SELECT t1.*, t2.*, t3.*, t4.*
15854  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15855  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15856  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15857  WHERE t2.x>0
15858  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15859} {
15860   2 102 202 302 102  2   -  -   -  -
15861   4 104 204 304 104  4   -  -   -  -
15862   6 106 206 306 106  6 206  6   -  -
15863   8 108 208 308 108  8   -  -   -  -
15864  10 110 210 310 110 10   -  - 310 10
15865  12 112 212 312 112 12 212 12   -  -
15866  14 114 214 314 114 14   -  -   -  -
15867  16 116 216 316 116 16   -  -   -  -
15868  18 118 218 318 118 18 218 18   -  -
15869  20 120 220 320 120 20   -  - 320 20
15870  22 122 222 322 122 22   -  -   -  -
15871  24 124 224 324 124 24 224 24   -  -
15872  26 126 226 326 126 26   -  -   -  -
15873  28 128 228 328 128 28   -  -   -  -
15874  30 130 230 330 130 30 230 30 330 30
15875  32 132 232 332 132 32   -  -   -  -
15876  34 134 234 334 134 34   -  -   -  -
15877  36 136 236 336 136 36 236 36   -  -
15878  38 138 238 338 138 38   -  -   -  -
15879  40 140 240 340 140 40   -  - 340 40
15880  42 142 242 342 142 42 242 42   -  -
15881  44 144 244 344 144 44   -  -   -  -
15882  46 146 246 346 146 46   -  -   -  -
15883  48 148 248 348 148 48 248 48   -  -
15884  50 150 250 350 150 50   -  - 350 50
15885  52 152 252 352 152 52   -  -   -  -
15886  54 154 254 354 154 54 254 54   -  -
15887  56 156 256 356 156 56   -  -   -  -
15888  58 158 258 358 158 58   -  -   -  -
15889  60 160 260 360 160 60 260 60 360 60
15890  62 162 262 362 162 62   -  -   -  -
15891  64 164 264 364 164 64   -  -   -  -
15892  66 166 266 366 166 66 266 66   -  -
15893  68 168 268 368 168 68   -  -   -  -
15894  70 170 270 370 170 70   -  - 370 70
15895  72 172 272 372 172 72 272 72   -  -
15896  74 174 274 374 174 74   -  -   -  -
15897  76 176 276 376 176 76   -  -   -  -
15898  78 178 278 378 178 78 278 78   -  -
15899  80 180 280 380 180 80   -  - 380 80
15900  82 182 282 382 182 82   -  -   -  -
15901  84 184 284 384 184 84 284 84   -  -
15902  86 186 286 386 186 86   -  -   -  -
15903  88 188 288 388 188 88   -  -   -  -
15904  90 190 290 390 190 90 290 90 390 90
15905  92 192 292 392 192 92   -  -   -  -
15906  94 194 294 394 194 94   -  -   -  -
15907}
15908do_execsql_test joinD-550 {
15909  SELECT t1.*, t2.*, t3.*, t4.*
15910  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15911  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15912  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15913  WHERE (t2.x>0 OR t2.x IS NULL)
15914  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15915} {
15916   1 101 201 301   -  -   -  -   -  -
15917   2 102 202 302 102  2   -  -   -  -
15918   3 103 203 303   -  - 203  3   -  -
15919   4 104 204 304 104  4   -  -   -  -
15920   5 105 205 305   -  -   -  - 305  5
15921   6 106 206 306 106  6 206  6   -  -
15922   7 107 207 307   -  -   -  -   -  -
15923   8 108 208 308 108  8   -  -   -  -
15924   9 109 209 309   -  - 209  9   -  -
15925  10 110 210 310 110 10   -  - 310 10
15926  11 111 211 311   -  -   -  -   -  -
15927  12 112 212 312 112 12 212 12   -  -
15928  13 113 213 313   -  -   -  -   -  -
15929  14 114 214 314 114 14   -  -   -  -
15930  15 115 215 315   -  - 215 15 315 15
15931  16 116 216 316 116 16   -  -   -  -
15932  17 117 217 317   -  -   -  -   -  -
15933  18 118 218 318 118 18 218 18   -  -
15934  19 119 219 319   -  -   -  -   -  -
15935  20 120 220 320 120 20   -  - 320 20
15936  21 121 221 321   -  - 221 21   -  -
15937  22 122 222 322 122 22   -  -   -  -
15938  23 123 223 323   -  -   -  -   -  -
15939  24 124 224 324 124 24 224 24   -  -
15940  25 125 225 325   -  -   -  - 325 25
15941  26 126 226 326 126 26   -  -   -  -
15942  27 127 227 327   -  - 227 27   -  -
15943  28 128 228 328 128 28   -  -   -  -
15944  29 129 229 329   -  -   -  -   -  -
15945  30 130 230 330 130 30 230 30 330 30
15946  31 131 231 331   -  -   -  -   -  -
15947  32 132 232 332 132 32   -  -   -  -
15948  33 133 233 333   -  - 233 33   -  -
15949  34 134 234 334 134 34   -  -   -  -
15950  35 135 235 335   -  -   -  - 335 35
15951  36 136 236 336 136 36 236 36   -  -
15952  37 137 237 337   -  -   -  -   -  -
15953  38 138 238 338 138 38   -  -   -  -
15954  39 139 239 339   -  - 239 39   -  -
15955  40 140 240 340 140 40   -  - 340 40
15956  41 141 241 341   -  -   -  -   -  -
15957  42 142 242 342 142 42 242 42   -  -
15958  43 143 243 343   -  -   -  -   -  -
15959  44 144 244 344 144 44   -  -   -  -
15960  45 145 245 345   -  - 245 45 345 45
15961  46 146 246 346 146 46   -  -   -  -
15962  47 147 247 347   -  -   -  -   -  -
15963  48 148 248 348 148 48 248 48   -  -
15964  49 149 249 349   -  -   -  -   -  -
15965  50 150 250 350 150 50   -  - 350 50
15966  51 151 251 351   -  - 251 51   -  -
15967  52 152 252 352 152 52   -  -   -  -
15968  53 153 253 353   -  -   -  -   -  -
15969  54 154 254 354 154 54 254 54   -  -
15970  55 155 255 355   -  -   -  - 355 55
15971  56 156 256 356 156 56   -  -   -  -
15972  57 157 257 357   -  - 257 57   -  -
15973  58 158 258 358 158 58   -  -   -  -
15974  59 159 259 359   -  -   -  -   -  -
15975  60 160 260 360 160 60 260 60 360 60
15976  61 161 261 361   -  -   -  -   -  -
15977  62 162 262 362 162 62   -  -   -  -
15978  63 163 263 363   -  - 263 63   -  -
15979  64 164 264 364 164 64   -  -   -  -
15980  65 165 265 365   -  -   -  - 365 65
15981  66 166 266 366 166 66 266 66   -  -
15982  67 167 267 367   -  -   -  -   -  -
15983  68 168 268 368 168 68   -  -   -  -
15984  69 169 269 369   -  - 269 69   -  -
15985  70 170 270 370 170 70   -  - 370 70
15986  71 171 271 371   -  -   -  -   -  -
15987  72 172 272 372 172 72 272 72   -  -
15988  73 173 273 373   -  -   -  -   -  -
15989  74 174 274 374 174 74   -  -   -  -
15990  75 175 275 375   -  - 275 75 375 75
15991  76 176 276 376 176 76   -  -   -  -
15992  77 177 277 377   -  -   -  -   -  -
15993  78 178 278 378 178 78 278 78   -  -
15994  79 179 279 379   -  -   -  -   -  -
15995  80 180 280 380 180 80   -  - 380 80
15996  81 181 281 381   -  - 281 81   -  -
15997  82 182 282 382 182 82   -  -   -  -
15998  83 183 283 383   -  -   -  -   -  -
15999  84 184 284 384 184 84 284 84   -  -
16000  85 185 285 385   -  -   -  - 385 85
16001  86 186 286 386 186 86   -  -   -  -
16002  87 187 287 387   -  - 287 87   -  -
16003  88 188 288 388 188 88   -  -   -  -
16004  89 189 289 389   -  -   -  -   -  -
16005  90 190 290 390 190 90 290 90 390 90
16006  91 191 291 391   -  -   -  -   -  -
16007  92 192 292 392 192 92   -  -   -  -
16008  93 193 293 393   -  - 293 93   -  -
16009  94 194 294 394 194 94   -  -   -  -
16010  95 195 295 395   -  -   -  - 395 95
16011  96   - 296 396   -  -   -  -   -  -
16012  97 197   - 397   -  -   -  -   -  -
16013  98 198 298   -   -  -   -  -   -  -
16014  99   -   -   -   -  -   -  -   -  -
16015   -   -   -   -   -  - 200  0   -  -
16016}
16017do_execsql_test joinD-551 {
16018  SELECT t1.*, t2.*, t3.*, t4.*
16019  FROM t1 LEFT JOIN t2 ON true
16020  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16021  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16022  WHERE t1.b=t2.b AND t2.x>0
16023  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16024} {
16025   2 102 202 302 102  2   -  -   -  -
16026   4 104 204 304 104  4   -  -   -  -
16027   6 106 206 306 106  6 206  6   -  -
16028   8 108 208 308 108  8   -  -   -  -
16029  10 110 210 310 110 10   -  - 310 10
16030  12 112 212 312 112 12 212 12   -  -
16031  14 114 214 314 114 14   -  -   -  -
16032  16 116 216 316 116 16   -  -   -  -
16033  18 118 218 318 118 18 218 18   -  -
16034  20 120 220 320 120 20   -  - 320 20
16035  22 122 222 322 122 22   -  -   -  -
16036  24 124 224 324 124 24 224 24   -  -
16037  26 126 226 326 126 26   -  -   -  -
16038  28 128 228 328 128 28   -  -   -  -
16039  30 130 230 330 130 30 230 30 330 30
16040  32 132 232 332 132 32   -  -   -  -
16041  34 134 234 334 134 34   -  -   -  -
16042  36 136 236 336 136 36 236 36   -  -
16043  38 138 238 338 138 38   -  -   -  -
16044  40 140 240 340 140 40   -  - 340 40
16045  42 142 242 342 142 42 242 42   -  -
16046  44 144 244 344 144 44   -  -   -  -
16047  46 146 246 346 146 46   -  -   -  -
16048  48 148 248 348 148 48 248 48   -  -
16049  50 150 250 350 150 50   -  - 350 50
16050  52 152 252 352 152 52   -  -   -  -
16051  54 154 254 354 154 54 254 54   -  -
16052  56 156 256 356 156 56   -  -   -  -
16053  58 158 258 358 158 58   -  -   -  -
16054  60 160 260 360 160 60 260 60 360 60
16055  62 162 262 362 162 62   -  -   -  -
16056  64 164 264 364 164 64   -  -   -  -
16057  66 166 266 366 166 66 266 66   -  -
16058  68 168 268 368 168 68   -  -   -  -
16059  70 170 270 370 170 70   -  - 370 70
16060  72 172 272 372 172 72 272 72   -  -
16061  74 174 274 374 174 74   -  -   -  -
16062  76 176 276 376 176 76   -  -   -  -
16063  78 178 278 378 178 78 278 78   -  -
16064  80 180 280 380 180 80   -  - 380 80
16065  82 182 282 382 182 82   -  -   -  -
16066  84 184 284 384 184 84 284 84   -  -
16067  86 186 286 386 186 86   -  -   -  -
16068  88 188 288 388 188 88   -  -   -  -
16069  90 190 290 390 190 90 290 90 390 90
16070  92 192 292 392 192 92   -  -   -  -
16071  94 194 294 394 194 94   -  -   -  -
16072}
16073do_execsql_test joinD-552 {
16074  SELECT t1.*, t2.*, t3.*, t4.*
16075  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16076  FULL JOIN t3 ON t1.c=t3.c
16077  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16078  WHERE t3.y>0
16079  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16080} {
16081   3 103 203 303   -  - 203  3   -  -
16082   6 106 206 306 106  6 206  6   -  -
16083   9 109 209 309   -  - 209  9   -  -
16084  12 112 212 312 112 12 212 12   -  -
16085  15 115 215 315   -  - 215 15 315 15
16086  18 118 218 318 118 18 218 18   -  -
16087  21 121 221 321   -  - 221 21   -  -
16088  24 124 224 324 124 24 224 24   -  -
16089  27 127 227 327   -  - 227 27   -  -
16090  30 130 230 330 130 30 230 30 330 30
16091  33 133 233 333   -  - 233 33   -  -
16092  36 136 236 336 136 36 236 36   -  -
16093  39 139 239 339   -  - 239 39   -  -
16094  42 142 242 342 142 42 242 42   -  -
16095  45 145 245 345   -  - 245 45 345 45
16096  48 148 248 348 148 48 248 48   -  -
16097  51 151 251 351   -  - 251 51   -  -
16098  54 154 254 354 154 54 254 54   -  -
16099  57 157 257 357   -  - 257 57   -  -
16100  60 160 260 360 160 60 260 60 360 60
16101  63 163 263 363   -  - 263 63   -  -
16102  66 166 266 366 166 66 266 66   -  -
16103  69 169 269 369   -  - 269 69   -  -
16104  72 172 272 372 172 72 272 72   -  -
16105  75 175 275 375   -  - 275 75 375 75
16106  78 178 278 378 178 78 278 78   -  -
16107  81 181 281 381   -  - 281 81   -  -
16108  84 184 284 384 184 84 284 84   -  -
16109  87 187 287 387   -  - 287 87   -  -
16110  90 190 290 390 190 90 290 90 390 90
16111  93 193 293 393   -  - 293 93   -  -
16112}
16113do_execsql_test joinD-553 {
16114  SELECT t1.*, t2.*, t3.*, t4.*
16115  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16116  FULL JOIN t3 ON t1.c=t3.c
16117  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16118  WHERE t3.y>0 OR t3.y IS NULL
16119  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16120} {
16121   1 101 201 301   -  -   -  -   -  -
16122   2 102 202 302 102  2   -  -   -  -
16123   3 103 203 303   -  - 203  3   -  -
16124   4 104 204 304 104  4   -  -   -  -
16125   5 105 205 305   -  -   -  - 305  5
16126   6 106 206 306 106  6 206  6   -  -
16127   7 107 207 307   -  -   -  -   -  -
16128   8 108 208 308 108  8   -  -   -  -
16129   9 109 209 309   -  - 209  9   -  -
16130  10 110 210 310 110 10   -  - 310 10
16131  11 111 211 311   -  -   -  -   -  -
16132  12 112 212 312 112 12 212 12   -  -
16133  13 113 213 313   -  -   -  -   -  -
16134  14 114 214 314 114 14   -  -   -  -
16135  15 115 215 315   -  - 215 15 315 15
16136  16 116 216 316 116 16   -  -   -  -
16137  17 117 217 317   -  -   -  -   -  -
16138  18 118 218 318 118 18 218 18   -  -
16139  19 119 219 319   -  -   -  -   -  -
16140  20 120 220 320 120 20   -  - 320 20
16141  21 121 221 321   -  - 221 21   -  -
16142  22 122 222 322 122 22   -  -   -  -
16143  23 123 223 323   -  -   -  -   -  -
16144  24 124 224 324 124 24 224 24   -  -
16145  25 125 225 325   -  -   -  - 325 25
16146  26 126 226 326 126 26   -  -   -  -
16147  27 127 227 327   -  - 227 27   -  -
16148  28 128 228 328 128 28   -  -   -  -
16149  29 129 229 329   -  -   -  -   -  -
16150  30 130 230 330 130 30 230 30 330 30
16151  31 131 231 331   -  -   -  -   -  -
16152  32 132 232 332 132 32   -  -   -  -
16153  33 133 233 333   -  - 233 33   -  -
16154  34 134 234 334 134 34   -  -   -  -
16155  35 135 235 335   -  -   -  - 335 35
16156  36 136 236 336 136 36 236 36   -  -
16157  37 137 237 337   -  -   -  -   -  -
16158  38 138 238 338 138 38   -  -   -  -
16159  39 139 239 339   -  - 239 39   -  -
16160  40 140 240 340 140 40   -  - 340 40
16161  41 141 241 341   -  -   -  -   -  -
16162  42 142 242 342 142 42 242 42   -  -
16163  43 143 243 343   -  -   -  -   -  -
16164  44 144 244 344 144 44   -  -   -  -
16165  45 145 245 345   -  - 245 45 345 45
16166  46 146 246 346 146 46   -  -   -  -
16167  47 147 247 347   -  -   -  -   -  -
16168  48 148 248 348 148 48 248 48   -  -
16169  49 149 249 349   -  -   -  -   -  -
16170  50 150 250 350 150 50   -  - 350 50
16171  51 151 251 351   -  - 251 51   -  -
16172  52 152 252 352 152 52   -  -   -  -
16173  53 153 253 353   -  -   -  -   -  -
16174  54 154 254 354 154 54 254 54   -  -
16175  55 155 255 355   -  -   -  - 355 55
16176  56 156 256 356 156 56   -  -   -  -
16177  57 157 257 357   -  - 257 57   -  -
16178  58 158 258 358 158 58   -  -   -  -
16179  59 159 259 359   -  -   -  -   -  -
16180  60 160 260 360 160 60 260 60 360 60
16181  61 161 261 361   -  -   -  -   -  -
16182  62 162 262 362 162 62   -  -   -  -
16183  63 163 263 363   -  - 263 63   -  -
16184  64 164 264 364 164 64   -  -   -  -
16185  65 165 265 365   -  -   -  - 365 65
16186  66 166 266 366 166 66 266 66   -  -
16187  67 167 267 367   -  -   -  -   -  -
16188  68 168 268 368 168 68   -  -   -  -
16189  69 169 269 369   -  - 269 69   -  -
16190  70 170 270 370 170 70   -  - 370 70
16191  71 171 271 371   -  -   -  -   -  -
16192  72 172 272 372 172 72 272 72   -  -
16193  73 173 273 373   -  -   -  -   -  -
16194  74 174 274 374 174 74   -  -   -  -
16195  75 175 275 375   -  - 275 75 375 75
16196  76 176 276 376 176 76   -  -   -  -
16197  77 177 277 377   -  -   -  -   -  -
16198  78 178 278 378 178 78 278 78   -  -
16199  79 179 279 379   -  -   -  -   -  -
16200  80 180 280 380 180 80   -  - 380 80
16201  81 181 281 381   -  - 281 81   -  -
16202  82 182 282 382 182 82   -  -   -  -
16203  83 183 283 383   -  -   -  -   -  -
16204  84 184 284 384 184 84 284 84   -  -
16205  85 185 285 385   -  -   -  - 385 85
16206  86 186 286 386 186 86   -  -   -  -
16207  87 187 287 387   -  - 287 87   -  -
16208  88 188 288 388 188 88   -  -   -  -
16209  89 189 289 389   -  -   -  -   -  -
16210  90 190 290 390 190 90 290 90 390 90
16211  91 191 291 391   -  -   -  -   -  -
16212  92 192 292 392 192 92   -  -   -  -
16213  93 193 293 393   -  - 293 93   -  -
16214  94 194 294 394 194 94   -  -   -  -
16215  95 195 295 395   -  -   -  - 395 95
16216  96   - 296 396   -  -   -  -   -  -
16217  97 197   - 397   -  -   -  -   -  -
16218  98 198 298   -   -  -   -  -   -  -
16219  99   -   -   -   -  -   -  -   -  -
16220}
16221do_execsql_test joinD-554 {
16222  SELECT t1.*, t2.*, t3.*, t4.*
16223  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16224  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16225  LEFT JOIN t4 ON t1.d=t4.d
16226  WHERE t4.z>0
16227  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16228} {
16229   5 105 205 305   -  -   -  - 305  5
16230  10 110 210 310 110 10   -  - 310 10
16231  15 115 215 315   -  - 215 15 315 15
16232  20 120 220 320 120 20   -  - 320 20
16233  25 125 225 325   -  -   -  - 325 25
16234  30 130 230 330 130 30 230 30 330 30
16235  35 135 235 335   -  -   -  - 335 35
16236  40 140 240 340 140 40   -  - 340 40
16237  45 145 245 345   -  - 245 45 345 45
16238  50 150 250 350 150 50   -  - 350 50
16239  55 155 255 355   -  -   -  - 355 55
16240  60 160 260 360 160 60 260 60 360 60
16241  65 165 265 365   -  -   -  - 365 65
16242  70 170 270 370 170 70   -  - 370 70
16243  75 175 275 375   -  - 275 75 375 75
16244  80 180 280 380 180 80   -  - 380 80
16245  85 185 285 385   -  -   -  - 385 85
16246  90 190 290 390 190 90 290 90 390 90
16247  95 195 295 395   -  -   -  - 395 95
16248}
16249do_execsql_test joinD-555 {
16250  SELECT t1.*, t2.*, t3.*, t4.*
16251  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16252  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16253  LEFT JOIN t4 ON t1.d=t4.d
16254  WHERE t4.z IS NULL OR t4.z>0
16255  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16256} {
16257   1 101 201 301   -  -   -  -   -  -
16258   2 102 202 302 102  2   -  -   -  -
16259   3 103 203 303   -  - 203  3   -  -
16260   4 104 204 304 104  4   -  -   -  -
16261   5 105 205 305   -  -   -  - 305  5
16262   6 106 206 306 106  6 206  6   -  -
16263   7 107 207 307   -  -   -  -   -  -
16264   8 108 208 308 108  8   -  -   -  -
16265   9 109 209 309   -  - 209  9   -  -
16266  10 110 210 310 110 10   -  - 310 10
16267  11 111 211 311   -  -   -  -   -  -
16268  12 112 212 312 112 12 212 12   -  -
16269  13 113 213 313   -  -   -  -   -  -
16270  14 114 214 314 114 14   -  -   -  -
16271  15 115 215 315   -  - 215 15 315 15
16272  16 116 216 316 116 16   -  -   -  -
16273  17 117 217 317   -  -   -  -   -  -
16274  18 118 218 318 118 18 218 18   -  -
16275  19 119 219 319   -  -   -  -   -  -
16276  20 120 220 320 120 20   -  - 320 20
16277  21 121 221 321   -  - 221 21   -  -
16278  22 122 222 322 122 22   -  -   -  -
16279  23 123 223 323   -  -   -  -   -  -
16280  24 124 224 324 124 24 224 24   -  -
16281  25 125 225 325   -  -   -  - 325 25
16282  26 126 226 326 126 26   -  -   -  -
16283  27 127 227 327   -  - 227 27   -  -
16284  28 128 228 328 128 28   -  -   -  -
16285  29 129 229 329   -  -   -  -   -  -
16286  30 130 230 330 130 30 230 30 330 30
16287  31 131 231 331   -  -   -  -   -  -
16288  32 132 232 332 132 32   -  -   -  -
16289  33 133 233 333   -  - 233 33   -  -
16290  34 134 234 334 134 34   -  -   -  -
16291  35 135 235 335   -  -   -  - 335 35
16292  36 136 236 336 136 36 236 36   -  -
16293  37 137 237 337   -  -   -  -   -  -
16294  38 138 238 338 138 38   -  -   -  -
16295  39 139 239 339   -  - 239 39   -  -
16296  40 140 240 340 140 40   -  - 340 40
16297  41 141 241 341   -  -   -  -   -  -
16298  42 142 242 342 142 42 242 42   -  -
16299  43 143 243 343   -  -   -  -   -  -
16300  44 144 244 344 144 44   -  -   -  -
16301  45 145 245 345   -  - 245 45 345 45
16302  46 146 246 346 146 46   -  -   -  -
16303  47 147 247 347   -  -   -  -   -  -
16304  48 148 248 348 148 48 248 48   -  -
16305  49 149 249 349   -  -   -  -   -  -
16306  50 150 250 350 150 50   -  - 350 50
16307  51 151 251 351   -  - 251 51   -  -
16308  52 152 252 352 152 52   -  -   -  -
16309  53 153 253 353   -  -   -  -   -  -
16310  54 154 254 354 154 54 254 54   -  -
16311  55 155 255 355   -  -   -  - 355 55
16312  56 156 256 356 156 56   -  -   -  -
16313  57 157 257 357   -  - 257 57   -  -
16314  58 158 258 358 158 58   -  -   -  -
16315  59 159 259 359   -  -   -  -   -  -
16316  60 160 260 360 160 60 260 60 360 60
16317  61 161 261 361   -  -   -  -   -  -
16318  62 162 262 362 162 62   -  -   -  -
16319  63 163 263 363   -  - 263 63   -  -
16320  64 164 264 364 164 64   -  -   -  -
16321  65 165 265 365   -  -   -  - 365 65
16322  66 166 266 366 166 66 266 66   -  -
16323  67 167 267 367   -  -   -  -   -  -
16324  68 168 268 368 168 68   -  -   -  -
16325  69 169 269 369   -  - 269 69   -  -
16326  70 170 270 370 170 70   -  - 370 70
16327  71 171 271 371   -  -   -  -   -  -
16328  72 172 272 372 172 72 272 72   -  -
16329  73 173 273 373   -  -   -  -   -  -
16330  74 174 274 374 174 74   -  -   -  -
16331  75 175 275 375   -  - 275 75 375 75
16332  76 176 276 376 176 76   -  -   -  -
16333  77 177 277 377   -  -   -  -   -  -
16334  78 178 278 378 178 78 278 78   -  -
16335  79 179 279 379   -  -   -  -   -  -
16336  80 180 280 380 180 80   -  - 380 80
16337  81 181 281 381   -  - 281 81   -  -
16338  82 182 282 382 182 82   -  -   -  -
16339  83 183 283 383   -  -   -  -   -  -
16340  84 184 284 384 184 84 284 84   -  -
16341  85 185 285 385   -  -   -  - 385 85
16342  86 186 286 386 186 86   -  -   -  -
16343  87 187 287 387   -  - 287 87   -  -
16344  88 188 288 388 188 88   -  -   -  -
16345  89 189 289 389   -  -   -  -   -  -
16346  90 190 290 390 190 90 290 90 390 90
16347  91 191 291 391   -  -   -  -   -  -
16348  92 192 292 392 192 92   -  -   -  -
16349  93 193 293 393   -  - 293 93   -  -
16350  94 194 294 394 194 94   -  -   -  -
16351  95 195 295 395   -  -   -  - 395 95
16352  96   - 296 396   -  -   -  -   -  -
16353  97 197   - 397   -  -   -  -   -  -
16354  98 198 298   -   -  -   -  -   -  -
16355  99   -   -   -   -  -   -  -   -  -
16356   -   -   -   -   -  - 200  0   -  -
16357}
16358do_execsql_test joinD-556 {
16359  SELECT t1.*, t2.*, t3.*, t4.*
16360  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16361  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16362  LEFT JOIN t4 ON t1.d=t4.d
16363  WHERE t2.x>0 AND t4.z>0
16364  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16365} {
16366  10 110 210 310 110 10   -  - 310 10
16367  20 120 220 320 120 20   -  - 320 20
16368  30 130 230 330 130 30 230 30 330 30
16369  40 140 240 340 140 40   -  - 340 40
16370  50 150 250 350 150 50   -  - 350 50
16371  60 160 260 360 160 60 260 60 360 60
16372  70 170 270 370 170 70   -  - 370 70
16373  80 180 280 380 180 80   -  - 380 80
16374  90 190 290 390 190 90 290 90 390 90
16375}
16376do_execsql_test joinD-557 {
16377  SELECT t1.*, t2.*, t3.*, t4.*
16378  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16379  FULL JOIN t3 ON t1.c=t3.c
16380  LEFT JOIN t4 ON t1.d=t4.d
16381  WHERE t4.z>0 AND t3.y>0
16382  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16383} {
16384  15 115 215 315   -  - 215 15 315 15
16385  30 130 230 330 130 30 230 30 330 30
16386  45 145 245 345   -  - 245 45 345 45
16387  60 160 260 360 160 60 260 60 360 60
16388  75 175 275 375   -  - 275 75 375 75
16389  90 190 290 390 190 90 290 90 390 90
16390}
16391do_execsql_test joinD-558 {
16392  SELECT t1.*, t2.*, t3.*, t4.*
16393  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16394  FULL JOIN t3 ON t1.c=t3.c
16395  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16396  WHERE t2.x>0 AND t3.y>0
16397  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16398} {
16399   6 106 206 306 106  6 206  6   -  -
16400  12 112 212 312 112 12 212 12   -  -
16401  18 118 218 318 118 18 218 18   -  -
16402  24 124 224 324 124 24 224 24   -  -
16403  30 130 230 330 130 30 230 30 330 30
16404  36 136 236 336 136 36 236 36   -  -
16405  42 142 242 342 142 42 242 42   -  -
16406  48 148 248 348 148 48 248 48   -  -
16407  54 154 254 354 154 54 254 54   -  -
16408  60 160 260 360 160 60 260 60 360 60
16409  66 166 266 366 166 66 266 66   -  -
16410  72 172 272 372 172 72 272 72   -  -
16411  78 178 278 378 178 78 278 78   -  -
16412  84 184 284 384 184 84 284 84   -  -
16413  90 190 290 390 190 90 290 90 390 90
16414}
16415do_execsql_test joinD-559 {
16416  SELECT t1.*, t2.*, t3.*, t4.*
16417  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16418  FULL JOIN t3 ON t1.c=t3.c
16419  LEFT JOIN t4 ON t1.d=t4.d
16420  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
16421  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16422} {
16423  30 130 230 330 130 30 230 30 330 30
16424  60 160 260 360 160 60 260 60 360 60
16425  90 190 290 390 190 90 290 90 390 90
16426}
16427do_execsql_test joinD-560 {
16428  SELECT t1.*, t2.*, t3.*, t4.*
16429  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
16430  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
16431  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
16432  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16433} {
16434   0 100 200 300   -  -   -  -   -  -
16435   1 101 201 301   -  -   -  -   -  -
16436   2 102 202 302 102  2   -  -   -  -
16437   3 103 203 303   -  - 203  3   -  -
16438   4 104 204 304 104  4   -  -   -  -
16439   5 105 205 305   -  -   -  - 305  5
16440   6 106 206 306 106  6 206  6   -  -
16441   7 107 207 307   -  -   -  -   -  -
16442   8 108 208 308 108  8   -  -   -  -
16443   9 109 209 309   -  - 209  9   -  -
16444  10 110 210 310 110 10   -  - 310 10
16445  11 111 211 311   -  -   -  -   -  -
16446  12 112 212 312 112 12 212 12   -  -
16447  13 113 213 313   -  -   -  -   -  -
16448  14 114 214 314 114 14   -  -   -  -
16449  15 115 215 315   -  - 215 15 315 15
16450  16 116 216 316 116 16   -  -   -  -
16451  17 117 217 317   -  -   -  -   -  -
16452  18 118 218 318 118 18 218 18   -  -
16453  19 119 219 319   -  -   -  -   -  -
16454  20 120 220 320 120 20   -  - 320 20
16455  21 121 221 321   -  - 221 21   -  -
16456  22 122 222 322 122 22   -  -   -  -
16457  23 123 223 323   -  -   -  -   -  -
16458  24 124 224 324 124 24 224 24   -  -
16459  25 125 225 325   -  -   -  - 325 25
16460  26 126 226 326 126 26   -  -   -  -
16461  27 127 227 327   -  - 227 27   -  -
16462  28 128 228 328 128 28   -  -   -  -
16463  29 129 229 329   -  -   -  -   -  -
16464  30 130 230 330 130 30 230 30 330 30
16465  31 131 231 331   -  -   -  -   -  -
16466  32 132 232 332 132 32   -  -   -  -
16467  33 133 233 333   -  - 233 33   -  -
16468  34 134 234 334 134 34   -  -   -  -
16469  35 135 235 335   -  -   -  - 335 35
16470  36 136 236 336 136 36 236 36   -  -
16471  37 137 237 337   -  -   -  -   -  -
16472  38 138 238 338 138 38   -  -   -  -
16473  39 139 239 339   -  - 239 39   -  -
16474  40 140 240 340 140 40   -  - 340 40
16475  41 141 241 341   -  -   -  -   -  -
16476  42 142 242 342 142 42 242 42   -  -
16477  43 143 243 343   -  -   -  -   -  -
16478  44 144 244 344 144 44   -  -   -  -
16479  45 145 245 345   -  - 245 45 345 45
16480  46 146 246 346 146 46   -  -   -  -
16481  47 147 247 347   -  -   -  -   -  -
16482  48 148 248 348 148 48 248 48   -  -
16483  49 149 249 349   -  -   -  -   -  -
16484  50 150 250 350 150 50   -  - 350 50
16485  51 151 251 351   -  - 251 51   -  -
16486  52 152 252 352 152 52   -  -   -  -
16487  53 153 253 353   -  -   -  -   -  -
16488  54 154 254 354 154 54 254 54   -  -
16489  55 155 255 355   -  -   -  - 355 55
16490  56 156 256 356 156 56   -  -   -  -
16491  57 157 257 357   -  - 257 57   -  -
16492  58 158 258 358 158 58   -  -   -  -
16493  59 159 259 359   -  -   -  -   -  -
16494  60 160 260 360 160 60 260 60 360 60
16495  61 161 261 361   -  -   -  -   -  -
16496  62 162 262 362 162 62   -  -   -  -
16497  63 163 263 363   -  - 263 63   -  -
16498  64 164 264 364 164 64   -  -   -  -
16499  65 165 265 365   -  -   -  - 365 65
16500  66 166 266 366 166 66 266 66   -  -
16501  67 167 267 367   -  -   -  -   -  -
16502  68 168 268 368 168 68   -  -   -  -
16503  69 169 269 369   -  - 269 69   -  -
16504  70 170 270 370 170 70   -  - 370 70
16505  71 171 271 371   -  -   -  -   -  -
16506  72 172 272 372 172 72 272 72   -  -
16507  73 173 273 373   -  -   -  -   -  -
16508  74 174 274 374 174 74   -  -   -  -
16509  75 175 275 375   -  - 275 75 375 75
16510  76 176 276 376 176 76   -  -   -  -
16511  77 177 277 377   -  -   -  -   -  -
16512  78 178 278 378 178 78 278 78   -  -
16513  79 179 279 379   -  -   -  -   -  -
16514  80 180 280 380 180 80   -  - 380 80
16515  81 181 281 381   -  - 281 81   -  -
16516  82 182 282 382 182 82   -  -   -  -
16517  83 183 283 383   -  -   -  -   -  -
16518  84 184 284 384 184 84 284 84   -  -
16519  85 185 285 385   -  -   -  - 385 85
16520  86 186 286 386 186 86   -  -   -  -
16521  87 187 287 387   -  - 287 87   -  -
16522  88 188 288 388 188 88   -  -   -  -
16523  89 189 289 389   -  -   -  -   -  -
16524  90 190 290 390 190 90 290 90 390 90
16525  91 191 291 391   -  -   -  -   -  -
16526  92 192 292 392 192 92   -  -   -  -
16527  93 193 293 393   -  - 293 93   -  -
16528  94 194 294 394 194 94   -  -   -  -
16529  95 195 295 395   -  -   -  - 395 95
16530  96   - 296 396   -  -   -  -   -  -
16531  97 197   - 397   -  -   -  -   -  -
16532  98 198 298   -   -  -   -  -   -  -
16533  99   -   -   -   -  -   -  -   -  -
16534   -   -   -   -   -  - 200  0   -  -
16535}
16536do_execsql_test joinD-561 {
16537  SELECT t1.*, t2.*, t3.*, t4.*
16538  FROM t1 LEFT JOIN t2 ON t2.x>0
16539  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
16540  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
16541  WHERE t1.b IS NOT DISTINCT FROM t2.b
16542  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16543} {
16544   2 102 202 302 102  2   -  -   -  -
16545   4 104 204 304 104  4   -  -   -  -
16546   6 106 206 306 106  6 206  6   -  -
16547   8 108 208 308 108  8   -  -   -  -
16548  10 110 210 310 110 10   -  - 310 10
16549  12 112 212 312 112 12 212 12   -  -
16550  14 114 214 314 114 14   -  -   -  -
16551  16 116 216 316 116 16   -  -   -  -
16552  18 118 218 318 118 18 218 18   -  -
16553  20 120 220 320 120 20   -  - 320 20
16554  22 122 222 322 122 22   -  -   -  -
16555  24 124 224 324 124 24 224 24   -  -
16556  26 126 226 326 126 26   -  -   -  -
16557  28 128 228 328 128 28   -  -   -  -
16558  30 130 230 330 130 30 230 30 330 30
16559  32 132 232 332 132 32   -  -   -  -
16560  34 134 234 334 134 34   -  -   -  -
16561  36 136 236 336 136 36 236 36   -  -
16562  38 138 238 338 138 38   -  -   -  -
16563  40 140 240 340 140 40   -  - 340 40
16564  42 142 242 342 142 42 242 42   -  -
16565  44 144 244 344 144 44   -  -   -  -
16566  46 146 246 346 146 46   -  -   -  -
16567  48 148 248 348 148 48 248 48   -  -
16568  50 150 250 350 150 50   -  - 350 50
16569  52 152 252 352 152 52   -  -   -  -
16570  54 154 254 354 154 54 254 54   -  -
16571  56 156 256 356 156 56   -  -   -  -
16572  58 158 258 358 158 58   -  -   -  -
16573  60 160 260 360 160 60 260 60 360 60
16574  62 162 262 362 162 62   -  -   -  -
16575  64 164 264 364 164 64   -  -   -  -
16576  66 166 266 366 166 66 266 66   -  -
16577  68 168 268 368 168 68   -  -   -  -
16578  70 170 270 370 170 70   -  - 370 70
16579  72 172 272 372 172 72 272 72   -  -
16580  74 174 274 374 174 74   -  -   -  -
16581  76 176 276 376 176 76   -  -   -  -
16582  78 178 278 378 178 78 278 78   -  -
16583  80 180 280 380 180 80   -  - 380 80
16584  82 182 282 382 182 82   -  -   -  -
16585  84 184 284 384 184 84 284 84   -  -
16586  86 186 286 386 186 86   -  -   -  -
16587  88 188 288 388 188 88   -  -   -  -
16588  90 190 290 390 190 90 290 90 390 90
16589  92 192 292 392 192 92   -  -   -  -
16590  94 194 294 394 194 94   -  -   -  -
16591   -   -   -   -   -  - 200  0   -  -
16592}
16593do_execsql_test joinD-562 {
16594  SELECT t1.*, t2.*, t3.*, t4.*
16595  FROM t1 LEFT JOIN t2 ON t2.x>0
16596  FULL JOIN t3 ON t3.y>0
16597  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
16598  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
16599  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16600} {
16601   6 106 206 306 106  6 206  6   -  -
16602  12 112 212 312 112 12 212 12   -  -
16603  18 118 218 318 118 18 218 18   -  -
16604  24 124 224 324 124 24 224 24   -  -
16605  30 130 230 330 130 30 230 30 330 30
16606  36 136 236 336 136 36 236 36   -  -
16607  42 142 242 342 142 42 242 42   -  -
16608  48 148 248 348 148 48 248 48   -  -
16609  54 154 254 354 154 54 254 54   -  -
16610  60 160 260 360 160 60 260 60 360 60
16611  66 166 266 366 166 66 266 66   -  -
16612  72 172 272 372 172 72 272 72   -  -
16613  78 178 278 378 178 78 278 78   -  -
16614  84 184 284 384 184 84 284 84   -  -
16615  90 190 290 390 190 90 290 90 390 90
16616}
16617do_execsql_test joinD-563 {
16618  SELECT t1.*, t2.*, t3.*, t4.*
16619  FROM t1 LEFT JOIN t2 ON t2.x>0
16620  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
16621  LEFT JOIN t4 ON t4.z>0
16622  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
16623  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16624} {
16625  10 110 210 310 110 10   -  - 310 10
16626  20 120 220 320 120 20   -  - 320 20
16627  30 130 230 330 130 30 230 30 330 30
16628  40 140 240 340 140 40   -  - 340 40
16629  50 150 250 350 150 50   -  - 350 50
16630  60 160 260 360 160 60 260 60 360 60
16631  70 170 270 370 170 70   -  - 370 70
16632  80 180 280 380 180 80   -  - 380 80
16633  90 190 290 390 190 90 290 90 390 90
16634}
16635do_execsql_test joinD-564 {
16636  SELECT t1.*, t2.*, t3.*, t4.*
16637  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
16638  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16639  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16641} {
16642   0 100 200 300   -  -   -  -   -  -
16643   1 101 201 301   -  -   -  -   -  -
16644   2 102 202 302 102  2   -  -   -  -
16645   3 103 203 303   -  - 203  3   -  -
16646   4 104 204 304 104  4   -  -   -  -
16647   5 105 205 305   -  -   -  - 305  5
16648   6 106 206 306 106  6 206  6   -  -
16649   7 107 207 307   -  -   -  -   -  -
16650   8 108 208 308 108  8   -  -   -  -
16651   9 109 209 309   -  - 209  9   -  -
16652  10 110 210 310 110 10   -  - 310 10
16653  11 111 211 311   -  -   -  -   -  -
16654  12 112 212 312 112 12 212 12   -  -
16655  13 113 213 313   -  -   -  -   -  -
16656  14 114 214 314 114 14   -  -   -  -
16657  15 115 215 315   -  - 215 15 315 15
16658  16 116 216 316 116 16   -  -   -  -
16659  17 117 217 317   -  -   -  -   -  -
16660  18 118 218 318 118 18 218 18   -  -
16661  19 119 219 319   -  -   -  -   -  -
16662  20 120 220 320 120 20   -  - 320 20
16663  21 121 221 321   -  - 221 21   -  -
16664  22 122 222 322 122 22   -  -   -  -
16665  23 123 223 323   -  -   -  -   -  -
16666  24 124 224 324 124 24 224 24   -  -
16667  25 125 225 325   -  -   -  - 325 25
16668  26 126 226 326 126 26   -  -   -  -
16669  27 127 227 327   -  - 227 27   -  -
16670  28 128 228 328 128 28   -  -   -  -
16671  29 129 229 329   -  -   -  -   -  -
16672  30 130 230 330 130 30 230 30 330 30
16673  31 131 231 331   -  -   -  -   -  -
16674  32 132 232 332 132 32   -  -   -  -
16675  33 133 233 333   -  - 233 33   -  -
16676  34 134 234 334 134 34   -  -   -  -
16677  35 135 235 335   -  -   -  - 335 35
16678  36 136 236 336 136 36 236 36   -  -
16679  37 137 237 337   -  -   -  -   -  -
16680  38 138 238 338 138 38   -  -   -  -
16681  39 139 239 339   -  - 239 39   -  -
16682  40 140 240 340 140 40   -  - 340 40
16683  41 141 241 341   -  -   -  -   -  -
16684  42 142 242 342 142 42 242 42   -  -
16685  43 143 243 343   -  -   -  -   -  -
16686  44 144 244 344 144 44   -  -   -  -
16687  45 145 245 345   -  - 245 45 345 45
16688  46 146 246 346 146 46   -  -   -  -
16689  47 147 247 347   -  -   -  -   -  -
16690  48 148 248 348 148 48 248 48   -  -
16691  49 149 249 349   -  -   -  -   -  -
16692  50 150 250 350 150 50   -  - 350 50
16693  51 151 251 351   -  - 251 51   -  -
16694  52 152 252 352 152 52   -  -   -  -
16695  53 153 253 353   -  -   -  -   -  -
16696  54 154 254 354 154 54 254 54   -  -
16697  55 155 255 355   -  -   -  - 355 55
16698  56 156 256 356 156 56   -  -   -  -
16699  57 157 257 357   -  - 257 57   -  -
16700  58 158 258 358 158 58   -  -   -  -
16701  59 159 259 359   -  -   -  -   -  -
16702  60 160 260 360 160 60 260 60 360 60
16703  61 161 261 361   -  -   -  -   -  -
16704  62 162 262 362 162 62   -  -   -  -
16705  63 163 263 363   -  - 263 63   -  -
16706  64 164 264 364 164 64   -  -   -  -
16707  65 165 265 365   -  -   -  - 365 65
16708  66 166 266 366 166 66 266 66   -  -
16709  67 167 267 367   -  -   -  -   -  -
16710  68 168 268 368 168 68   -  -   -  -
16711  69 169 269 369   -  - 269 69   -  -
16712  70 170 270 370 170 70   -  - 370 70
16713  71 171 271 371   -  -   -  -   -  -
16714  72 172 272 372 172 72 272 72   -  -
16715  73 173 273 373   -  -   -  -   -  -
16716  74 174 274 374 174 74   -  -   -  -
16717  75 175 275 375   -  - 275 75 375 75
16718  76 176 276 376 176 76   -  -   -  -
16719  77 177 277 377   -  -   -  -   -  -
16720  78 178 278 378 178 78 278 78   -  -
16721  79 179 279 379   -  -   -  -   -  -
16722  80 180 280 380 180 80   -  - 380 80
16723  81 181 281 381   -  - 281 81   -  -
16724  82 182 282 382 182 82   -  -   -  -
16725  83 183 283 383   -  -   -  -   -  -
16726  84 184 284 384 184 84 284 84   -  -
16727  85 185 285 385   -  -   -  - 385 85
16728  86 186 286 386 186 86   -  -   -  -
16729  87 187 287 387   -  - 287 87   -  -
16730  88 188 288 388 188 88   -  -   -  -
16731  89 189 289 389   -  -   -  -   -  -
16732  90 190 290 390 190 90 290 90 390 90
16733  91 191 291 391   -  -   -  -   -  -
16734  92 192 292 392 192 92   -  -   -  -
16735  93 193 293 393   -  - 293 93   -  -
16736  94 194 294 394 194 94   -  -   -  -
16737  95 195 295 395   -  -   -  - 395 95
16738  96   - 296 396   -  -   -  -   -  -
16739  97 197   - 397   -  -   -  -   -  -
16740  98 198 298   -   -  -   -  -   -  -
16741  99   -   -   -   -  -   -  -   -  -
16742   -   -   -   -   -  - 200  0   -  -
16743}
16744do_execsql_test joinD-565 {
16745  SELECT t1.*, t2.*, t3.*, t4.*
16746  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16747  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16748  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16749  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16750} {
16751   5 105 205 305   -  -   -  - 305  5
16752  10 110 210 310 110 10   -  - 310 10
16753  15 115 215 315   -  - 215 15 315 15
16754  20 120 220 320 120 20   -  - 320 20
16755  25 125 225 325   -  -   -  - 325 25
16756  30 130 230 330 130 30 230 30 330 30
16757  35 135 235 335   -  -   -  - 335 35
16758  40 140 240 340 140 40   -  - 340 40
16759  45 145 245 345   -  - 245 45 345 45
16760  50 150 250 350 150 50   -  - 350 50
16761  55 155 255 355   -  -   -  - 355 55
16762  60 160 260 360 160 60 260 60 360 60
16763  65 165 265 365   -  -   -  - 365 65
16764  70 170 270 370 170 70   -  - 370 70
16765  75 175 275 375   -  - 275 75 375 75
16766  80 180 280 380 180 80   -  - 380 80
16767  85 185 285 385   -  -   -  - 385 85
16768  90 190 290 390 190 90 290 90 390 90
16769  95 195 295 395   -  -   -  - 395 95
16770   -   -   -   -   -  -   -  - 300  0
16771}
16772do_execsql_test joinD-566 {
16773  SELECT t1.*, t2.*, t3.*, t4.*
16774  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
16775  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16776  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16777  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16778} {
16779   5 105 205 305   -  -   -  - 305  5
16780  10 110 210 310 110 10   -  - 310 10
16781  15 115 215 315   -  - 215 15 315 15
16782  20 120 220 320 120 20   -  - 320 20
16783  25 125 225 325   -  -   -  - 325 25
16784  30 130 230 330 130 30 230 30 330 30
16785  35 135 235 335   -  -   -  - 335 35
16786  40 140 240 340 140 40   -  - 340 40
16787  45 145 245 345   -  - 245 45 345 45
16788  50 150 250 350 150 50   -  - 350 50
16789  55 155 255 355   -  -   -  - 355 55
16790  60 160 260 360 160 60 260 60 360 60
16791  65 165 265 365   -  -   -  - 365 65
16792  70 170 270 370 170 70   -  - 370 70
16793  75 175 275 375   -  - 275 75 375 75
16794  80 180 280 380 180 80   -  - 380 80
16795  85 185 285 385   -  -   -  - 385 85
16796  90 190 290 390 190 90 290 90 390 90
16797  95 195 295 395   -  -   -  - 395 95
16798   -   -   -   -   -  -   -  - 300  0
16799}
16800do_execsql_test joinD-567 {
16801  SELECT t1.*, t2.*, t3.*, t4.*
16802  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16803  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16804  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16805  WHERE t2.x>0
16806  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16807} {
16808  10 110 210 310 110 10   -  - 310 10
16809  20 120 220 320 120 20   -  - 320 20
16810  30 130 230 330 130 30 230 30 330 30
16811  40 140 240 340 140 40   -  - 340 40
16812  50 150 250 350 150 50   -  - 350 50
16813  60 160 260 360 160 60 260 60 360 60
16814  70 170 270 370 170 70   -  - 370 70
16815  80 180 280 380 180 80   -  - 380 80
16816  90 190 290 390 190 90 290 90 390 90
16817}
16818do_execsql_test joinD-568 {
16819  SELECT t1.*, t2.*, t3.*, t4.*
16820  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16821  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16822  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16823  WHERE (t2.x>0 OR t2.x IS NULL)
16824  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16825} {
16826   5 105 205 305   -  -   -  - 305  5
16827  10 110 210 310 110 10   -  - 310 10
16828  15 115 215 315   -  - 215 15 315 15
16829  20 120 220 320 120 20   -  - 320 20
16830  25 125 225 325   -  -   -  - 325 25
16831  30 130 230 330 130 30 230 30 330 30
16832  35 135 235 335   -  -   -  - 335 35
16833  40 140 240 340 140 40   -  - 340 40
16834  45 145 245 345   -  - 245 45 345 45
16835  50 150 250 350 150 50   -  - 350 50
16836  55 155 255 355   -  -   -  - 355 55
16837  60 160 260 360 160 60 260 60 360 60
16838  65 165 265 365   -  -   -  - 365 65
16839  70 170 270 370 170 70   -  - 370 70
16840  75 175 275 375   -  - 275 75 375 75
16841  80 180 280 380 180 80   -  - 380 80
16842  85 185 285 385   -  -   -  - 385 85
16843  90 190 290 390 190 90 290 90 390 90
16844  95 195 295 395   -  -   -  - 395 95
16845   -   -   -   -   -  -   -  - 300  0
16846}
16847do_execsql_test joinD-569 {
16848  SELECT t1.*, t2.*, t3.*, t4.*
16849  FROM t1 LEFT JOIN t2 ON true
16850  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16851  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16852  WHERE t1.b=t2.b AND t2.x>0
16853  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16854} {
16855  10 110 210 310 110 10   -  - 310 10
16856  20 120 220 320 120 20   -  - 320 20
16857  30 130 230 330 130 30 230 30 330 30
16858  40 140 240 340 140 40   -  - 340 40
16859  50 150 250 350 150 50   -  - 350 50
16860  60 160 260 360 160 60 260 60 360 60
16861  70 170 270 370 170 70   -  - 370 70
16862  80 180 280 380 180 80   -  - 380 80
16863  90 190 290 390 190 90 290 90 390 90
16864}
16865do_execsql_test joinD-570 {
16866  SELECT t1.*, t2.*, t3.*, t4.*
16867  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16868  FULL JOIN t3 ON t1.c=t3.c
16869  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16870  WHERE t3.y>0
16871  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16872} {
16873  15 115 215 315   -  - 215 15 315 15
16874  30 130 230 330 130 30 230 30 330 30
16875  45 145 245 345   -  - 245 45 345 45
16876  60 160 260 360 160 60 260 60 360 60
16877  75 175 275 375   -  - 275 75 375 75
16878  90 190 290 390 190 90 290 90 390 90
16879}
16880do_execsql_test joinD-571 {
16881  SELECT t1.*, t2.*, t3.*, t4.*
16882  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16883  FULL JOIN t3 ON t1.c=t3.c
16884  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16885  WHERE t3.y>0 OR t3.y IS NULL
16886  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16887} {
16888   5 105 205 305   -  -   -  - 305  5
16889  10 110 210 310 110 10   -  - 310 10
16890  15 115 215 315   -  - 215 15 315 15
16891  20 120 220 320 120 20   -  - 320 20
16892  25 125 225 325   -  -   -  - 325 25
16893  30 130 230 330 130 30 230 30 330 30
16894  35 135 235 335   -  -   -  - 335 35
16895  40 140 240 340 140 40   -  - 340 40
16896  45 145 245 345   -  - 245 45 345 45
16897  50 150 250 350 150 50   -  - 350 50
16898  55 155 255 355   -  -   -  - 355 55
16899  60 160 260 360 160 60 260 60 360 60
16900  65 165 265 365   -  -   -  - 365 65
16901  70 170 270 370 170 70   -  - 370 70
16902  75 175 275 375   -  - 275 75 375 75
16903  80 180 280 380 180 80   -  - 380 80
16904  85 185 285 385   -  -   -  - 385 85
16905  90 190 290 390 190 90 290 90 390 90
16906  95 195 295 395   -  -   -  - 395 95
16907   -   -   -   -   -  -   -  - 300  0
16908}
16909do_execsql_test joinD-572 {
16910  SELECT t1.*, t2.*, t3.*, t4.*
16911  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16912  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16913  RIGHT JOIN t4 ON t1.d=t4.d
16914  WHERE t4.z>0
16915  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16916} {
16917   5 105 205 305   -  -   -  - 305  5
16918  10 110 210 310 110 10   -  - 310 10
16919  15 115 215 315   -  - 215 15 315 15
16920  20 120 220 320 120 20   -  - 320 20
16921  25 125 225 325   -  -   -  - 325 25
16922  30 130 230 330 130 30 230 30 330 30
16923  35 135 235 335   -  -   -  - 335 35
16924  40 140 240 340 140 40   -  - 340 40
16925  45 145 245 345   -  - 245 45 345 45
16926  50 150 250 350 150 50   -  - 350 50
16927  55 155 255 355   -  -   -  - 355 55
16928  60 160 260 360 160 60 260 60 360 60
16929  65 165 265 365   -  -   -  - 365 65
16930  70 170 270 370 170 70   -  - 370 70
16931  75 175 275 375   -  - 275 75 375 75
16932  80 180 280 380 180 80   -  - 380 80
16933  85 185 285 385   -  -   -  - 385 85
16934  90 190 290 390 190 90 290 90 390 90
16935  95 195 295 395   -  -   -  - 395 95
16936}
16937do_execsql_test joinD-573 {
16938  SELECT t1.*, t2.*, t3.*, t4.*
16939  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16940  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16941  RIGHT JOIN t4 ON t1.d=t4.d
16942  WHERE t4.z IS NULL OR t4.z>0
16943  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16944} {
16945   5 105 205 305   -  -   -  - 305  5
16946  10 110 210 310 110 10   -  - 310 10
16947  15 115 215 315   -  - 215 15 315 15
16948  20 120 220 320 120 20   -  - 320 20
16949  25 125 225 325   -  -   -  - 325 25
16950  30 130 230 330 130 30 230 30 330 30
16951  35 135 235 335   -  -   -  - 335 35
16952  40 140 240 340 140 40   -  - 340 40
16953  45 145 245 345   -  - 245 45 345 45
16954  50 150 250 350 150 50   -  - 350 50
16955  55 155 255 355   -  -   -  - 355 55
16956  60 160 260 360 160 60 260 60 360 60
16957  65 165 265 365   -  -   -  - 365 65
16958  70 170 270 370 170 70   -  - 370 70
16959  75 175 275 375   -  - 275 75 375 75
16960  80 180 280 380 180 80   -  - 380 80
16961  85 185 285 385   -  -   -  - 385 85
16962  90 190 290 390 190 90 290 90 390 90
16963  95 195 295 395   -  -   -  - 395 95
16964}
16965do_execsql_test joinD-574 {
16966  SELECT t1.*, t2.*, t3.*, t4.*
16967  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16968  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16969  RIGHT JOIN t4 ON t1.d=t4.d
16970  WHERE t2.x>0 AND t4.z>0
16971  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16972} {
16973  10 110 210 310 110 10   -  - 310 10
16974  20 120 220 320 120 20   -  - 320 20
16975  30 130 230 330 130 30 230 30 330 30
16976  40 140 240 340 140 40   -  - 340 40
16977  50 150 250 350 150 50   -  - 350 50
16978  60 160 260 360 160 60 260 60 360 60
16979  70 170 270 370 170 70   -  - 370 70
16980  80 180 280 380 180 80   -  - 380 80
16981  90 190 290 390 190 90 290 90 390 90
16982}
16983do_execsql_test joinD-575 {
16984  SELECT t1.*, t2.*, t3.*, t4.*
16985  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16986  FULL JOIN t3 ON t1.c=t3.c
16987  RIGHT JOIN t4 ON t1.d=t4.d
16988  WHERE t4.z>0 AND t3.y>0
16989  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16990} {
16991  15 115 215 315   -  - 215 15 315 15
16992  30 130 230 330 130 30 230 30 330 30
16993  45 145 245 345   -  - 245 45 345 45
16994  60 160 260 360 160 60 260 60 360 60
16995  75 175 275 375   -  - 275 75 375 75
16996  90 190 290 390 190 90 290 90 390 90
16997}
16998do_execsql_test joinD-576 {
16999  SELECT t1.*, t2.*, t3.*, t4.*
17000  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17001  FULL JOIN t3 ON t1.c=t3.c
17002  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
17003  WHERE t2.x>0 AND t3.y>0
17004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17005} {
17006  30 130 230 330 130 30 230 30 330 30
17007  60 160 260 360 160 60 260 60 360 60
17008  90 190 290 390 190 90 290 90 390 90
17009}
17010do_execsql_test joinD-577 {
17011  SELECT t1.*, t2.*, t3.*, t4.*
17012  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17013  FULL JOIN t3 ON t1.c=t3.c
17014  RIGHT JOIN t4 ON t1.d=t4.d
17015  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
17016  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17017} {
17018  30 130 230 330 130 30 230 30 330 30
17019  60 160 260 360 160 60 260 60 360 60
17020  90 190 290 390 190 90 290 90 390 90
17021}
17022do_execsql_test joinD-578 {
17023  SELECT t1.*, t2.*, t3.*, t4.*
17024  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
17025  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17026  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
17027  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17028} {
17029   5 105 205 305   -  -   -  - 305  5
17030  10 110 210 310 110 10   -  - 310 10
17031  15 115 215 315   -  - 215 15 315 15
17032  20 120 220 320 120 20   -  - 320 20
17033  25 125 225 325   -  -   -  - 325 25
17034  30 130 230 330 130 30 230 30 330 30
17035  35 135 235 335   -  -   -  - 335 35
17036  40 140 240 340 140 40   -  - 340 40
17037  45 145 245 345   -  - 245 45 345 45
17038  50 150 250 350 150 50   -  - 350 50
17039  55 155 255 355   -  -   -  - 355 55
17040  60 160 260 360 160 60 260 60 360 60
17041  65 165 265 365   -  -   -  - 365 65
17042  70 170 270 370 170 70   -  - 370 70
17043  75 175 275 375   -  - 275 75 375 75
17044  80 180 280 380 180 80   -  - 380 80
17045  85 185 285 385   -  -   -  - 385 85
17046  90 190 290 390 190 90 290 90 390 90
17047  95 195 295 395   -  -   -  - 395 95
17048   -   -   -   -   -  -   -  - 300  0
17049}
17050do_execsql_test joinD-579 {
17051  SELECT t1.*, t2.*, t3.*, t4.*
17052  FROM t1 LEFT JOIN t2 ON t2.x>0
17053  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17054  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
17055  WHERE t1.b IS NOT DISTINCT FROM t2.b
17056  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17057} {
17058  10 110 210 310 110 10   -  - 310 10
17059  20 120 220 320 120 20   -  - 320 20
17060  30 130 230 330 130 30 230 30 330 30
17061  40 140 240 340 140 40   -  - 340 40
17062  50 150 250 350 150 50   -  - 350 50
17063  60 160 260 360 160 60 260 60 360 60
17064  70 170 270 370 170 70   -  - 370 70
17065  80 180 280 380 180 80   -  - 380 80
17066  90 190 290 390 190 90 290 90 390 90
17067   -   -   -   -   -  -   -  - 300  0
17068}
17069do_execsql_test joinD-580 {
17070  SELECT t1.*, t2.*, t3.*, t4.*
17071  FROM t1 LEFT JOIN t2 ON t2.x>0
17072  FULL JOIN t3 ON t3.y>0
17073  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
17074  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
17075  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17076} {
17077  30 130 230 330 130 30 230 30 330 30
17078  60 160 260 360 160 60 260 60 360 60
17079  90 190 290 390 190 90 290 90 390 90
17080}
17081do_execsql_test joinD-581 {
17082  SELECT t1.*, t2.*, t3.*, t4.*
17083  FROM t1 LEFT JOIN t2 ON t2.x>0
17084  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17085  RIGHT JOIN t4 ON t4.z>0
17086  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
17087  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17088} {
17089  10 110 210 310 110 10   -  - 310 10
17090  20 120 220 320 120 20   -  - 320 20
17091  30 130 230 330 130 30 230 30 330 30
17092  40 140 240 340 140 40   -  - 340 40
17093  50 150 250 350 150 50   -  - 350 50
17094  60 160 260 360 160 60 260 60 360 60
17095  70 170 270 370 170 70   -  - 370 70
17096  80 180 280 380 180 80   -  - 380 80
17097  90 190 290 390 190 90 290 90 390 90
17098}
17099do_execsql_test joinD-582 {
17100  SELECT t1.*, t2.*, t3.*, t4.*
17101  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
17102  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17103  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
17104  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17105} {
17106   5 105 205 305   -  -   -  - 305  5
17107  10 110 210 310 110 10   -  - 310 10
17108  15 115 215 315   -  - 215 15 315 15
17109  20 120 220 320 120 20   -  - 320 20
17110  25 125 225 325   -  -   -  - 325 25
17111  30 130 230 330 130 30 230 30 330 30
17112  35 135 235 335   -  -   -  - 335 35
17113  40 140 240 340 140 40   -  - 340 40
17114  45 145 245 345   -  - 245 45 345 45
17115  50 150 250 350 150 50   -  - 350 50
17116  55 155 255 355   -  -   -  - 355 55
17117  60 160 260 360 160 60 260 60 360 60
17118  65 165 265 365   -  -   -  - 365 65
17119  70 170 270 370 170 70   -  - 370 70
17120  75 175 275 375   -  - 275 75 375 75
17121  80 180 280 380 180 80   -  - 380 80
17122  85 185 285 385   -  -   -  - 385 85
17123  90 190 290 390 190 90 290 90 390 90
17124  95 195 295 395   -  -   -  - 395 95
17125   -   -   -   -   -  -   -  - 300  0
17126}
17127do_execsql_test joinD-583 {
17128  SELECT t1.*, t2.*, t3.*, t4.*
17129  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17130  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17131  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17132  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17133} {
17134   0 100 200 300   -  -   -  -   -  -
17135   1 101 201 301   -  -   -  -   -  -
17136   2 102 202 302 102  2   -  -   -  -
17137   3 103 203 303   -  - 203  3   -  -
17138   4 104 204 304 104  4   -  -   -  -
17139   5 105 205 305   -  -   -  - 305  5
17140   6 106 206 306 106  6 206  6   -  -
17141   7 107 207 307   -  -   -  -   -  -
17142   8 108 208 308 108  8   -  -   -  -
17143   9 109 209 309   -  - 209  9   -  -
17144  10 110 210 310 110 10   -  - 310 10
17145  11 111 211 311   -  -   -  -   -  -
17146  12 112 212 312 112 12 212 12   -  -
17147  13 113 213 313   -  -   -  -   -  -
17148  14 114 214 314 114 14   -  -   -  -
17149  15 115 215 315   -  - 215 15 315 15
17150  16 116 216 316 116 16   -  -   -  -
17151  17 117 217 317   -  -   -  -   -  -
17152  18 118 218 318 118 18 218 18   -  -
17153  19 119 219 319   -  -   -  -   -  -
17154  20 120 220 320 120 20   -  - 320 20
17155  21 121 221 321   -  - 221 21   -  -
17156  22 122 222 322 122 22   -  -   -  -
17157  23 123 223 323   -  -   -  -   -  -
17158  24 124 224 324 124 24 224 24   -  -
17159  25 125 225 325   -  -   -  - 325 25
17160  26 126 226 326 126 26   -  -   -  -
17161  27 127 227 327   -  - 227 27   -  -
17162  28 128 228 328 128 28   -  -   -  -
17163  29 129 229 329   -  -   -  -   -  -
17164  30 130 230 330 130 30 230 30 330 30
17165  31 131 231 331   -  -   -  -   -  -
17166  32 132 232 332 132 32   -  -   -  -
17167  33 133 233 333   -  - 233 33   -  -
17168  34 134 234 334 134 34   -  -   -  -
17169  35 135 235 335   -  -   -  - 335 35
17170  36 136 236 336 136 36 236 36   -  -
17171  37 137 237 337   -  -   -  -   -  -
17172  38 138 238 338 138 38   -  -   -  -
17173  39 139 239 339   -  - 239 39   -  -
17174  40 140 240 340 140 40   -  - 340 40
17175  41 141 241 341   -  -   -  -   -  -
17176  42 142 242 342 142 42 242 42   -  -
17177  43 143 243 343   -  -   -  -   -  -
17178  44 144 244 344 144 44   -  -   -  -
17179  45 145 245 345   -  - 245 45 345 45
17180  46 146 246 346 146 46   -  -   -  -
17181  47 147 247 347   -  -   -  -   -  -
17182  48 148 248 348 148 48 248 48   -  -
17183  49 149 249 349   -  -   -  -   -  -
17184  50 150 250 350 150 50   -  - 350 50
17185  51 151 251 351   -  - 251 51   -  -
17186  52 152 252 352 152 52   -  -   -  -
17187  53 153 253 353   -  -   -  -   -  -
17188  54 154 254 354 154 54 254 54   -  -
17189  55 155 255 355   -  -   -  - 355 55
17190  56 156 256 356 156 56   -  -   -  -
17191  57 157 257 357   -  - 257 57   -  -
17192  58 158 258 358 158 58   -  -   -  -
17193  59 159 259 359   -  -   -  -   -  -
17194  60 160 260 360 160 60 260 60 360 60
17195  61 161 261 361   -  -   -  -   -  -
17196  62 162 262 362 162 62   -  -   -  -
17197  63 163 263 363   -  - 263 63   -  -
17198  64 164 264 364 164 64   -  -   -  -
17199  65 165 265 365   -  -   -  - 365 65
17200  66 166 266 366 166 66 266 66   -  -
17201  67 167 267 367   -  -   -  -   -  -
17202  68 168 268 368 168 68   -  -   -  -
17203  69 169 269 369   -  - 269 69   -  -
17204  70 170 270 370 170 70   -  - 370 70
17205  71 171 271 371   -  -   -  -   -  -
17206  72 172 272 372 172 72 272 72   -  -
17207  73 173 273 373   -  -   -  -   -  -
17208  74 174 274 374 174 74   -  -   -  -
17209  75 175 275 375   -  - 275 75 375 75
17210  76 176 276 376 176 76   -  -   -  -
17211  77 177 277 377   -  -   -  -   -  -
17212  78 178 278 378 178 78 278 78   -  -
17213  79 179 279 379   -  -   -  -   -  -
17214  80 180 280 380 180 80   -  - 380 80
17215  81 181 281 381   -  - 281 81   -  -
17216  82 182 282 382 182 82   -  -   -  -
17217  83 183 283 383   -  -   -  -   -  -
17218  84 184 284 384 184 84 284 84   -  -
17219  85 185 285 385   -  -   -  - 385 85
17220  86 186 286 386 186 86   -  -   -  -
17221  87 187 287 387   -  - 287 87   -  -
17222  88 188 288 388 188 88   -  -   -  -
17223  89 189 289 389   -  -   -  -   -  -
17224  90 190 290 390 190 90 290 90 390 90
17225  91 191 291 391   -  -   -  -   -  -
17226  92 192 292 392 192 92   -  -   -  -
17227  93 193 293 393   -  - 293 93   -  -
17228  94 194 294 394 194 94   -  -   -  -
17229  95 195 295 395   -  -   -  - 395 95
17230  96   - 296 396   -  -   -  -   -  -
17231  97 197   - 397   -  -   -  -   -  -
17232  98 198 298   -   -  -   -  -   -  -
17233  99   -   -   -   -  -   -  -   -  -
17234   -   -   -   -   -  - 200  0   -  -
17235   -   -   -   -   -  -   -  - 300  0
17236}
17237do_execsql_test joinD-584 {
17238  SELECT t1.*, t2.*, t3.*, t4.*
17239  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
17240  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17241  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17242  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17243} {
17244   0 100 200 300   -  -   -  -   -  -
17245   1 101 201 301   -  -   -  -   -  -
17246   2 102 202 302 102  2   -  -   -  -
17247   3 103 203 303   -  - 203  3   -  -
17248   4 104 204 304 104  4   -  -   -  -
17249   5 105 205 305   -  -   -  - 305  5
17250   6 106 206 306 106  6 206  6   -  -
17251   7 107 207 307   -  -   -  -   -  -
17252   8 108 208 308 108  8   -  -   -  -
17253   9 109 209 309   -  - 209  9   -  -
17254  10 110 210 310 110 10   -  - 310 10
17255  11 111 211 311   -  -   -  -   -  -
17256  12 112 212 312 112 12 212 12   -  -
17257  13 113 213 313   -  -   -  -   -  -
17258  14 114 214 314 114 14   -  -   -  -
17259  15 115 215 315   -  - 215 15 315 15
17260  16 116 216 316 116 16   -  -   -  -
17261  17 117 217 317   -  -   -  -   -  -
17262  18 118 218 318 118 18 218 18   -  -
17263  19 119 219 319   -  -   -  -   -  -
17264  20 120 220 320 120 20   -  - 320 20
17265  21 121 221 321   -  - 221 21   -  -
17266  22 122 222 322 122 22   -  -   -  -
17267  23 123 223 323   -  -   -  -   -  -
17268  24 124 224 324 124 24 224 24   -  -
17269  25 125 225 325   -  -   -  - 325 25
17270  26 126 226 326 126 26   -  -   -  -
17271  27 127 227 327   -  - 227 27   -  -
17272  28 128 228 328 128 28   -  -   -  -
17273  29 129 229 329   -  -   -  -   -  -
17274  30 130 230 330 130 30 230 30 330 30
17275  31 131 231 331   -  -   -  -   -  -
17276  32 132 232 332 132 32   -  -   -  -
17277  33 133 233 333   -  - 233 33   -  -
17278  34 134 234 334 134 34   -  -   -  -
17279  35 135 235 335   -  -   -  - 335 35
17280  36 136 236 336 136 36 236 36   -  -
17281  37 137 237 337   -  -   -  -   -  -
17282  38 138 238 338 138 38   -  -   -  -
17283  39 139 239 339   -  - 239 39   -  -
17284  40 140 240 340 140 40   -  - 340 40
17285  41 141 241 341   -  -   -  -   -  -
17286  42 142 242 342 142 42 242 42   -  -
17287  43 143 243 343   -  -   -  -   -  -
17288  44 144 244 344 144 44   -  -   -  -
17289  45 145 245 345   -  - 245 45 345 45
17290  46 146 246 346 146 46   -  -   -  -
17291  47 147 247 347   -  -   -  -   -  -
17292  48 148 248 348 148 48 248 48   -  -
17293  49 149 249 349   -  -   -  -   -  -
17294  50 150 250 350 150 50   -  - 350 50
17295  51 151 251 351   -  - 251 51   -  -
17296  52 152 252 352 152 52   -  -   -  -
17297  53 153 253 353   -  -   -  -   -  -
17298  54 154 254 354 154 54 254 54   -  -
17299  55 155 255 355   -  -   -  - 355 55
17300  56 156 256 356 156 56   -  -   -  -
17301  57 157 257 357   -  - 257 57   -  -
17302  58 158 258 358 158 58   -  -   -  -
17303  59 159 259 359   -  -   -  -   -  -
17304  60 160 260 360 160 60 260 60 360 60
17305  61 161 261 361   -  -   -  -   -  -
17306  62 162 262 362 162 62   -  -   -  -
17307  63 163 263 363   -  - 263 63   -  -
17308  64 164 264 364 164 64   -  -   -  -
17309  65 165 265 365   -  -   -  - 365 65
17310  66 166 266 366 166 66 266 66   -  -
17311  67 167 267 367   -  -   -  -   -  -
17312  68 168 268 368 168 68   -  -   -  -
17313  69 169 269 369   -  - 269 69   -  -
17314  70 170 270 370 170 70   -  - 370 70
17315  71 171 271 371   -  -   -  -   -  -
17316  72 172 272 372 172 72 272 72   -  -
17317  73 173 273 373   -  -   -  -   -  -
17318  74 174 274 374 174 74   -  -   -  -
17319  75 175 275 375   -  - 275 75 375 75
17320  76 176 276 376 176 76   -  -   -  -
17321  77 177 277 377   -  -   -  -   -  -
17322  78 178 278 378 178 78 278 78   -  -
17323  79 179 279 379   -  -   -  -   -  -
17324  80 180 280 380 180 80   -  - 380 80
17325  81 181 281 381   -  - 281 81   -  -
17326  82 182 282 382 182 82   -  -   -  -
17327  83 183 283 383   -  -   -  -   -  -
17328  84 184 284 384 184 84 284 84   -  -
17329  85 185 285 385   -  -   -  - 385 85
17330  86 186 286 386 186 86   -  -   -  -
17331  87 187 287 387   -  - 287 87   -  -
17332  88 188 288 388 188 88   -  -   -  -
17333  89 189 289 389   -  -   -  -   -  -
17334  90 190 290 390 190 90 290 90 390 90
17335  91 191 291 391   -  -   -  -   -  -
17336  92 192 292 392 192 92   -  -   -  -
17337  93 193 293 393   -  - 293 93   -  -
17338  94 194 294 394 194 94   -  -   -  -
17339  95 195 295 395   -  -   -  - 395 95
17340  96   - 296 396   -  -   -  -   -  -
17341  97 197   - 397   -  -   -  -   -  -
17342  98 198 298   -   -  -   -  -   -  -
17343  99   -   -   -   -  -   -  -   -  -
17344   -   -   -   -   -  - 200  0   -  -
17345   -   -   -   -   -  -   -  - 300  0
17346}
17347do_execsql_test joinD-585 {
17348  SELECT t1.*, t2.*, t3.*, t4.*
17349  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17350  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17351  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17352  WHERE t2.x>0
17353  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17354} {
17355   2 102 202 302 102  2   -  -   -  -
17356   4 104 204 304 104  4   -  -   -  -
17357   6 106 206 306 106  6 206  6   -  -
17358   8 108 208 308 108  8   -  -   -  -
17359  10 110 210 310 110 10   -  - 310 10
17360  12 112 212 312 112 12 212 12   -  -
17361  14 114 214 314 114 14   -  -   -  -
17362  16 116 216 316 116 16   -  -   -  -
17363  18 118 218 318 118 18 218 18   -  -
17364  20 120 220 320 120 20   -  - 320 20
17365  22 122 222 322 122 22   -  -   -  -
17366  24 124 224 324 124 24 224 24   -  -
17367  26 126 226 326 126 26   -  -   -  -
17368  28 128 228 328 128 28   -  -   -  -
17369  30 130 230 330 130 30 230 30 330 30
17370  32 132 232 332 132 32   -  -   -  -
17371  34 134 234 334 134 34   -  -   -  -
17372  36 136 236 336 136 36 236 36   -  -
17373  38 138 238 338 138 38   -  -   -  -
17374  40 140 240 340 140 40   -  - 340 40
17375  42 142 242 342 142 42 242 42   -  -
17376  44 144 244 344 144 44   -  -   -  -
17377  46 146 246 346 146 46   -  -   -  -
17378  48 148 248 348 148 48 248 48   -  -
17379  50 150 250 350 150 50   -  - 350 50
17380  52 152 252 352 152 52   -  -   -  -
17381  54 154 254 354 154 54 254 54   -  -
17382  56 156 256 356 156 56   -  -   -  -
17383  58 158 258 358 158 58   -  -   -  -
17384  60 160 260 360 160 60 260 60 360 60
17385  62 162 262 362 162 62   -  -   -  -
17386  64 164 264 364 164 64   -  -   -  -
17387  66 166 266 366 166 66 266 66   -  -
17388  68 168 268 368 168 68   -  -   -  -
17389  70 170 270 370 170 70   -  - 370 70
17390  72 172 272 372 172 72 272 72   -  -
17391  74 174 274 374 174 74   -  -   -  -
17392  76 176 276 376 176 76   -  -   -  -
17393  78 178 278 378 178 78 278 78   -  -
17394  80 180 280 380 180 80   -  - 380 80
17395  82 182 282 382 182 82   -  -   -  -
17396  84 184 284 384 184 84 284 84   -  -
17397  86 186 286 386 186 86   -  -   -  -
17398  88 188 288 388 188 88   -  -   -  -
17399  90 190 290 390 190 90 290 90 390 90
17400  92 192 292 392 192 92   -  -   -  -
17401  94 194 294 394 194 94   -  -   -  -
17402}
17403do_execsql_test joinD-586 {
17404  SELECT t1.*, t2.*, t3.*, t4.*
17405  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17406  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17407  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17408  WHERE (t2.x>0 OR t2.x IS NULL)
17409  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17410} {
17411   1 101 201 301   -  -   -  -   -  -
17412   2 102 202 302 102  2   -  -   -  -
17413   3 103 203 303   -  - 203  3   -  -
17414   4 104 204 304 104  4   -  -   -  -
17415   5 105 205 305   -  -   -  - 305  5
17416   6 106 206 306 106  6 206  6   -  -
17417   7 107 207 307   -  -   -  -   -  -
17418   8 108 208 308 108  8   -  -   -  -
17419   9 109 209 309   -  - 209  9   -  -
17420  10 110 210 310 110 10   -  - 310 10
17421  11 111 211 311   -  -   -  -   -  -
17422  12 112 212 312 112 12 212 12   -  -
17423  13 113 213 313   -  -   -  -   -  -
17424  14 114 214 314 114 14   -  -   -  -
17425  15 115 215 315   -  - 215 15 315 15
17426  16 116 216 316 116 16   -  -   -  -
17427  17 117 217 317   -  -   -  -   -  -
17428  18 118 218 318 118 18 218 18   -  -
17429  19 119 219 319   -  -   -  -   -  -
17430  20 120 220 320 120 20   -  - 320 20
17431  21 121 221 321   -  - 221 21   -  -
17432  22 122 222 322 122 22   -  -   -  -
17433  23 123 223 323   -  -   -  -   -  -
17434  24 124 224 324 124 24 224 24   -  -
17435  25 125 225 325   -  -   -  - 325 25
17436  26 126 226 326 126 26   -  -   -  -
17437  27 127 227 327   -  - 227 27   -  -
17438  28 128 228 328 128 28   -  -   -  -
17439  29 129 229 329   -  -   -  -   -  -
17440  30 130 230 330 130 30 230 30 330 30
17441  31 131 231 331   -  -   -  -   -  -
17442  32 132 232 332 132 32   -  -   -  -
17443  33 133 233 333   -  - 233 33   -  -
17444  34 134 234 334 134 34   -  -   -  -
17445  35 135 235 335   -  -   -  - 335 35
17446  36 136 236 336 136 36 236 36   -  -
17447  37 137 237 337   -  -   -  -   -  -
17448  38 138 238 338 138 38   -  -   -  -
17449  39 139 239 339   -  - 239 39   -  -
17450  40 140 240 340 140 40   -  - 340 40
17451  41 141 241 341   -  -   -  -   -  -
17452  42 142 242 342 142 42 242 42   -  -
17453  43 143 243 343   -  -   -  -   -  -
17454  44 144 244 344 144 44   -  -   -  -
17455  45 145 245 345   -  - 245 45 345 45
17456  46 146 246 346 146 46   -  -   -  -
17457  47 147 247 347   -  -   -  -   -  -
17458  48 148 248 348 148 48 248 48   -  -
17459  49 149 249 349   -  -   -  -   -  -
17460  50 150 250 350 150 50   -  - 350 50
17461  51 151 251 351   -  - 251 51   -  -
17462  52 152 252 352 152 52   -  -   -  -
17463  53 153 253 353   -  -   -  -   -  -
17464  54 154 254 354 154 54 254 54   -  -
17465  55 155 255 355   -  -   -  - 355 55
17466  56 156 256 356 156 56   -  -   -  -
17467  57 157 257 357   -  - 257 57   -  -
17468  58 158 258 358 158 58   -  -   -  -
17469  59 159 259 359   -  -   -  -   -  -
17470  60 160 260 360 160 60 260 60 360 60
17471  61 161 261 361   -  -   -  -   -  -
17472  62 162 262 362 162 62   -  -   -  -
17473  63 163 263 363   -  - 263 63   -  -
17474  64 164 264 364 164 64   -  -   -  -
17475  65 165 265 365   -  -   -  - 365 65
17476  66 166 266 366 166 66 266 66   -  -
17477  67 167 267 367   -  -   -  -   -  -
17478  68 168 268 368 168 68   -  -   -  -
17479  69 169 269 369   -  - 269 69   -  -
17480  70 170 270 370 170 70   -  - 370 70
17481  71 171 271 371   -  -   -  -   -  -
17482  72 172 272 372 172 72 272 72   -  -
17483  73 173 273 373   -  -   -  -   -  -
17484  74 174 274 374 174 74   -  -   -  -
17485  75 175 275 375   -  - 275 75 375 75
17486  76 176 276 376 176 76   -  -   -  -
17487  77 177 277 377   -  -   -  -   -  -
17488  78 178 278 378 178 78 278 78   -  -
17489  79 179 279 379   -  -   -  -   -  -
17490  80 180 280 380 180 80   -  - 380 80
17491  81 181 281 381   -  - 281 81   -  -
17492  82 182 282 382 182 82   -  -   -  -
17493  83 183 283 383   -  -   -  -   -  -
17494  84 184 284 384 184 84 284 84   -  -
17495  85 185 285 385   -  -   -  - 385 85
17496  86 186 286 386 186 86   -  -   -  -
17497  87 187 287 387   -  - 287 87   -  -
17498  88 188 288 388 188 88   -  -   -  -
17499  89 189 289 389   -  -   -  -   -  -
17500  90 190 290 390 190 90 290 90 390 90
17501  91 191 291 391   -  -   -  -   -  -
17502  92 192 292 392 192 92   -  -   -  -
17503  93 193 293 393   -  - 293 93   -  -
17504  94 194 294 394 194 94   -  -   -  -
17505  95 195 295 395   -  -   -  - 395 95
17506  96   - 296 396   -  -   -  -   -  -
17507  97 197   - 397   -  -   -  -   -  -
17508  98 198 298   -   -  -   -  -   -  -
17509  99   -   -   -   -  -   -  -   -  -
17510   -   -   -   -   -  - 200  0   -  -
17511   -   -   -   -   -  -   -  - 300  0
17512}
17513do_execsql_test joinD-587 {
17514  SELECT t1.*, t2.*, t3.*, t4.*
17515  FROM t1 LEFT JOIN t2 ON true
17516  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17517  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17518  WHERE t1.b=t2.b AND t2.x>0
17519  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17520} {
17521   2 102 202 302 102  2   -  -   -  -
17522   4 104 204 304 104  4   -  -   -  -
17523   6 106 206 306 106  6 206  6   -  -
17524   8 108 208 308 108  8   -  -   -  -
17525  10 110 210 310 110 10   -  - 310 10
17526  12 112 212 312 112 12 212 12   -  -
17527  14 114 214 314 114 14   -  -   -  -
17528  16 116 216 316 116 16   -  -   -  -
17529  18 118 218 318 118 18 218 18   -  -
17530  20 120 220 320 120 20   -  - 320 20
17531  22 122 222 322 122 22   -  -   -  -
17532  24 124 224 324 124 24 224 24   -  -
17533  26 126 226 326 126 26   -  -   -  -
17534  28 128 228 328 128 28   -  -   -  -
17535  30 130 230 330 130 30 230 30 330 30
17536  32 132 232 332 132 32   -  -   -  -
17537  34 134 234 334 134 34   -  -   -  -
17538  36 136 236 336 136 36 236 36   -  -
17539  38 138 238 338 138 38   -  -   -  -
17540  40 140 240 340 140 40   -  - 340 40
17541  42 142 242 342 142 42 242 42   -  -
17542  44 144 244 344 144 44   -  -   -  -
17543  46 146 246 346 146 46   -  -   -  -
17544  48 148 248 348 148 48 248 48   -  -
17545  50 150 250 350 150 50   -  - 350 50
17546  52 152 252 352 152 52   -  -   -  -
17547  54 154 254 354 154 54 254 54   -  -
17548  56 156 256 356 156 56   -  -   -  -
17549  58 158 258 358 158 58   -  -   -  -
17550  60 160 260 360 160 60 260 60 360 60
17551  62 162 262 362 162 62   -  -   -  -
17552  64 164 264 364 164 64   -  -   -  -
17553  66 166 266 366 166 66 266 66   -  -
17554  68 168 268 368 168 68   -  -   -  -
17555  70 170 270 370 170 70   -  - 370 70
17556  72 172 272 372 172 72 272 72   -  -
17557  74 174 274 374 174 74   -  -   -  -
17558  76 176 276 376 176 76   -  -   -  -
17559  78 178 278 378 178 78 278 78   -  -
17560  80 180 280 380 180 80   -  - 380 80
17561  82 182 282 382 182 82   -  -   -  -
17562  84 184 284 384 184 84 284 84   -  -
17563  86 186 286 386 186 86   -  -   -  -
17564  88 188 288 388 188 88   -  -   -  -
17565  90 190 290 390 190 90 290 90 390 90
17566  92 192 292 392 192 92   -  -   -  -
17567  94 194 294 394 194 94   -  -   -  -
17568}
17569do_execsql_test joinD-588 {
17570  SELECT t1.*, t2.*, t3.*, t4.*
17571  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17572  FULL JOIN t3 ON t1.c=t3.c
17573  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17574  WHERE t3.y>0
17575  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17576} {
17577   3 103 203 303   -  - 203  3   -  -
17578   6 106 206 306 106  6 206  6   -  -
17579   9 109 209 309   -  - 209  9   -  -
17580  12 112 212 312 112 12 212 12   -  -
17581  15 115 215 315   -  - 215 15 315 15
17582  18 118 218 318 118 18 218 18   -  -
17583  21 121 221 321   -  - 221 21   -  -
17584  24 124 224 324 124 24 224 24   -  -
17585  27 127 227 327   -  - 227 27   -  -
17586  30 130 230 330 130 30 230 30 330 30
17587  33 133 233 333   -  - 233 33   -  -
17588  36 136 236 336 136 36 236 36   -  -
17589  39 139 239 339   -  - 239 39   -  -
17590  42 142 242 342 142 42 242 42   -  -
17591  45 145 245 345   -  - 245 45 345 45
17592  48 148 248 348 148 48 248 48   -  -
17593  51 151 251 351   -  - 251 51   -  -
17594  54 154 254 354 154 54 254 54   -  -
17595  57 157 257 357   -  - 257 57   -  -
17596  60 160 260 360 160 60 260 60 360 60
17597  63 163 263 363   -  - 263 63   -  -
17598  66 166 266 366 166 66 266 66   -  -
17599  69 169 269 369   -  - 269 69   -  -
17600  72 172 272 372 172 72 272 72   -  -
17601  75 175 275 375   -  - 275 75 375 75
17602  78 178 278 378 178 78 278 78   -  -
17603  81 181 281 381   -  - 281 81   -  -
17604  84 184 284 384 184 84 284 84   -  -
17605  87 187 287 387   -  - 287 87   -  -
17606  90 190 290 390 190 90 290 90 390 90
17607  93 193 293 393   -  - 293 93   -  -
17608}
17609do_execsql_test joinD-589 {
17610  SELECT t1.*, t2.*, t3.*, t4.*
17611  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17612  FULL JOIN t3 ON t1.c=t3.c
17613  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17614  WHERE t3.y>0 OR t3.y IS NULL
17615  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17616} {
17617   1 101 201 301   -  -   -  -   -  -
17618   2 102 202 302 102  2   -  -   -  -
17619   3 103 203 303   -  - 203  3   -  -
17620   4 104 204 304 104  4   -  -   -  -
17621   5 105 205 305   -  -   -  - 305  5
17622   6 106 206 306 106  6 206  6   -  -
17623   7 107 207 307   -  -   -  -   -  -
17624   8 108 208 308 108  8   -  -   -  -
17625   9 109 209 309   -  - 209  9   -  -
17626  10 110 210 310 110 10   -  - 310 10
17627  11 111 211 311   -  -   -  -   -  -
17628  12 112 212 312 112 12 212 12   -  -
17629  13 113 213 313   -  -   -  -   -  -
17630  14 114 214 314 114 14   -  -   -  -
17631  15 115 215 315   -  - 215 15 315 15
17632  16 116 216 316 116 16   -  -   -  -
17633  17 117 217 317   -  -   -  -   -  -
17634  18 118 218 318 118 18 218 18   -  -
17635  19 119 219 319   -  -   -  -   -  -
17636  20 120 220 320 120 20   -  - 320 20
17637  21 121 221 321   -  - 221 21   -  -
17638  22 122 222 322 122 22   -  -   -  -
17639  23 123 223 323   -  -   -  -   -  -
17640  24 124 224 324 124 24 224 24   -  -
17641  25 125 225 325   -  -   -  - 325 25
17642  26 126 226 326 126 26   -  -   -  -
17643  27 127 227 327   -  - 227 27   -  -
17644  28 128 228 328 128 28   -  -   -  -
17645  29 129 229 329   -  -   -  -   -  -
17646  30 130 230 330 130 30 230 30 330 30
17647  31 131 231 331   -  -   -  -   -  -
17648  32 132 232 332 132 32   -  -   -  -
17649  33 133 233 333   -  - 233 33   -  -
17650  34 134 234 334 134 34   -  -   -  -
17651  35 135 235 335   -  -   -  - 335 35
17652  36 136 236 336 136 36 236 36   -  -
17653  37 137 237 337   -  -   -  -   -  -
17654  38 138 238 338 138 38   -  -   -  -
17655  39 139 239 339   -  - 239 39   -  -
17656  40 140 240 340 140 40   -  - 340 40
17657  41 141 241 341   -  -   -  -   -  -
17658  42 142 242 342 142 42 242 42   -  -
17659  43 143 243 343   -  -   -  -   -  -
17660  44 144 244 344 144 44   -  -   -  -
17661  45 145 245 345   -  - 245 45 345 45
17662  46 146 246 346 146 46   -  -   -  -
17663  47 147 247 347   -  -   -  -   -  -
17664  48 148 248 348 148 48 248 48   -  -
17665  49 149 249 349   -  -   -  -   -  -
17666  50 150 250 350 150 50   -  - 350 50
17667  51 151 251 351   -  - 251 51   -  -
17668  52 152 252 352 152 52   -  -   -  -
17669  53 153 253 353   -  -   -  -   -  -
17670  54 154 254 354 154 54 254 54   -  -
17671  55 155 255 355   -  -   -  - 355 55
17672  56 156 256 356 156 56   -  -   -  -
17673  57 157 257 357   -  - 257 57   -  -
17674  58 158 258 358 158 58   -  -   -  -
17675  59 159 259 359   -  -   -  -   -  -
17676  60 160 260 360 160 60 260 60 360 60
17677  61 161 261 361   -  -   -  -   -  -
17678  62 162 262 362 162 62   -  -   -  -
17679  63 163 263 363   -  - 263 63   -  -
17680  64 164 264 364 164 64   -  -   -  -
17681  65 165 265 365   -  -   -  - 365 65
17682  66 166 266 366 166 66 266 66   -  -
17683  67 167 267 367   -  -   -  -   -  -
17684  68 168 268 368 168 68   -  -   -  -
17685  69 169 269 369   -  - 269 69   -  -
17686  70 170 270 370 170 70   -  - 370 70
17687  71 171 271 371   -  -   -  -   -  -
17688  72 172 272 372 172 72 272 72   -  -
17689  73 173 273 373   -  -   -  -   -  -
17690  74 174 274 374 174 74   -  -   -  -
17691  75 175 275 375   -  - 275 75 375 75
17692  76 176 276 376 176 76   -  -   -  -
17693  77 177 277 377   -  -   -  -   -  -
17694  78 178 278 378 178 78 278 78   -  -
17695  79 179 279 379   -  -   -  -   -  -
17696  80 180 280 380 180 80   -  - 380 80
17697  81 181 281 381   -  - 281 81   -  -
17698  82 182 282 382 182 82   -  -   -  -
17699  83 183 283 383   -  -   -  -   -  -
17700  84 184 284 384 184 84 284 84   -  -
17701  85 185 285 385   -  -   -  - 385 85
17702  86 186 286 386 186 86   -  -   -  -
17703  87 187 287 387   -  - 287 87   -  -
17704  88 188 288 388 188 88   -  -   -  -
17705  89 189 289 389   -  -   -  -   -  -
17706  90 190 290 390 190 90 290 90 390 90
17707  91 191 291 391   -  -   -  -   -  -
17708  92 192 292 392 192 92   -  -   -  -
17709  93 193 293 393   -  - 293 93   -  -
17710  94 194 294 394 194 94   -  -   -  -
17711  95 195 295 395   -  -   -  - 395 95
17712  96   - 296 396   -  -   -  -   -  -
17713  97 197   - 397   -  -   -  -   -  -
17714  98 198 298   -   -  -   -  -   -  -
17715  99   -   -   -   -  -   -  -   -  -
17716   -   -   -   -   -  -   -  - 300  0
17717}
17718do_execsql_test joinD-590 {
17719  SELECT t1.*, t2.*, t3.*, t4.*
17720  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17721  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17722  FULL JOIN t4 ON t1.d=t4.d
17723  WHERE t4.z>0
17724  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17725} {
17726   5 105 205 305   -  -   -  - 305  5
17727  10 110 210 310 110 10   -  - 310 10
17728  15 115 215 315   -  - 215 15 315 15
17729  20 120 220 320 120 20   -  - 320 20
17730  25 125 225 325   -  -   -  - 325 25
17731  30 130 230 330 130 30 230 30 330 30
17732  35 135 235 335   -  -   -  - 335 35
17733  40 140 240 340 140 40   -  - 340 40
17734  45 145 245 345   -  - 245 45 345 45
17735  50 150 250 350 150 50   -  - 350 50
17736  55 155 255 355   -  -   -  - 355 55
17737  60 160 260 360 160 60 260 60 360 60
17738  65 165 265 365   -  -   -  - 365 65
17739  70 170 270 370 170 70   -  - 370 70
17740  75 175 275 375   -  - 275 75 375 75
17741  80 180 280 380 180 80   -  - 380 80
17742  85 185 285 385   -  -   -  - 385 85
17743  90 190 290 390 190 90 290 90 390 90
17744  95 195 295 395   -  -   -  - 395 95
17745}
17746do_execsql_test joinD-591 {
17747  SELECT t1.*, t2.*, t3.*, t4.*
17748  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17749  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17750  FULL JOIN t4 ON t1.d=t4.d
17751  WHERE t4.z IS NULL OR t4.z>0
17752  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17753} {
17754   1 101 201 301   -  -   -  -   -  -
17755   2 102 202 302 102  2   -  -   -  -
17756   3 103 203 303   -  - 203  3   -  -
17757   4 104 204 304 104  4   -  -   -  -
17758   5 105 205 305   -  -   -  - 305  5
17759   6 106 206 306 106  6 206  6   -  -
17760   7 107 207 307   -  -   -  -   -  -
17761   8 108 208 308 108  8   -  -   -  -
17762   9 109 209 309   -  - 209  9   -  -
17763  10 110 210 310 110 10   -  - 310 10
17764  11 111 211 311   -  -   -  -   -  -
17765  12 112 212 312 112 12 212 12   -  -
17766  13 113 213 313   -  -   -  -   -  -
17767  14 114 214 314 114 14   -  -   -  -
17768  15 115 215 315   -  - 215 15 315 15
17769  16 116 216 316 116 16   -  -   -  -
17770  17 117 217 317   -  -   -  -   -  -
17771  18 118 218 318 118 18 218 18   -  -
17772  19 119 219 319   -  -   -  -   -  -
17773  20 120 220 320 120 20   -  - 320 20
17774  21 121 221 321   -  - 221 21   -  -
17775  22 122 222 322 122 22   -  -   -  -
17776  23 123 223 323   -  -   -  -   -  -
17777  24 124 224 324 124 24 224 24   -  -
17778  25 125 225 325   -  -   -  - 325 25
17779  26 126 226 326 126 26   -  -   -  -
17780  27 127 227 327   -  - 227 27   -  -
17781  28 128 228 328 128 28   -  -   -  -
17782  29 129 229 329   -  -   -  -   -  -
17783  30 130 230 330 130 30 230 30 330 30
17784  31 131 231 331   -  -   -  -   -  -
17785  32 132 232 332 132 32   -  -   -  -
17786  33 133 233 333   -  - 233 33   -  -
17787  34 134 234 334 134 34   -  -   -  -
17788  35 135 235 335   -  -   -  - 335 35
17789  36 136 236 336 136 36 236 36   -  -
17790  37 137 237 337   -  -   -  -   -  -
17791  38 138 238 338 138 38   -  -   -  -
17792  39 139 239 339   -  - 239 39   -  -
17793  40 140 240 340 140 40   -  - 340 40
17794  41 141 241 341   -  -   -  -   -  -
17795  42 142 242 342 142 42 242 42   -  -
17796  43 143 243 343   -  -   -  -   -  -
17797  44 144 244 344 144 44   -  -   -  -
17798  45 145 245 345   -  - 245 45 345 45
17799  46 146 246 346 146 46   -  -   -  -
17800  47 147 247 347   -  -   -  -   -  -
17801  48 148 248 348 148 48 248 48   -  -
17802  49 149 249 349   -  -   -  -   -  -
17803  50 150 250 350 150 50   -  - 350 50
17804  51 151 251 351   -  - 251 51   -  -
17805  52 152 252 352 152 52   -  -   -  -
17806  53 153 253 353   -  -   -  -   -  -
17807  54 154 254 354 154 54 254 54   -  -
17808  55 155 255 355   -  -   -  - 355 55
17809  56 156 256 356 156 56   -  -   -  -
17810  57 157 257 357   -  - 257 57   -  -
17811  58 158 258 358 158 58   -  -   -  -
17812  59 159 259 359   -  -   -  -   -  -
17813  60 160 260 360 160 60 260 60 360 60
17814  61 161 261 361   -  -   -  -   -  -
17815  62 162 262 362 162 62   -  -   -  -
17816  63 163 263 363   -  - 263 63   -  -
17817  64 164 264 364 164 64   -  -   -  -
17818  65 165 265 365   -  -   -  - 365 65
17819  66 166 266 366 166 66 266 66   -  -
17820  67 167 267 367   -  -   -  -   -  -
17821  68 168 268 368 168 68   -  -   -  -
17822  69 169 269 369   -  - 269 69   -  -
17823  70 170 270 370 170 70   -  - 370 70
17824  71 171 271 371   -  -   -  -   -  -
17825  72 172 272 372 172 72 272 72   -  -
17826  73 173 273 373   -  -   -  -   -  -
17827  74 174 274 374 174 74   -  -   -  -
17828  75 175 275 375   -  - 275 75 375 75
17829  76 176 276 376 176 76   -  -   -  -
17830  77 177 277 377   -  -   -  -   -  -
17831  78 178 278 378 178 78 278 78   -  -
17832  79 179 279 379   -  -   -  -   -  -
17833  80 180 280 380 180 80   -  - 380 80
17834  81 181 281 381   -  - 281 81   -  -
17835  82 182 282 382 182 82   -  -   -  -
17836  83 183 283 383   -  -   -  -   -  -
17837  84 184 284 384 184 84 284 84   -  -
17838  85 185 285 385   -  -   -  - 385 85
17839  86 186 286 386 186 86   -  -   -  -
17840  87 187 287 387   -  - 287 87   -  -
17841  88 188 288 388 188 88   -  -   -  -
17842  89 189 289 389   -  -   -  -   -  -
17843  90 190 290 390 190 90 290 90 390 90
17844  91 191 291 391   -  -   -  -   -  -
17845  92 192 292 392 192 92   -  -   -  -
17846  93 193 293 393   -  - 293 93   -  -
17847  94 194 294 394 194 94   -  -   -  -
17848  95 195 295 395   -  -   -  - 395 95
17849  96   - 296 396   -  -   -  -   -  -
17850  97 197   - 397   -  -   -  -   -  -
17851  98 198 298   -   -  -   -  -   -  -
17852  99   -   -   -   -  -   -  -   -  -
17853   -   -   -   -   -  - 200  0   -  -
17854}
17855do_execsql_test joinD-592 {
17856  SELECT t1.*, t2.*, t3.*, t4.*
17857  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17858  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17859  FULL JOIN t4 ON t1.d=t4.d
17860  WHERE t2.x>0 AND t4.z>0
17861  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17862} {
17863  10 110 210 310 110 10   -  - 310 10
17864  20 120 220 320 120 20   -  - 320 20
17865  30 130 230 330 130 30 230 30 330 30
17866  40 140 240 340 140 40   -  - 340 40
17867  50 150 250 350 150 50   -  - 350 50
17868  60 160 260 360 160 60 260 60 360 60
17869  70 170 270 370 170 70   -  - 370 70
17870  80 180 280 380 180 80   -  - 380 80
17871  90 190 290 390 190 90 290 90 390 90
17872}
17873do_execsql_test joinD-593 {
17874  SELECT t1.*, t2.*, t3.*, t4.*
17875  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17876  FULL JOIN t3 ON t1.c=t3.c
17877  FULL JOIN t4 ON t1.d=t4.d
17878  WHERE t4.z>0 AND t3.y>0
17879  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17880} {
17881  15 115 215 315   -  - 215 15 315 15
17882  30 130 230 330 130 30 230 30 330 30
17883  45 145 245 345   -  - 245 45 345 45
17884  60 160 260 360 160 60 260 60 360 60
17885  75 175 275 375   -  - 275 75 375 75
17886  90 190 290 390 190 90 290 90 390 90
17887}
17888do_execsql_test joinD-594 {
17889  SELECT t1.*, t2.*, t3.*, t4.*
17890  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17891  FULL JOIN t3 ON t1.c=t3.c
17892  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17893  WHERE t2.x>0 AND t3.y>0
17894  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17895} {
17896   6 106 206 306 106  6 206  6   -  -
17897  12 112 212 312 112 12 212 12   -  -
17898  18 118 218 318 118 18 218 18   -  -
17899  24 124 224 324 124 24 224 24   -  -
17900  30 130 230 330 130 30 230 30 330 30
17901  36 136 236 336 136 36 236 36   -  -
17902  42 142 242 342 142 42 242 42   -  -
17903  48 148 248 348 148 48 248 48   -  -
17904  54 154 254 354 154 54 254 54   -  -
17905  60 160 260 360 160 60 260 60 360 60
17906  66 166 266 366 166 66 266 66   -  -
17907  72 172 272 372 172 72 272 72   -  -
17908  78 178 278 378 178 78 278 78   -  -
17909  84 184 284 384 184 84 284 84   -  -
17910  90 190 290 390 190 90 290 90 390 90
17911}
17912do_execsql_test joinD-595 {
17913  SELECT t1.*, t2.*, t3.*, t4.*
17914  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17915  FULL JOIN t3 ON t1.c=t3.c
17916  FULL JOIN t4 ON t1.d=t4.d
17917  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
17918  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17919} {
17920  30 130 230 330 130 30 230 30 330 30
17921  60 160 260 360 160 60 260 60 360 60
17922  90 190 290 390 190 90 290 90 390 90
17923}
17924do_execsql_test joinD-596 {
17925  SELECT t1.*, t2.*, t3.*, t4.*
17926  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
17927  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17928  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
17929  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17930} {
17931   0 100 200 300   -  -   -  -   -  -
17932   1 101 201 301   -  -   -  -   -  -
17933   2 102 202 302 102  2   -  -   -  -
17934   3 103 203 303   -  - 203  3   -  -
17935   4 104 204 304 104  4   -  -   -  -
17936   5 105 205 305   -  -   -  - 305  5
17937   6 106 206 306 106  6 206  6   -  -
17938   7 107 207 307   -  -   -  -   -  -
17939   8 108 208 308 108  8   -  -   -  -
17940   9 109 209 309   -  - 209  9   -  -
17941  10 110 210 310 110 10   -  - 310 10
17942  11 111 211 311   -  -   -  -   -  -
17943  12 112 212 312 112 12 212 12   -  -
17944  13 113 213 313   -  -   -  -   -  -
17945  14 114 214 314 114 14   -  -   -  -
17946  15 115 215 315   -  - 215 15 315 15
17947  16 116 216 316 116 16   -  -   -  -
17948  17 117 217 317   -  -   -  -   -  -
17949  18 118 218 318 118 18 218 18   -  -
17950  19 119 219 319   -  -   -  -   -  -
17951  20 120 220 320 120 20   -  - 320 20
17952  21 121 221 321   -  - 221 21   -  -
17953  22 122 222 322 122 22   -  -   -  -
17954  23 123 223 323   -  -   -  -   -  -
17955  24 124 224 324 124 24 224 24   -  -
17956  25 125 225 325   -  -   -  - 325 25
17957  26 126 226 326 126 26   -  -   -  -
17958  27 127 227 327   -  - 227 27   -  -
17959  28 128 228 328 128 28   -  -   -  -
17960  29 129 229 329   -  -   -  -   -  -
17961  30 130 230 330 130 30 230 30 330 30
17962  31 131 231 331   -  -   -  -   -  -
17963  32 132 232 332 132 32   -  -   -  -
17964  33 133 233 333   -  - 233 33   -  -
17965  34 134 234 334 134 34   -  -   -  -
17966  35 135 235 335   -  -   -  - 335 35
17967  36 136 236 336 136 36 236 36   -  -
17968  37 137 237 337   -  -   -  -   -  -
17969  38 138 238 338 138 38   -  -   -  -
17970  39 139 239 339   -  - 239 39   -  -
17971  40 140 240 340 140 40   -  - 340 40
17972  41 141 241 341   -  -   -  -   -  -
17973  42 142 242 342 142 42 242 42   -  -
17974  43 143 243 343   -  -   -  -   -  -
17975  44 144 244 344 144 44   -  -   -  -
17976  45 145 245 345   -  - 245 45 345 45
17977  46 146 246 346 146 46   -  -   -  -
17978  47 147 247 347   -  -   -  -   -  -
17979  48 148 248 348 148 48 248 48   -  -
17980  49 149 249 349   -  -   -  -   -  -
17981  50 150 250 350 150 50   -  - 350 50
17982  51 151 251 351   -  - 251 51   -  -
17983  52 152 252 352 152 52   -  -   -  -
17984  53 153 253 353   -  -   -  -   -  -
17985  54 154 254 354 154 54 254 54   -  -
17986  55 155 255 355   -  -   -  - 355 55
17987  56 156 256 356 156 56   -  -   -  -
17988  57 157 257 357   -  - 257 57   -  -
17989  58 158 258 358 158 58   -  -   -  -
17990  59 159 259 359   -  -   -  -   -  -
17991  60 160 260 360 160 60 260 60 360 60
17992  61 161 261 361   -  -   -  -   -  -
17993  62 162 262 362 162 62   -  -   -  -
17994  63 163 263 363   -  - 263 63   -  -
17995  64 164 264 364 164 64   -  -   -  -
17996  65 165 265 365   -  -   -  - 365 65
17997  66 166 266 366 166 66 266 66   -  -
17998  67 167 267 367   -  -   -  -   -  -
17999  68 168 268 368 168 68   -  -   -  -
18000  69 169 269 369   -  - 269 69   -  -
18001  70 170 270 370 170 70   -  - 370 70
18002  71 171 271 371   -  -   -  -   -  -
18003  72 172 272 372 172 72 272 72   -  -
18004  73 173 273 373   -  -   -  -   -  -
18005  74 174 274 374 174 74   -  -   -  -
18006  75 175 275 375   -  - 275 75 375 75
18007  76 176 276 376 176 76   -  -   -  -
18008  77 177 277 377   -  -   -  -   -  -
18009  78 178 278 378 178 78 278 78   -  -
18010  79 179 279 379   -  -   -  -   -  -
18011  80 180 280 380 180 80   -  - 380 80
18012  81 181 281 381   -  - 281 81   -  -
18013  82 182 282 382 182 82   -  -   -  -
18014  83 183 283 383   -  -   -  -   -  -
18015  84 184 284 384 184 84 284 84   -  -
18016  85 185 285 385   -  -   -  - 385 85
18017  86 186 286 386 186 86   -  -   -  -
18018  87 187 287 387   -  - 287 87   -  -
18019  88 188 288 388 188 88   -  -   -  -
18020  89 189 289 389   -  -   -  -   -  -
18021  90 190 290 390 190 90 290 90 390 90
18022  91 191 291 391   -  -   -  -   -  -
18023  92 192 292 392 192 92   -  -   -  -
18024  93 193 293 393   -  - 293 93   -  -
18025  94 194 294 394 194 94   -  -   -  -
18026  95 195 295 395   -  -   -  - 395 95
18027  96   - 296 396   -  -   -  -   -  -
18028  97 197   - 397   -  -   -  -   -  -
18029  98 198 298   -   -  -   -  -   -  -
18030  99   -   -   -   -  -   -  -   -  -
18031   -   -   -   -   -  - 200  0   -  -
18032   -   -   -   -   -  -   -  - 300  0
18033}
18034do_execsql_test joinD-597 {
18035  SELECT t1.*, t2.*, t3.*, t4.*
18036  FROM t1 LEFT JOIN t2 ON t2.x>0
18037  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
18038  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
18039  WHERE t1.b IS NOT DISTINCT FROM t2.b
18040  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18041} {
18042   2 102 202 302 102  2   -  -   -  -
18043   4 104 204 304 104  4   -  -   -  -
18044   6 106 206 306 106  6 206  6   -  -
18045   8 108 208 308 108  8   -  -   -  -
18046  10 110 210 310 110 10   -  - 310 10
18047  12 112 212 312 112 12 212 12   -  -
18048  14 114 214 314 114 14   -  -   -  -
18049  16 116 216 316 116 16   -  -   -  -
18050  18 118 218 318 118 18 218 18   -  -
18051  20 120 220 320 120 20   -  - 320 20
18052  22 122 222 322 122 22   -  -   -  -
18053  24 124 224 324 124 24 224 24   -  -
18054  26 126 226 326 126 26   -  -   -  -
18055  28 128 228 328 128 28   -  -   -  -
18056  30 130 230 330 130 30 230 30 330 30
18057  32 132 232 332 132 32   -  -   -  -
18058  34 134 234 334 134 34   -  -   -  -
18059  36 136 236 336 136 36 236 36   -  -
18060  38 138 238 338 138 38   -  -   -  -
18061  40 140 240 340 140 40   -  - 340 40
18062  42 142 242 342 142 42 242 42   -  -
18063  44 144 244 344 144 44   -  -   -  -
18064  46 146 246 346 146 46   -  -   -  -
18065  48 148 248 348 148 48 248 48   -  -
18066  50 150 250 350 150 50   -  - 350 50
18067  52 152 252 352 152 52   -  -   -  -
18068  54 154 254 354 154 54 254 54   -  -
18069  56 156 256 356 156 56   -  -   -  -
18070  58 158 258 358 158 58   -  -   -  -
18071  60 160 260 360 160 60 260 60 360 60
18072  62 162 262 362 162 62   -  -   -  -
18073  64 164 264 364 164 64   -  -   -  -
18074  66 166 266 366 166 66 266 66   -  -
18075  68 168 268 368 168 68   -  -   -  -
18076  70 170 270 370 170 70   -  - 370 70
18077  72 172 272 372 172 72 272 72   -  -
18078  74 174 274 374 174 74   -  -   -  -
18079  76 176 276 376 176 76   -  -   -  -
18080  78 178 278 378 178 78 278 78   -  -
18081  80 180 280 380 180 80   -  - 380 80
18082  82 182 282 382 182 82   -  -   -  -
18083  84 184 284 384 184 84 284 84   -  -
18084  86 186 286 386 186 86   -  -   -  -
18085  88 188 288 388 188 88   -  -   -  -
18086  90 190 290 390 190 90 290 90 390 90
18087  92 192 292 392 192 92   -  -   -  -
18088  94 194 294 394 194 94   -  -   -  -
18089   -   -   -   -   -  - 200  0   -  -
18090   -   -   -   -   -  -   -  - 300  0
18091}
18092do_execsql_test joinD-598 {
18093  SELECT t1.*, t2.*, t3.*, t4.*
18094  FROM t1 LEFT JOIN t2 ON t2.x>0
18095  FULL JOIN t3 ON t3.y>0
18096  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
18097  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
18098  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18099} {
18100   6 106 206 306 106  6 206  6   -  -
18101  12 112 212 312 112 12 212 12   -  -
18102  18 118 218 318 118 18 218 18   -  -
18103  24 124 224 324 124 24 224 24   -  -
18104  30 130 230 330 130 30 230 30 330 30
18105  36 136 236 336 136 36 236 36   -  -
18106  42 142 242 342 142 42 242 42   -  -
18107  48 148 248 348 148 48 248 48   -  -
18108  54 154 254 354 154 54 254 54   -  -
18109  60 160 260 360 160 60 260 60 360 60
18110  66 166 266 366 166 66 266 66   -  -
18111  72 172 272 372 172 72 272 72   -  -
18112  78 178 278 378 178 78 278 78   -  -
18113  84 184 284 384 184 84 284 84   -  -
18114  90 190 290 390 190 90 290 90 390 90
18115}
18116do_execsql_test joinD-599 {
18117  SELECT t1.*, t2.*, t3.*, t4.*
18118  FROM t1 LEFT JOIN t2 ON t2.x>0
18119  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
18120  FULL JOIN t4 ON t4.z>0
18121  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
18122  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18123} {
18124  10 110 210 310 110 10   -  - 310 10
18125  20 120 220 320 120 20   -  - 320 20
18126  30 130 230 330 130 30 230 30 330 30
18127  40 140 240 340 140 40   -  - 340 40
18128  50 150 250 350 150 50   -  - 350 50
18129  60 160 260 360 160 60 260 60 360 60
18130  70 170 270 370 170 70   -  - 370 70
18131  80 180 280 380 180 80   -  - 380 80
18132  90 190 290 390 190 90 290 90 390 90
18133}
18134do_execsql_test joinD-600 {
18135  SELECT t1.*, t2.*, t3.*, t4.*
18136  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
18137  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
18138  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
18139  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18140} {
18141   0 100 200 300   -  -   -  -   -  -
18142   1 101 201 301   -  -   -  -   -  -
18143   2 102 202 302 102  2   -  -   -  -
18144   3 103 203 303   -  - 203  3   -  -
18145   4 104 204 304 104  4   -  -   -  -
18146   5 105 205 305   -  -   -  - 305  5
18147   6 106 206 306 106  6 206  6   -  -
18148   7 107 207 307   -  -   -  -   -  -
18149   8 108 208 308 108  8   -  -   -  -
18150   9 109 209 309   -  - 209  9   -  -
18151  10 110 210 310 110 10   -  - 310 10
18152  11 111 211 311   -  -   -  -   -  -
18153  12 112 212 312 112 12 212 12   -  -
18154  13 113 213 313   -  -   -  -   -  -
18155  14 114 214 314 114 14   -  -   -  -
18156  15 115 215 315   -  - 215 15 315 15
18157  16 116 216 316 116 16   -  -   -  -
18158  17 117 217 317   -  -   -  -   -  -
18159  18 118 218 318 118 18 218 18   -  -
18160  19 119 219 319   -  -   -  -   -  -
18161  20 120 220 320 120 20   -  - 320 20
18162  21 121 221 321   -  - 221 21   -  -
18163  22 122 222 322 122 22   -  -   -  -
18164  23 123 223 323   -  -   -  -   -  -
18165  24 124 224 324 124 24 224 24   -  -
18166  25 125 225 325   -  -   -  - 325 25
18167  26 126 226 326 126 26   -  -   -  -
18168  27 127 227 327   -  - 227 27   -  -
18169  28 128 228 328 128 28   -  -   -  -
18170  29 129 229 329   -  -   -  -   -  -
18171  30 130 230 330 130 30 230 30 330 30
18172  31 131 231 331   -  -   -  -   -  -
18173  32 132 232 332 132 32   -  -   -  -
18174  33 133 233 333   -  - 233 33   -  -
18175  34 134 234 334 134 34   -  -   -  -
18176  35 135 235 335   -  -   -  - 335 35
18177  36 136 236 336 136 36 236 36   -  -
18178  37 137 237 337   -  -   -  -   -  -
18179  38 138 238 338 138 38   -  -   -  -
18180  39 139 239 339   -  - 239 39   -  -
18181  40 140 240 340 140 40   -  - 340 40
18182  41 141 241 341   -  -   -  -   -  -
18183  42 142 242 342 142 42 242 42   -  -
18184  43 143 243 343   -  -   -  -   -  -
18185  44 144 244 344 144 44   -  -   -  -
18186  45 145 245 345   -  - 245 45 345 45
18187  46 146 246 346 146 46   -  -   -  -
18188  47 147 247 347   -  -   -  -   -  -
18189  48 148 248 348 148 48 248 48   -  -
18190  49 149 249 349   -  -   -  -   -  -
18191  50 150 250 350 150 50   -  - 350 50
18192  51 151 251 351   -  - 251 51   -  -
18193  52 152 252 352 152 52   -  -   -  -
18194  53 153 253 353   -  -   -  -   -  -
18195  54 154 254 354 154 54 254 54   -  -
18196  55 155 255 355   -  -   -  - 355 55
18197  56 156 256 356 156 56   -  -   -  -
18198  57 157 257 357   -  - 257 57   -  -
18199  58 158 258 358 158 58   -  -   -  -
18200  59 159 259 359   -  -   -  -   -  -
18201  60 160 260 360 160 60 260 60 360 60
18202  61 161 261 361   -  -   -  -   -  -
18203  62 162 262 362 162 62   -  -   -  -
18204  63 163 263 363   -  - 263 63   -  -
18205  64 164 264 364 164 64   -  -   -  -
18206  65 165 265 365   -  -   -  - 365 65
18207  66 166 266 366 166 66 266 66   -  -
18208  67 167 267 367   -  -   -  -   -  -
18209  68 168 268 368 168 68   -  -   -  -
18210  69 169 269 369   -  - 269 69   -  -
18211  70 170 270 370 170 70   -  - 370 70
18212  71 171 271 371   -  -   -  -   -  -
18213  72 172 272 372 172 72 272 72   -  -
18214  73 173 273 373   -  -   -  -   -  -
18215  74 174 274 374 174 74   -  -   -  -
18216  75 175 275 375   -  - 275 75 375 75
18217  76 176 276 376 176 76   -  -   -  -
18218  77 177 277 377   -  -   -  -   -  -
18219  78 178 278 378 178 78 278 78   -  -
18220  79 179 279 379   -  -   -  -   -  -
18221  80 180 280 380 180 80   -  - 380 80
18222  81 181 281 381   -  - 281 81   -  -
18223  82 182 282 382 182 82   -  -   -  -
18224  83 183 283 383   -  -   -  -   -  -
18225  84 184 284 384 184 84 284 84   -  -
18226  85 185 285 385   -  -   -  - 385 85
18227  86 186 286 386 186 86   -  -   -  -
18228  87 187 287 387   -  - 287 87   -  -
18229  88 188 288 388 188 88   -  -   -  -
18230  89 189 289 389   -  -   -  -   -  -
18231  90 190 290 390 190 90 290 90 390 90
18232  91 191 291 391   -  -   -  -   -  -
18233  92 192 292 392 192 92   -  -   -  -
18234  93 193 293 393   -  - 293 93   -  -
18235  94 194 294 394 194 94   -  -   -  -
18236  95 195 295 395   -  -   -  - 395 95
18237  96   - 296 396   -  -   -  -   -  -
18238  97 197   - 397   -  -   -  -   -  -
18239  98 198 298   -   -  -   -  -   -  -
18240  99   -   -   -   -  -   -  -   -  -
18241   -   -   -   -   -  - 200  0   -  -
18242   -   -   -   -   -  -   -  - 300  0
18243}
18244do_execsql_test joinD-601 {
18245  SELECT t1.*, t2.*, t3.*, t4.*
18246  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18247  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18248  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18249  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18250} {
18251  30 130 230 330 130 30 230 30 330 30
18252  60 160 260 360 160 60 260 60 360 60
18253  90 190 290 390 190 90 290 90 390 90
18254}
18255do_execsql_test joinD-602 {
18256  SELECT t1.*, t2.*, t3.*, t4.*
18257  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18258  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18259  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18260  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18261} {
18262  30 130 230 330 130 30 230 30 330 30
18263  60 160 260 360 160 60 260 60 360 60
18264  90 190 290 390 190 90 290 90 390 90
18265}
18266do_execsql_test joinD-603 {
18267  SELECT t1.*, t2.*, t3.*, t4.*
18268  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18269  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18270  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18271  WHERE t2.x>0
18272  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18273} {
18274  30 130 230 330 130 30 230 30 330 30
18275  60 160 260 360 160 60 260 60 360 60
18276  90 190 290 390 190 90 290 90 390 90
18277}
18278do_execsql_test joinD-604 {
18279  SELECT t1.*, t2.*, t3.*, t4.*
18280  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18281  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18282  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18283  WHERE (t2.x>0 OR t2.x IS NULL)
18284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18285} {
18286  30 130 230 330 130 30 230 30 330 30
18287  60 160 260 360 160 60 260 60 360 60
18288  90 190 290 390 190 90 290 90 390 90
18289}
18290do_execsql_test joinD-605 {
18291  SELECT t1.*, t2.*, t3.*, t4.*
18292  FROM t1 RIGHT JOIN t2 ON true
18293  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18294  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18295  WHERE t1.b=t2.b AND t2.x>0
18296  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18297} {
18298  30 130 230 330 130 30 230 30 330 30
18299  60 160 260 360 160 60 260 60 360 60
18300  90 190 290 390 190 90 290 90 390 90
18301}
18302do_execsql_test joinD-606 {
18303  SELECT t1.*, t2.*, t3.*, t4.*
18304  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18305  INNER JOIN t3 ON t1.c=t3.c
18306  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18307  WHERE t3.y>0
18308  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18309} {
18310  30 130 230 330 130 30 230 30 330 30
18311  60 160 260 360 160 60 260 60 360 60
18312  90 190 290 390 190 90 290 90 390 90
18313}
18314do_execsql_test joinD-607 {
18315  SELECT t1.*, t2.*, t3.*, t4.*
18316  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18317  INNER JOIN t3 ON t1.c=t3.c
18318  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18319  WHERE t3.y>0 OR t3.y IS NULL
18320  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18321} {
18322  30 130 230 330 130 30 230 30 330 30
18323  60 160 260 360 160 60 260 60 360 60
18324  90 190 290 390 190 90 290 90 390 90
18325}
18326do_execsql_test joinD-608 {
18327  SELECT t1.*, t2.*, t3.*, t4.*
18328  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18329  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18330  INNER JOIN t4 ON t1.d=t4.d
18331  WHERE t4.z>0
18332  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18333} {
18334  30 130 230 330 130 30 230 30 330 30
18335  60 160 260 360 160 60 260 60 360 60
18336  90 190 290 390 190 90 290 90 390 90
18337}
18338do_execsql_test joinD-609 {
18339  SELECT t1.*, t2.*, t3.*, t4.*
18340  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18341  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18342  INNER JOIN t4 ON t1.d=t4.d
18343  WHERE t4.z IS NULL OR t4.z>0
18344  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18345} {
18346  30 130 230 330 130 30 230 30 330 30
18347  60 160 260 360 160 60 260 60 360 60
18348  90 190 290 390 190 90 290 90 390 90
18349}
18350do_execsql_test joinD-610 {
18351  SELECT t1.*, t2.*, t3.*, t4.*
18352  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18353  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18354  INNER JOIN t4 ON t1.d=t4.d
18355  WHERE t2.x>0 AND t4.z>0
18356  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18357} {
18358  30 130 230 330 130 30 230 30 330 30
18359  60 160 260 360 160 60 260 60 360 60
18360  90 190 290 390 190 90 290 90 390 90
18361}
18362do_execsql_test joinD-611 {
18363  SELECT t1.*, t2.*, t3.*, t4.*
18364  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18365  INNER JOIN t3 ON t1.c=t3.c
18366  INNER JOIN t4 ON t1.d=t4.d
18367  WHERE t4.z>0 AND t3.y>0
18368  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18369} {
18370  30 130 230 330 130 30 230 30 330 30
18371  60 160 260 360 160 60 260 60 360 60
18372  90 190 290 390 190 90 290 90 390 90
18373}
18374do_execsql_test joinD-612 {
18375  SELECT t1.*, t2.*, t3.*, t4.*
18376  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18377  INNER JOIN t3 ON t1.c=t3.c
18378  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18379  WHERE t2.x>0 AND t3.y>0
18380  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18381} {
18382  30 130 230 330 130 30 230 30 330 30
18383  60 160 260 360 160 60 260 60 360 60
18384  90 190 290 390 190 90 290 90 390 90
18385}
18386do_execsql_test joinD-613 {
18387  SELECT t1.*, t2.*, t3.*, t4.*
18388  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18389  INNER JOIN t3 ON t1.c=t3.c
18390  INNER JOIN t4 ON t1.d=t4.d
18391  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
18392  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18393} {
18394  30 130 230 330 130 30 230 30 330 30
18395  60 160 260 360 160 60 260 60 360 60
18396  90 190 290 390 190 90 290 90 390 90
18397}
18398do_execsql_test joinD-614 {
18399  SELECT t1.*, t2.*, t3.*, t4.*
18400  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18401  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18402  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18403  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18404} {
18405  30 130 230 330 130 30 230 30 330 30
18406  60 160 260 360 160 60 260 60 360 60
18407  90 190 290 390 190 90 290 90 390 90
18408}
18409do_execsql_test joinD-615 {
18410  SELECT t1.*, t2.*, t3.*, t4.*
18411  FROM t1 RIGHT JOIN t2 ON t2.x>0
18412  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18413  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18414  WHERE t1.b IS NOT DISTINCT FROM t2.b
18415  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18416} {
18417  30 130 230 330 130 30 230 30 330 30
18418  60 160 260 360 160 60 260 60 360 60
18419  90 190 290 390 190 90 290 90 390 90
18420}
18421do_execsql_test joinD-616 {
18422  SELECT t1.*, t2.*, t3.*, t4.*
18423  FROM t1 RIGHT JOIN t2 ON t2.x>0
18424  INNER JOIN t3 ON t3.y>0
18425  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18426  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
18427  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18428} {
18429  30 130 230 330 130 30 230 30 330 30
18430  60 160 260 360 160 60 260 60 360 60
18431  90 190 290 390 190 90 290 90 390 90
18432}
18433do_execsql_test joinD-617 {
18434  SELECT t1.*, t2.*, t3.*, t4.*
18435  FROM t1 RIGHT JOIN t2 ON t2.x>0
18436  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18437  INNER JOIN t4 ON t4.z>0
18438  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
18439  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18440} {
18441  30 130 230 330 130 30 230 30 330 30
18442  60 160 260 360 160 60 260 60 360 60
18443  90 190 290 390 190 90 290 90 390 90
18444}
18445do_execsql_test joinD-618 {
18446  SELECT t1.*, t2.*, t3.*, t4.*
18447  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
18448  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18449  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18450  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18451} {
18452  30 130 230 330 130 30 230 30 330 30
18453  60 160 260 360 160 60 260 60 360 60
18454  90 190 290 390 190 90 290 90 390 90
18455}
18456do_execsql_test joinD-619 {
18457  SELECT t1.*, t2.*, t3.*, t4.*
18458  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18459  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
18460  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18461  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18462} {
18463  30 130 230 330 130 30 230 30 330 30
18464  60 160 260 360 160 60 260 60 360 60
18465  90 190 290 390 190 90 290 90 390 90
18466}
18467do_execsql_test joinD-620 {
18468  SELECT t1.*, t2.*, t3.*, t4.*
18469  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18470  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18471  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18472  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18473} {
18474   6 106 206 306 106  6 206  6   -  -
18475  12 112 212 312 112 12 212 12   -  -
18476  18 118 218 318 118 18 218 18   -  -
18477  24 124 224 324 124 24 224 24   -  -
18478  30 130 230 330 130 30 230 30 330 30
18479  36 136 236 336 136 36 236 36   -  -
18480  42 142 242 342 142 42 242 42   -  -
18481  48 148 248 348 148 48 248 48   -  -
18482  54 154 254 354 154 54 254 54   -  -
18483  60 160 260 360 160 60 260 60 360 60
18484  66 166 266 366 166 66 266 66   -  -
18485  72 172 272 372 172 72 272 72   -  -
18486  78 178 278 378 178 78 278 78   -  -
18487  84 184 284 384 184 84 284 84   -  -
18488  90 190 290 390 190 90 290 90 390 90
18489}
18490do_execsql_test joinD-621 {
18491  SELECT t1.*, t2.*, t3.*, t4.*
18492  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18493  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18494  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18495  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18496} {
18497   6 106 206 306 106  6 206  6   -  -
18498  12 112 212 312 112 12 212 12   -  -
18499  18 118 218 318 118 18 218 18   -  -
18500  24 124 224 324 124 24 224 24   -  -
18501  30 130 230 330 130 30 230 30 330 30
18502  36 136 236 336 136 36 236 36   -  -
18503  42 142 242 342 142 42 242 42   -  -
18504  48 148 248 348 148 48 248 48   -  -
18505  54 154 254 354 154 54 254 54   -  -
18506  60 160 260 360 160 60 260 60 360 60
18507  66 166 266 366 166 66 266 66   -  -
18508  72 172 272 372 172 72 272 72   -  -
18509  78 178 278 378 178 78 278 78   -  -
18510  84 184 284 384 184 84 284 84   -  -
18511  90 190 290 390 190 90 290 90 390 90
18512}
18513do_execsql_test joinD-622 {
18514  SELECT t1.*, t2.*, t3.*, t4.*
18515  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18516  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18517  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18518  WHERE t2.x>0
18519  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18520} {
18521   6 106 206 306 106  6 206  6   -  -
18522  12 112 212 312 112 12 212 12   -  -
18523  18 118 218 318 118 18 218 18   -  -
18524  24 124 224 324 124 24 224 24   -  -
18525  30 130 230 330 130 30 230 30 330 30
18526  36 136 236 336 136 36 236 36   -  -
18527  42 142 242 342 142 42 242 42   -  -
18528  48 148 248 348 148 48 248 48   -  -
18529  54 154 254 354 154 54 254 54   -  -
18530  60 160 260 360 160 60 260 60 360 60
18531  66 166 266 366 166 66 266 66   -  -
18532  72 172 272 372 172 72 272 72   -  -
18533  78 178 278 378 178 78 278 78   -  -
18534  84 184 284 384 184 84 284 84   -  -
18535  90 190 290 390 190 90 290 90 390 90
18536}
18537do_execsql_test joinD-623 {
18538  SELECT t1.*, t2.*, t3.*, t4.*
18539  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18540  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18541  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18542  WHERE (t2.x>0 OR t2.x IS NULL)
18543  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18544} {
18545   6 106 206 306 106  6 206  6   -  -
18546  12 112 212 312 112 12 212 12   -  -
18547  18 118 218 318 118 18 218 18   -  -
18548  24 124 224 324 124 24 224 24   -  -
18549  30 130 230 330 130 30 230 30 330 30
18550  36 136 236 336 136 36 236 36   -  -
18551  42 142 242 342 142 42 242 42   -  -
18552  48 148 248 348 148 48 248 48   -  -
18553  54 154 254 354 154 54 254 54   -  -
18554  60 160 260 360 160 60 260 60 360 60
18555  66 166 266 366 166 66 266 66   -  -
18556  72 172 272 372 172 72 272 72   -  -
18557  78 178 278 378 178 78 278 78   -  -
18558  84 184 284 384 184 84 284 84   -  -
18559  90 190 290 390 190 90 290 90 390 90
18560}
18561do_execsql_test joinD-624 {
18562  SELECT t1.*, t2.*, t3.*, t4.*
18563  FROM t1 RIGHT JOIN t2 ON true
18564  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18565  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18566  WHERE t1.b=t2.b AND t2.x>0
18567  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18568} {
18569   6 106 206 306 106  6 206  6   -  -
18570  12 112 212 312 112 12 212 12   -  -
18571  18 118 218 318 118 18 218 18   -  -
18572  24 124 224 324 124 24 224 24   -  -
18573  30 130 230 330 130 30 230 30 330 30
18574  36 136 236 336 136 36 236 36   -  -
18575  42 142 242 342 142 42 242 42   -  -
18576  48 148 248 348 148 48 248 48   -  -
18577  54 154 254 354 154 54 254 54   -  -
18578  60 160 260 360 160 60 260 60 360 60
18579  66 166 266 366 166 66 266 66   -  -
18580  72 172 272 372 172 72 272 72   -  -
18581  78 178 278 378 178 78 278 78   -  -
18582  84 184 284 384 184 84 284 84   -  -
18583  90 190 290 390 190 90 290 90 390 90
18584}
18585do_execsql_test joinD-625 {
18586  SELECT t1.*, t2.*, t3.*, t4.*
18587  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18588  INNER JOIN t3 ON t1.c=t3.c
18589  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18590  WHERE t3.y>0
18591  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18592} {
18593   6 106 206 306 106  6 206  6   -  -
18594  12 112 212 312 112 12 212 12   -  -
18595  18 118 218 318 118 18 218 18   -  -
18596  24 124 224 324 124 24 224 24   -  -
18597  30 130 230 330 130 30 230 30 330 30
18598  36 136 236 336 136 36 236 36   -  -
18599  42 142 242 342 142 42 242 42   -  -
18600  48 148 248 348 148 48 248 48   -  -
18601  54 154 254 354 154 54 254 54   -  -
18602  60 160 260 360 160 60 260 60 360 60
18603  66 166 266 366 166 66 266 66   -  -
18604  72 172 272 372 172 72 272 72   -  -
18605  78 178 278 378 178 78 278 78   -  -
18606  84 184 284 384 184 84 284 84   -  -
18607  90 190 290 390 190 90 290 90 390 90
18608}
18609do_execsql_test joinD-626 {
18610  SELECT t1.*, t2.*, t3.*, t4.*
18611  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18612  INNER JOIN t3 ON t1.c=t3.c
18613  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18614  WHERE t3.y>0 OR t3.y IS NULL
18615  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18616} {
18617   6 106 206 306 106  6 206  6   -  -
18618  12 112 212 312 112 12 212 12   -  -
18619  18 118 218 318 118 18 218 18   -  -
18620  24 124 224 324 124 24 224 24   -  -
18621  30 130 230 330 130 30 230 30 330 30
18622  36 136 236 336 136 36 236 36   -  -
18623  42 142 242 342 142 42 242 42   -  -
18624  48 148 248 348 148 48 248 48   -  -
18625  54 154 254 354 154 54 254 54   -  -
18626  60 160 260 360 160 60 260 60 360 60
18627  66 166 266 366 166 66 266 66   -  -
18628  72 172 272 372 172 72 272 72   -  -
18629  78 178 278 378 178 78 278 78   -  -
18630  84 184 284 384 184 84 284 84   -  -
18631  90 190 290 390 190 90 290 90 390 90
18632}
18633do_execsql_test joinD-627 {
18634  SELECT t1.*, t2.*, t3.*, t4.*
18635  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18636  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18637  LEFT JOIN t4 ON t1.d=t4.d
18638  WHERE t4.z>0
18639  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18640} {
18641  30 130 230 330 130 30 230 30 330 30
18642  60 160 260 360 160 60 260 60 360 60
18643  90 190 290 390 190 90 290 90 390 90
18644}
18645do_execsql_test joinD-628 {
18646  SELECT t1.*, t2.*, t3.*, t4.*
18647  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18648  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18649  LEFT JOIN t4 ON t1.d=t4.d
18650  WHERE t4.z IS NULL OR t4.z>0
18651  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18652} {
18653   6 106 206 306 106  6 206  6   -  -
18654  12 112 212 312 112 12 212 12   -  -
18655  18 118 218 318 118 18 218 18   -  -
18656  24 124 224 324 124 24 224 24   -  -
18657  30 130 230 330 130 30 230 30 330 30
18658  36 136 236 336 136 36 236 36   -  -
18659  42 142 242 342 142 42 242 42   -  -
18660  48 148 248 348 148 48 248 48   -  -
18661  54 154 254 354 154 54 254 54   -  -
18662  60 160 260 360 160 60 260 60 360 60
18663  66 166 266 366 166 66 266 66   -  -
18664  72 172 272 372 172 72 272 72   -  -
18665  78 178 278 378 178 78 278 78   -  -
18666  84 184 284 384 184 84 284 84   -  -
18667  90 190 290 390 190 90 290 90 390 90
18668}
18669do_execsql_test joinD-629 {
18670  SELECT t1.*, t2.*, t3.*, t4.*
18671  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18672  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18673  LEFT JOIN t4 ON t1.d=t4.d
18674  WHERE t2.x>0 AND t4.z>0
18675  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18676} {
18677  30 130 230 330 130 30 230 30 330 30
18678  60 160 260 360 160 60 260 60 360 60
18679  90 190 290 390 190 90 290 90 390 90
18680}
18681do_execsql_test joinD-630 {
18682  SELECT t1.*, t2.*, t3.*, t4.*
18683  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18684  INNER JOIN t3 ON t1.c=t3.c
18685  LEFT JOIN t4 ON t1.d=t4.d
18686  WHERE t4.z>0 AND t3.y>0
18687  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18688} {
18689  30 130 230 330 130 30 230 30 330 30
18690  60 160 260 360 160 60 260 60 360 60
18691  90 190 290 390 190 90 290 90 390 90
18692}
18693do_execsql_test joinD-631 {
18694  SELECT t1.*, t2.*, t3.*, t4.*
18695  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18696  INNER JOIN t3 ON t1.c=t3.c
18697  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18698  WHERE t2.x>0 AND t3.y>0
18699  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18700} {
18701   6 106 206 306 106  6 206  6   -  -
18702  12 112 212 312 112 12 212 12   -  -
18703  18 118 218 318 118 18 218 18   -  -
18704  24 124 224 324 124 24 224 24   -  -
18705  30 130 230 330 130 30 230 30 330 30
18706  36 136 236 336 136 36 236 36   -  -
18707  42 142 242 342 142 42 242 42   -  -
18708  48 148 248 348 148 48 248 48   -  -
18709  54 154 254 354 154 54 254 54   -  -
18710  60 160 260 360 160 60 260 60 360 60
18711  66 166 266 366 166 66 266 66   -  -
18712  72 172 272 372 172 72 272 72   -  -
18713  78 178 278 378 178 78 278 78   -  -
18714  84 184 284 384 184 84 284 84   -  -
18715  90 190 290 390 190 90 290 90 390 90
18716}
18717do_execsql_test joinD-632 {
18718  SELECT t1.*, t2.*, t3.*, t4.*
18719  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18720  INNER JOIN t3 ON t1.c=t3.c
18721  LEFT JOIN t4 ON t1.d=t4.d
18722  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
18723  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18724} {
18725  30 130 230 330 130 30 230 30 330 30
18726  60 160 260 360 160 60 260 60 360 60
18727  90 190 290 390 190 90 290 90 390 90
18728}
18729do_execsql_test joinD-633 {
18730  SELECT t1.*, t2.*, t3.*, t4.*
18731  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18732  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18733  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18734  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18735} {
18736   6 106 206 306 106  6 206  6   -  -
18737  12 112 212 312 112 12 212 12   -  -
18738  18 118 218 318 118 18 218 18   -  -
18739  24 124 224 324 124 24 224 24   -  -
18740  30 130 230 330 130 30 230 30 330 30
18741  36 136 236 336 136 36 236 36   -  -
18742  42 142 242 342 142 42 242 42   -  -
18743  48 148 248 348 148 48 248 48   -  -
18744  54 154 254 354 154 54 254 54   -  -
18745  60 160 260 360 160 60 260 60 360 60
18746  66 166 266 366 166 66 266 66   -  -
18747  72 172 272 372 172 72 272 72   -  -
18748  78 178 278 378 178 78 278 78   -  -
18749  84 184 284 384 184 84 284 84   -  -
18750  90 190 290 390 190 90 290 90 390 90
18751}
18752do_execsql_test joinD-634 {
18753  SELECT t1.*, t2.*, t3.*, t4.*
18754  FROM t1 RIGHT JOIN t2 ON t2.x>0
18755  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18756  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18757  WHERE t1.b IS NOT DISTINCT FROM t2.b
18758  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18759} {
18760   6 106 206 306 106  6 206  6   -  -
18761  12 112 212 312 112 12 212 12   -  -
18762  18 118 218 318 118 18 218 18   -  -
18763  24 124 224 324 124 24 224 24   -  -
18764  30 130 230 330 130 30 230 30 330 30
18765  36 136 236 336 136 36 236 36   -  -
18766  42 142 242 342 142 42 242 42   -  -
18767  48 148 248 348 148 48 248 48   -  -
18768  54 154 254 354 154 54 254 54   -  -
18769  60 160 260 360 160 60 260 60 360 60
18770  66 166 266 366 166 66 266 66   -  -
18771  72 172 272 372 172 72 272 72   -  -
18772  78 178 278 378 178 78 278 78   -  -
18773  84 184 284 384 184 84 284 84   -  -
18774  90 190 290 390 190 90 290 90 390 90
18775}
18776do_execsql_test joinD-635 {
18777  SELECT t1.*, t2.*, t3.*, t4.*
18778  FROM t1 RIGHT JOIN t2 ON t2.x>0
18779  INNER JOIN t3 ON t3.y>0
18780  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18781  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
18782  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18783} {
18784   6 106 206 306 106  6 206  6   -  -
18785  12 112 212 312 112 12 212 12   -  -
18786  18 118 218 318 118 18 218 18   -  -
18787  24 124 224 324 124 24 224 24   -  -
18788  30 130 230 330 130 30 230 30 330 30
18789  36 136 236 336 136 36 236 36   -  -
18790  42 142 242 342 142 42 242 42   -  -
18791  48 148 248 348 148 48 248 48   -  -
18792  54 154 254 354 154 54 254 54   -  -
18793  60 160 260 360 160 60 260 60 360 60
18794  66 166 266 366 166 66 266 66   -  -
18795  72 172 272 372 172 72 272 72   -  -
18796  78 178 278 378 178 78 278 78   -  -
18797  84 184 284 384 184 84 284 84   -  -
18798  90 190 290 390 190 90 290 90 390 90
18799}
18800do_execsql_test joinD-636 {
18801  SELECT t1.*, t2.*, t3.*, t4.*
18802  FROM t1 RIGHT JOIN t2 ON t2.x>0
18803  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18804  LEFT JOIN t4 ON t4.z>0
18805  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
18806  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18807} {
18808  30 130 230 330 130 30 230 30 330 30
18809  60 160 260 360 160 60 260 60 360 60
18810  90 190 290 390 190 90 290 90 390 90
18811}
18812do_execsql_test joinD-637 {
18813  SELECT t1.*, t2.*, t3.*, t4.*
18814  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
18815  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18816  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18817  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18818} {
18819   6 106 206 306 106  6 206  6   -  -
18820  12 112 212 312 112 12 212 12   -  -
18821  18 118 218 318 118 18 218 18   -  -
18822  24 124 224 324 124 24 224 24   -  -
18823  30 130 230 330 130 30 230 30 330 30
18824  36 136 236 336 136 36 236 36   -  -
18825  42 142 242 342 142 42 242 42   -  -
18826  48 148 248 348 148 48 248 48   -  -
18827  54 154 254 354 154 54 254 54   -  -
18828  60 160 260 360 160 60 260 60 360 60
18829  66 166 266 366 166 66 266 66   -  -
18830  72 172 272 372 172 72 272 72   -  -
18831  78 178 278 378 178 78 278 78   -  -
18832  84 184 284 384 184 84 284 84   -  -
18833  90 190 290 390 190 90 290 90 390 90
18834}
18835do_execsql_test joinD-638 {
18836  SELECT t1.*, t2.*, t3.*, t4.*
18837  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18838  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
18839  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18840  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18841} {
18842   6 106 206 306 106  6 206  6   -  -
18843  12 112 212 312 112 12 212 12   -  -
18844  18 118 218 318 118 18 218 18   -  -
18845  24 124 224 324 124 24 224 24   -  -
18846  30 130 230 330 130 30 230 30 330 30
18847  36 136 236 336 136 36 236 36   -  -
18848  42 142 242 342 142 42 242 42   -  -
18849  48 148 248 348 148 48 248 48   -  -
18850  54 154 254 354 154 54 254 54   -  -
18851  60 160 260 360 160 60 260 60 360 60
18852  66 166 266 366 166 66 266 66   -  -
18853  72 172 272 372 172 72 272 72   -  -
18854  78 178 278 378 178 78 278 78   -  -
18855  84 184 284 384 184 84 284 84   -  -
18856  90 190 290 390 190 90 290 90 390 90
18857}
18858do_execsql_test joinD-639 {
18859  SELECT t1.*, t2.*, t3.*, t4.*
18860  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18861  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18862  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18863  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18864} {
18865  30 130 230 330 130 30 230 30 330 30
18866  60 160 260 360 160 60 260 60 360 60
18867  90 190 290 390 190 90 290 90 390 90
18868   -   -   -   -   -  -   -  - 300  0
18869   -   -   -   -   -  -   -  - 305  5
18870   -   -   -   -   -  -   -  - 310 10
18871   -   -   -   -   -  -   -  - 315 15
18872   -   -   -   -   -  -   -  - 320 20
18873   -   -   -   -   -  -   -  - 325 25
18874   -   -   -   -   -  -   -  - 335 35
18875   -   -   -   -   -  -   -  - 340 40
18876   -   -   -   -   -  -   -  - 345 45
18877   -   -   -   -   -  -   -  - 350 50
18878   -   -   -   -   -  -   -  - 355 55
18879   -   -   -   -   -  -   -  - 365 65
18880   -   -   -   -   -  -   -  - 370 70
18881   -   -   -   -   -  -   -  - 375 75
18882   -   -   -   -   -  -   -  - 380 80
18883   -   -   -   -   -  -   -  - 385 85
18884   -   -   -   -   -  -   -  - 395 95
18885}
18886do_execsql_test joinD-640 {
18887  SELECT t1.*, t2.*, t3.*, t4.*
18888  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18889  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18890  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18891  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18892} {
18893  30 130 230 330 130 30 230 30 330 30
18894  60 160 260 360 160 60 260 60 360 60
18895  90 190 290 390 190 90 290 90 390 90
18896   -   -   -   -   -  -   -  - 300  0
18897   -   -   -   -   -  -   -  - 305  5
18898   -   -   -   -   -  -   -  - 310 10
18899   -   -   -   -   -  -   -  - 315 15
18900   -   -   -   -   -  -   -  - 320 20
18901   -   -   -   -   -  -   -  - 325 25
18902   -   -   -   -   -  -   -  - 335 35
18903   -   -   -   -   -  -   -  - 340 40
18904   -   -   -   -   -  -   -  - 345 45
18905   -   -   -   -   -  -   -  - 350 50
18906   -   -   -   -   -  -   -  - 355 55
18907   -   -   -   -   -  -   -  - 365 65
18908   -   -   -   -   -  -   -  - 370 70
18909   -   -   -   -   -  -   -  - 375 75
18910   -   -   -   -   -  -   -  - 380 80
18911   -   -   -   -   -  -   -  - 385 85
18912   -   -   -   -   -  -   -  - 395 95
18913}
18914do_execsql_test joinD-641 {
18915  SELECT t1.*, t2.*, t3.*, t4.*
18916  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18917  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18918  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18919  WHERE t2.x>0
18920  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18921} {
18922  30 130 230 330 130 30 230 30 330 30
18923  60 160 260 360 160 60 260 60 360 60
18924  90 190 290 390 190 90 290 90 390 90
18925}
18926do_execsql_test joinD-642 {
18927  SELECT t1.*, t2.*, t3.*, t4.*
18928  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18929  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18930  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18931  WHERE (t2.x>0 OR t2.x IS NULL)
18932  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18933} {
18934  30 130 230 330 130 30 230 30 330 30
18935  60 160 260 360 160 60 260 60 360 60
18936  90 190 290 390 190 90 290 90 390 90
18937   -   -   -   -   -  -   -  - 300  0
18938   -   -   -   -   -  -   -  - 305  5
18939   -   -   -   -   -  -   -  - 310 10
18940   -   -   -   -   -  -   -  - 315 15
18941   -   -   -   -   -  -   -  - 320 20
18942   -   -   -   -   -  -   -  - 325 25
18943   -   -   -   -   -  -   -  - 335 35
18944   -   -   -   -   -  -   -  - 340 40
18945   -   -   -   -   -  -   -  - 345 45
18946   -   -   -   -   -  -   -  - 350 50
18947   -   -   -   -   -  -   -  - 355 55
18948   -   -   -   -   -  -   -  - 365 65
18949   -   -   -   -   -  -   -  - 370 70
18950   -   -   -   -   -  -   -  - 375 75
18951   -   -   -   -   -  -   -  - 380 80
18952   -   -   -   -   -  -   -  - 385 85
18953   -   -   -   -   -  -   -  - 395 95
18954}
18955do_execsql_test joinD-643 {
18956  SELECT t1.*, t2.*, t3.*, t4.*
18957  FROM t1 RIGHT JOIN t2 ON true
18958  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18959  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18960  WHERE t1.b=t2.b AND t2.x>0
18961  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18962} {
18963  30 130 230 330 130 30 230 30 330 30
18964  60 160 260 360 160 60 260 60 360 60
18965  90 190 290 390 190 90 290 90 390 90
18966}
18967do_execsql_test joinD-644 {
18968  SELECT t1.*, t2.*, t3.*, t4.*
18969  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18970  INNER JOIN t3 ON t1.c=t3.c
18971  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18972  WHERE t3.y>0
18973  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18974} {
18975  30 130 230 330 130 30 230 30 330 30
18976  60 160 260 360 160 60 260 60 360 60
18977  90 190 290 390 190 90 290 90 390 90
18978}
18979do_execsql_test joinD-645 {
18980  SELECT t1.*, t2.*, t3.*, t4.*
18981  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18982  INNER JOIN t3 ON t1.c=t3.c
18983  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18984  WHERE t3.y>0 OR t3.y IS NULL
18985  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18986} {
18987  30 130 230 330 130 30 230 30 330 30
18988  60 160 260 360 160 60 260 60 360 60
18989  90 190 290 390 190 90 290 90 390 90
18990   -   -   -   -   -  -   -  - 300  0
18991   -   -   -   -   -  -   -  - 305  5
18992   -   -   -   -   -  -   -  - 310 10
18993   -   -   -   -   -  -   -  - 315 15
18994   -   -   -   -   -  -   -  - 320 20
18995   -   -   -   -   -  -   -  - 325 25
18996   -   -   -   -   -  -   -  - 335 35
18997   -   -   -   -   -  -   -  - 340 40
18998   -   -   -   -   -  -   -  - 345 45
18999   -   -   -   -   -  -   -  - 350 50
19000   -   -   -   -   -  -   -  - 355 55
19001   -   -   -   -   -  -   -  - 365 65
19002   -   -   -   -   -  -   -  - 370 70
19003   -   -   -   -   -  -   -  - 375 75
19004   -   -   -   -   -  -   -  - 380 80
19005   -   -   -   -   -  -   -  - 385 85
19006   -   -   -   -   -  -   -  - 395 95
19007}
19008do_execsql_test joinD-646 {
19009  SELECT t1.*, t2.*, t3.*, t4.*
19010  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19011  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19012  RIGHT JOIN t4 ON t1.d=t4.d
19013  WHERE t4.z>0
19014  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19015} {
19016  30 130 230 330 130 30 230 30 330 30
19017  60 160 260 360 160 60 260 60 360 60
19018  90 190 290 390 190 90 290 90 390 90
19019   -   -   -   -   -  -   -  - 305  5
19020   -   -   -   -   -  -   -  - 310 10
19021   -   -   -   -   -  -   -  - 315 15
19022   -   -   -   -   -  -   -  - 320 20
19023   -   -   -   -   -  -   -  - 325 25
19024   -   -   -   -   -  -   -  - 335 35
19025   -   -   -   -   -  -   -  - 340 40
19026   -   -   -   -   -  -   -  - 345 45
19027   -   -   -   -   -  -   -  - 350 50
19028   -   -   -   -   -  -   -  - 355 55
19029   -   -   -   -   -  -   -  - 365 65
19030   -   -   -   -   -  -   -  - 370 70
19031   -   -   -   -   -  -   -  - 375 75
19032   -   -   -   -   -  -   -  - 380 80
19033   -   -   -   -   -  -   -  - 385 85
19034   -   -   -   -   -  -   -  - 395 95
19035}
19036do_execsql_test joinD-647 {
19037  SELECT t1.*, t2.*, t3.*, t4.*
19038  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19039  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19040  RIGHT JOIN t4 ON t1.d=t4.d
19041  WHERE t4.z IS NULL OR t4.z>0
19042  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19043} {
19044  30 130 230 330 130 30 230 30 330 30
19045  60 160 260 360 160 60 260 60 360 60
19046  90 190 290 390 190 90 290 90 390 90
19047   -   -   -   -   -  -   -  - 305  5
19048   -   -   -   -   -  -   -  - 310 10
19049   -   -   -   -   -  -   -  - 315 15
19050   -   -   -   -   -  -   -  - 320 20
19051   -   -   -   -   -  -   -  - 325 25
19052   -   -   -   -   -  -   -  - 335 35
19053   -   -   -   -   -  -   -  - 340 40
19054   -   -   -   -   -  -   -  - 345 45
19055   -   -   -   -   -  -   -  - 350 50
19056   -   -   -   -   -  -   -  - 355 55
19057   -   -   -   -   -  -   -  - 365 65
19058   -   -   -   -   -  -   -  - 370 70
19059   -   -   -   -   -  -   -  - 375 75
19060   -   -   -   -   -  -   -  - 380 80
19061   -   -   -   -   -  -   -  - 385 85
19062   -   -   -   -   -  -   -  - 395 95
19063}
19064do_execsql_test joinD-648 {
19065  SELECT t1.*, t2.*, t3.*, t4.*
19066  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19067  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19068  RIGHT JOIN t4 ON t1.d=t4.d
19069  WHERE t2.x>0 AND t4.z>0
19070  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19071} {
19072  30 130 230 330 130 30 230 30 330 30
19073  60 160 260 360 160 60 260 60 360 60
19074  90 190 290 390 190 90 290 90 390 90
19075}
19076do_execsql_test joinD-649 {
19077  SELECT t1.*, t2.*, t3.*, t4.*
19078  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19079  INNER JOIN t3 ON t1.c=t3.c
19080  RIGHT JOIN t4 ON t1.d=t4.d
19081  WHERE t4.z>0 AND t3.y>0
19082  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19083} {
19084  30 130 230 330 130 30 230 30 330 30
19085  60 160 260 360 160 60 260 60 360 60
19086  90 190 290 390 190 90 290 90 390 90
19087}
19088do_execsql_test joinD-650 {
19089  SELECT t1.*, t2.*, t3.*, t4.*
19090  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19091  INNER JOIN t3 ON t1.c=t3.c
19092  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
19093  WHERE t2.x>0 AND t3.y>0
19094  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19095} {
19096  30 130 230 330 130 30 230 30 330 30
19097  60 160 260 360 160 60 260 60 360 60
19098  90 190 290 390 190 90 290 90 390 90
19099}
19100do_execsql_test joinD-651 {
19101  SELECT t1.*, t2.*, t3.*, t4.*
19102  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19103  INNER JOIN t3 ON t1.c=t3.c
19104  RIGHT JOIN t4 ON t1.d=t4.d
19105  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
19106  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19107} {
19108  30 130 230 330 130 30 230 30 330 30
19109  60 160 260 360 160 60 260 60 360 60
19110  90 190 290 390 190 90 290 90 390 90
19111}
19112do_execsql_test joinD-652 {
19113  SELECT t1.*, t2.*, t3.*, t4.*
19114  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19115  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19116  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
19117  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19118} {
19119  30 130 230 330 130 30 230 30 330 30
19120  60 160 260 360 160 60 260 60 360 60
19121  90 190 290 390 190 90 290 90 390 90
19122   -   -   -   -   -  -   -  - 300  0
19123   -   -   -   -   -  -   -  - 305  5
19124   -   -   -   -   -  -   -  - 310 10
19125   -   -   -   -   -  -   -  - 315 15
19126   -   -   -   -   -  -   -  - 320 20
19127   -   -   -   -   -  -   -  - 325 25
19128   -   -   -   -   -  -   -  - 335 35
19129   -   -   -   -   -  -   -  - 340 40
19130   -   -   -   -   -  -   -  - 345 45
19131   -   -   -   -   -  -   -  - 350 50
19132   -   -   -   -   -  -   -  - 355 55
19133   -   -   -   -   -  -   -  - 365 65
19134   -   -   -   -   -  -   -  - 370 70
19135   -   -   -   -   -  -   -  - 375 75
19136   -   -   -   -   -  -   -  - 380 80
19137   -   -   -   -   -  -   -  - 385 85
19138   -   -   -   -   -  -   -  - 395 95
19139}
19140do_execsql_test joinD-653 {
19141  SELECT t1.*, t2.*, t3.*, t4.*
19142  FROM t1 RIGHT JOIN t2 ON t2.x>0
19143  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19144  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
19145  WHERE t1.b IS NOT DISTINCT FROM t2.b
19146  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19147} {
19148  30 130 230 330 130 30 230 30 330 30
19149  60 160 260 360 160 60 260 60 360 60
19150  90 190 290 390 190 90 290 90 390 90
19151   -   -   -   -   -  -   -  - 300  0
19152   -   -   -   -   -  -   -  - 305  5
19153   -   -   -   -   -  -   -  - 310 10
19154   -   -   -   -   -  -   -  - 320 20
19155   -   -   -   -   -  -   -  - 325 25
19156   -   -   -   -   -  -   -  - 335 35
19157   -   -   -   -   -  -   -  - 340 40
19158   -   -   -   -   -  -   -  - 350 50
19159   -   -   -   -   -  -   -  - 355 55
19160   -   -   -   -   -  -   -  - 365 65
19161   -   -   -   -   -  -   -  - 370 70
19162   -   -   -   -   -  -   -  - 380 80
19163   -   -   -   -   -  -   -  - 385 85
19164   -   -   -   -   -  -   -  - 395 95
19165}
19166do_execsql_test joinD-654 {
19167  SELECT t1.*, t2.*, t3.*, t4.*
19168  FROM t1 RIGHT JOIN t2 ON t2.x>0
19169  INNER JOIN t3 ON t3.y>0
19170  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
19171  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
19172  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19173} {
19174  30 130 230 330 130 30 230 30 330 30
19175  60 160 260 360 160 60 260 60 360 60
19176  90 190 290 390 190 90 290 90 390 90
19177   -   -   -   -   -  -   -  - 300  0
19178}
19179do_execsql_test joinD-655 {
19180  SELECT t1.*, t2.*, t3.*, t4.*
19181  FROM t1 RIGHT JOIN t2 ON t2.x>0
19182  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19183  RIGHT JOIN t4 ON t4.z>0
19184  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
19185  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19186} {
19187  30 130 230 330 130 30 230 30 330 30
19188  60 160 260 360 160 60 260 60 360 60
19189  90 190 290 390 190 90 290 90 390 90
19190}
19191do_execsql_test joinD-656 {
19192  SELECT t1.*, t2.*, t3.*, t4.*
19193  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
19194  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19195  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
19196  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19197} {
19198  30 130 230 330 130 30 230 30 330 30
19199  60 160 260 360 160 60 260 60 360 60
19200  90 190 290 390 190 90 290 90 390 90
19201   -   -   -   -   -  -   -  - 300  0
19202   -   -   -   -   -  -   -  - 305  5
19203   -   -   -   -   -  -   -  - 310 10
19204   -   -   -   -   -  -   -  - 315 15
19205   -   -   -   -   -  -   -  - 320 20
19206   -   -   -   -   -  -   -  - 325 25
19207   -   -   -   -   -  -   -  - 335 35
19208   -   -   -   -   -  -   -  - 340 40
19209   -   -   -   -   -  -   -  - 345 45
19210   -   -   -   -   -  -   -  - 350 50
19211   -   -   -   -   -  -   -  - 355 55
19212   -   -   -   -   -  -   -  - 365 65
19213   -   -   -   -   -  -   -  - 370 70
19214   -   -   -   -   -  -   -  - 375 75
19215   -   -   -   -   -  -   -  - 380 80
19216   -   -   -   -   -  -   -  - 385 85
19217   -   -   -   -   -  -   -  - 395 95
19218}
19219do_execsql_test joinD-657 {
19220  SELECT t1.*, t2.*, t3.*, t4.*
19221  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19222  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
19223  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
19224  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19225} {
19226  30 130 230 330 130 30 230 30 330 30
19227  60 160 260 360 160 60 260 60 360 60
19228  90 190 290 390 190 90 290 90 390 90
19229   -   -   -   -   -  -   -  - 300  0
19230   -   -   -   -   -  -   -  - 305  5
19231   -   -   -   -   -  -   -  - 310 10
19232   -   -   -   -   -  -   -  - 315 15
19233   -   -   -   -   -  -   -  - 320 20
19234   -   -   -   -   -  -   -  - 325 25
19235   -   -   -   -   -  -   -  - 335 35
19236   -   -   -   -   -  -   -  - 340 40
19237   -   -   -   -   -  -   -  - 345 45
19238   -   -   -   -   -  -   -  - 350 50
19239   -   -   -   -   -  -   -  - 355 55
19240   -   -   -   -   -  -   -  - 365 65
19241   -   -   -   -   -  -   -  - 370 70
19242   -   -   -   -   -  -   -  - 375 75
19243   -   -   -   -   -  -   -  - 380 80
19244   -   -   -   -   -  -   -  - 385 85
19245   -   -   -   -   -  -   -  - 395 95
19246}
19247do_execsql_test joinD-658 {
19248  SELECT t1.*, t2.*, t3.*, t4.*
19249  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19250  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19251  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19252  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19253} {
19254   6 106 206 306 106  6 206  6   -  -
19255  12 112 212 312 112 12 212 12   -  -
19256  18 118 218 318 118 18 218 18   -  -
19257  24 124 224 324 124 24 224 24   -  -
19258  30 130 230 330 130 30 230 30 330 30
19259  36 136 236 336 136 36 236 36   -  -
19260  42 142 242 342 142 42 242 42   -  -
19261  48 148 248 348 148 48 248 48   -  -
19262  54 154 254 354 154 54 254 54   -  -
19263  60 160 260 360 160 60 260 60 360 60
19264  66 166 266 366 166 66 266 66   -  -
19265  72 172 272 372 172 72 272 72   -  -
19266  78 178 278 378 178 78 278 78   -  -
19267  84 184 284 384 184 84 284 84   -  -
19268  90 190 290 390 190 90 290 90 390 90
19269   -   -   -   -   -  -   -  - 300  0
19270   -   -   -   -   -  -   -  - 305  5
19271   -   -   -   -   -  -   -  - 310 10
19272   -   -   -   -   -  -   -  - 315 15
19273   -   -   -   -   -  -   -  - 320 20
19274   -   -   -   -   -  -   -  - 325 25
19275   -   -   -   -   -  -   -  - 335 35
19276   -   -   -   -   -  -   -  - 340 40
19277   -   -   -   -   -  -   -  - 345 45
19278   -   -   -   -   -  -   -  - 350 50
19279   -   -   -   -   -  -   -  - 355 55
19280   -   -   -   -   -  -   -  - 365 65
19281   -   -   -   -   -  -   -  - 370 70
19282   -   -   -   -   -  -   -  - 375 75
19283   -   -   -   -   -  -   -  - 380 80
19284   -   -   -   -   -  -   -  - 385 85
19285   -   -   -   -   -  -   -  - 395 95
19286}
19287do_execsql_test joinD-659 {
19288  SELECT t1.*, t2.*, t3.*, t4.*
19289  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19290  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19291  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19292  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19293} {
19294   6 106 206 306 106  6 206  6   -  -
19295  12 112 212 312 112 12 212 12   -  -
19296  18 118 218 318 118 18 218 18   -  -
19297  24 124 224 324 124 24 224 24   -  -
19298  30 130 230 330 130 30 230 30 330 30
19299  36 136 236 336 136 36 236 36   -  -
19300  42 142 242 342 142 42 242 42   -  -
19301  48 148 248 348 148 48 248 48   -  -
19302  54 154 254 354 154 54 254 54   -  -
19303  60 160 260 360 160 60 260 60 360 60
19304  66 166 266 366 166 66 266 66   -  -
19305  72 172 272 372 172 72 272 72   -  -
19306  78 178 278 378 178 78 278 78   -  -
19307  84 184 284 384 184 84 284 84   -  -
19308  90 190 290 390 190 90 290 90 390 90
19309   -   -   -   -   -  -   -  - 300  0
19310   -   -   -   -   -  -   -  - 305  5
19311   -   -   -   -   -  -   -  - 310 10
19312   -   -   -   -   -  -   -  - 315 15
19313   -   -   -   -   -  -   -  - 320 20
19314   -   -   -   -   -  -   -  - 325 25
19315   -   -   -   -   -  -   -  - 335 35
19316   -   -   -   -   -  -   -  - 340 40
19317   -   -   -   -   -  -   -  - 345 45
19318   -   -   -   -   -  -   -  - 350 50
19319   -   -   -   -   -  -   -  - 355 55
19320   -   -   -   -   -  -   -  - 365 65
19321   -   -   -   -   -  -   -  - 370 70
19322   -   -   -   -   -  -   -  - 375 75
19323   -   -   -   -   -  -   -  - 380 80
19324   -   -   -   -   -  -   -  - 385 85
19325   -   -   -   -   -  -   -  - 395 95
19326}
19327do_execsql_test joinD-660 {
19328  SELECT t1.*, t2.*, t3.*, t4.*
19329  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19330  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19331  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19332  WHERE t2.x>0
19333  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19334} {
19335   6 106 206 306 106  6 206  6   -  -
19336  12 112 212 312 112 12 212 12   -  -
19337  18 118 218 318 118 18 218 18   -  -
19338  24 124 224 324 124 24 224 24   -  -
19339  30 130 230 330 130 30 230 30 330 30
19340  36 136 236 336 136 36 236 36   -  -
19341  42 142 242 342 142 42 242 42   -  -
19342  48 148 248 348 148 48 248 48   -  -
19343  54 154 254 354 154 54 254 54   -  -
19344  60 160 260 360 160 60 260 60 360 60
19345  66 166 266 366 166 66 266 66   -  -
19346  72 172 272 372 172 72 272 72   -  -
19347  78 178 278 378 178 78 278 78   -  -
19348  84 184 284 384 184 84 284 84   -  -
19349  90 190 290 390 190 90 290 90 390 90
19350}
19351do_execsql_test joinD-661 {
19352  SELECT t1.*, t2.*, t3.*, t4.*
19353  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19354  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19355  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19356  WHERE (t2.x>0 OR t2.x IS NULL)
19357  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19358} {
19359   6 106 206 306 106  6 206  6   -  -
19360  12 112 212 312 112 12 212 12   -  -
19361  18 118 218 318 118 18 218 18   -  -
19362  24 124 224 324 124 24 224 24   -  -
19363  30 130 230 330 130 30 230 30 330 30
19364  36 136 236 336 136 36 236 36   -  -
19365  42 142 242 342 142 42 242 42   -  -
19366  48 148 248 348 148 48 248 48   -  -
19367  54 154 254 354 154 54 254 54   -  -
19368  60 160 260 360 160 60 260 60 360 60
19369  66 166 266 366 166 66 266 66   -  -
19370  72 172 272 372 172 72 272 72   -  -
19371  78 178 278 378 178 78 278 78   -  -
19372  84 184 284 384 184 84 284 84   -  -
19373  90 190 290 390 190 90 290 90 390 90
19374   -   -   -   -   -  -   -  - 300  0
19375   -   -   -   -   -  -   -  - 305  5
19376   -   -   -   -   -  -   -  - 310 10
19377   -   -   -   -   -  -   -  - 315 15
19378   -   -   -   -   -  -   -  - 320 20
19379   -   -   -   -   -  -   -  - 325 25
19380   -   -   -   -   -  -   -  - 335 35
19381   -   -   -   -   -  -   -  - 340 40
19382   -   -   -   -   -  -   -  - 345 45
19383   -   -   -   -   -  -   -  - 350 50
19384   -   -   -   -   -  -   -  - 355 55
19385   -   -   -   -   -  -   -  - 365 65
19386   -   -   -   -   -  -   -  - 370 70
19387   -   -   -   -   -  -   -  - 375 75
19388   -   -   -   -   -  -   -  - 380 80
19389   -   -   -   -   -  -   -  - 385 85
19390   -   -   -   -   -  -   -  - 395 95
19391}
19392do_execsql_test joinD-662 {
19393  SELECT t1.*, t2.*, t3.*, t4.*
19394  FROM t1 RIGHT JOIN t2 ON true
19395  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19396  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19397  WHERE t1.b=t2.b AND t2.x>0
19398  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19399} {
19400   6 106 206 306 106  6 206  6   -  -
19401  12 112 212 312 112 12 212 12   -  -
19402  18 118 218 318 118 18 218 18   -  -
19403  24 124 224 324 124 24 224 24   -  -
19404  30 130 230 330 130 30 230 30 330 30
19405  36 136 236 336 136 36 236 36   -  -
19406  42 142 242 342 142 42 242 42   -  -
19407  48 148 248 348 148 48 248 48   -  -
19408  54 154 254 354 154 54 254 54   -  -
19409  60 160 260 360 160 60 260 60 360 60
19410  66 166 266 366 166 66 266 66   -  -
19411  72 172 272 372 172 72 272 72   -  -
19412  78 178 278 378 178 78 278 78   -  -
19413  84 184 284 384 184 84 284 84   -  -
19414  90 190 290 390 190 90 290 90 390 90
19415}
19416do_execsql_test joinD-663 {
19417  SELECT t1.*, t2.*, t3.*, t4.*
19418  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19419  INNER JOIN t3 ON t1.c=t3.c
19420  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19421  WHERE t3.y>0
19422  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19423} {
19424   6 106 206 306 106  6 206  6   -  -
19425  12 112 212 312 112 12 212 12   -  -
19426  18 118 218 318 118 18 218 18   -  -
19427  24 124 224 324 124 24 224 24   -  -
19428  30 130 230 330 130 30 230 30 330 30
19429  36 136 236 336 136 36 236 36   -  -
19430  42 142 242 342 142 42 242 42   -  -
19431  48 148 248 348 148 48 248 48   -  -
19432  54 154 254 354 154 54 254 54   -  -
19433  60 160 260 360 160 60 260 60 360 60
19434  66 166 266 366 166 66 266 66   -  -
19435  72 172 272 372 172 72 272 72   -  -
19436  78 178 278 378 178 78 278 78   -  -
19437  84 184 284 384 184 84 284 84   -  -
19438  90 190 290 390 190 90 290 90 390 90
19439}
19440do_execsql_test joinD-664 {
19441  SELECT t1.*, t2.*, t3.*, t4.*
19442  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19443  INNER JOIN t3 ON t1.c=t3.c
19444  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19445  WHERE t3.y>0 OR t3.y IS NULL
19446  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19447} {
19448   6 106 206 306 106  6 206  6   -  -
19449  12 112 212 312 112 12 212 12   -  -
19450  18 118 218 318 118 18 218 18   -  -
19451  24 124 224 324 124 24 224 24   -  -
19452  30 130 230 330 130 30 230 30 330 30
19453  36 136 236 336 136 36 236 36   -  -
19454  42 142 242 342 142 42 242 42   -  -
19455  48 148 248 348 148 48 248 48   -  -
19456  54 154 254 354 154 54 254 54   -  -
19457  60 160 260 360 160 60 260 60 360 60
19458  66 166 266 366 166 66 266 66   -  -
19459  72 172 272 372 172 72 272 72   -  -
19460  78 178 278 378 178 78 278 78   -  -
19461  84 184 284 384 184 84 284 84   -  -
19462  90 190 290 390 190 90 290 90 390 90
19463   -   -   -   -   -  -   -  - 300  0
19464   -   -   -   -   -  -   -  - 305  5
19465   -   -   -   -   -  -   -  - 310 10
19466   -   -   -   -   -  -   -  - 315 15
19467   -   -   -   -   -  -   -  - 320 20
19468   -   -   -   -   -  -   -  - 325 25
19469   -   -   -   -   -  -   -  - 335 35
19470   -   -   -   -   -  -   -  - 340 40
19471   -   -   -   -   -  -   -  - 345 45
19472   -   -   -   -   -  -   -  - 350 50
19473   -   -   -   -   -  -   -  - 355 55
19474   -   -   -   -   -  -   -  - 365 65
19475   -   -   -   -   -  -   -  - 370 70
19476   -   -   -   -   -  -   -  - 375 75
19477   -   -   -   -   -  -   -  - 380 80
19478   -   -   -   -   -  -   -  - 385 85
19479   -   -   -   -   -  -   -  - 395 95
19480}
19481do_execsql_test joinD-665 {
19482  SELECT t1.*, t2.*, t3.*, t4.*
19483  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19484  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19485  FULL JOIN t4 ON t1.d=t4.d
19486  WHERE t4.z>0
19487  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19488} {
19489  30 130 230 330 130 30 230 30 330 30
19490  60 160 260 360 160 60 260 60 360 60
19491  90 190 290 390 190 90 290 90 390 90
19492   -   -   -   -   -  -   -  - 305  5
19493   -   -   -   -   -  -   -  - 310 10
19494   -   -   -   -   -  -   -  - 315 15
19495   -   -   -   -   -  -   -  - 320 20
19496   -   -   -   -   -  -   -  - 325 25
19497   -   -   -   -   -  -   -  - 335 35
19498   -   -   -   -   -  -   -  - 340 40
19499   -   -   -   -   -  -   -  - 345 45
19500   -   -   -   -   -  -   -  - 350 50
19501   -   -   -   -   -  -   -  - 355 55
19502   -   -   -   -   -  -   -  - 365 65
19503   -   -   -   -   -  -   -  - 370 70
19504   -   -   -   -   -  -   -  - 375 75
19505   -   -   -   -   -  -   -  - 380 80
19506   -   -   -   -   -  -   -  - 385 85
19507   -   -   -   -   -  -   -  - 395 95
19508}
19509do_execsql_test joinD-666 {
19510  SELECT t1.*, t2.*, t3.*, t4.*
19511  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19512  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19513  FULL JOIN t4 ON t1.d=t4.d
19514  WHERE t4.z IS NULL OR t4.z>0
19515  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19516} {
19517   6 106 206 306 106  6 206  6   -  -
19518  12 112 212 312 112 12 212 12   -  -
19519  18 118 218 318 118 18 218 18   -  -
19520  24 124 224 324 124 24 224 24   -  -
19521  30 130 230 330 130 30 230 30 330 30
19522  36 136 236 336 136 36 236 36   -  -
19523  42 142 242 342 142 42 242 42   -  -
19524  48 148 248 348 148 48 248 48   -  -
19525  54 154 254 354 154 54 254 54   -  -
19526  60 160 260 360 160 60 260 60 360 60
19527  66 166 266 366 166 66 266 66   -  -
19528  72 172 272 372 172 72 272 72   -  -
19529  78 178 278 378 178 78 278 78   -  -
19530  84 184 284 384 184 84 284 84   -  -
19531  90 190 290 390 190 90 290 90 390 90
19532   -   -   -   -   -  -   -  - 305  5
19533   -   -   -   -   -  -   -  - 310 10
19534   -   -   -   -   -  -   -  - 315 15
19535   -   -   -   -   -  -   -  - 320 20
19536   -   -   -   -   -  -   -  - 325 25
19537   -   -   -   -   -  -   -  - 335 35
19538   -   -   -   -   -  -   -  - 340 40
19539   -   -   -   -   -  -   -  - 345 45
19540   -   -   -   -   -  -   -  - 350 50
19541   -   -   -   -   -  -   -  - 355 55
19542   -   -   -   -   -  -   -  - 365 65
19543   -   -   -   -   -  -   -  - 370 70
19544   -   -   -   -   -  -   -  - 375 75
19545   -   -   -   -   -  -   -  - 380 80
19546   -   -   -   -   -  -   -  - 385 85
19547   -   -   -   -   -  -   -  - 395 95
19548}
19549do_execsql_test joinD-667 {
19550  SELECT t1.*, t2.*, t3.*, t4.*
19551  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19552  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19553  FULL JOIN t4 ON t1.d=t4.d
19554  WHERE t2.x>0 AND t4.z>0
19555  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19556} {
19557  30 130 230 330 130 30 230 30 330 30
19558  60 160 260 360 160 60 260 60 360 60
19559  90 190 290 390 190 90 290 90 390 90
19560}
19561do_execsql_test joinD-668 {
19562  SELECT t1.*, t2.*, t3.*, t4.*
19563  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19564  INNER JOIN t3 ON t1.c=t3.c
19565  FULL JOIN t4 ON t1.d=t4.d
19566  WHERE t4.z>0 AND t3.y>0
19567  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19568} {
19569  30 130 230 330 130 30 230 30 330 30
19570  60 160 260 360 160 60 260 60 360 60
19571  90 190 290 390 190 90 290 90 390 90
19572}
19573do_execsql_test joinD-669 {
19574  SELECT t1.*, t2.*, t3.*, t4.*
19575  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19576  INNER JOIN t3 ON t1.c=t3.c
19577  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19578  WHERE t2.x>0 AND t3.y>0
19579  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19580} {
19581   6 106 206 306 106  6 206  6   -  -
19582  12 112 212 312 112 12 212 12   -  -
19583  18 118 218 318 118 18 218 18   -  -
19584  24 124 224 324 124 24 224 24   -  -
19585  30 130 230 330 130 30 230 30 330 30
19586  36 136 236 336 136 36 236 36   -  -
19587  42 142 242 342 142 42 242 42   -  -
19588  48 148 248 348 148 48 248 48   -  -
19589  54 154 254 354 154 54 254 54   -  -
19590  60 160 260 360 160 60 260 60 360 60
19591  66 166 266 366 166 66 266 66   -  -
19592  72 172 272 372 172 72 272 72   -  -
19593  78 178 278 378 178 78 278 78   -  -
19594  84 184 284 384 184 84 284 84   -  -
19595  90 190 290 390 190 90 290 90 390 90
19596}
19597do_execsql_test joinD-670 {
19598  SELECT t1.*, t2.*, t3.*, t4.*
19599  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19600  INNER JOIN t3 ON t1.c=t3.c
19601  FULL JOIN t4 ON t1.d=t4.d
19602  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
19603  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19604} {
19605  30 130 230 330 130 30 230 30 330 30
19606  60 160 260 360 160 60 260 60 360 60
19607  90 190 290 390 190 90 290 90 390 90
19608}
19609do_execsql_test joinD-671 {
19610  SELECT t1.*, t2.*, t3.*, t4.*
19611  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19612  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19613  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
19614  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19615} {
19616   6 106 206 306 106  6 206  6   -  -
19617  12 112 212 312 112 12 212 12   -  -
19618  18 118 218 318 118 18 218 18   -  -
19619  24 124 224 324 124 24 224 24   -  -
19620  30 130 230 330 130 30 230 30 330 30
19621  36 136 236 336 136 36 236 36   -  -
19622  42 142 242 342 142 42 242 42   -  -
19623  48 148 248 348 148 48 248 48   -  -
19624  54 154 254 354 154 54 254 54   -  -
19625  60 160 260 360 160 60 260 60 360 60
19626  66 166 266 366 166 66 266 66   -  -
19627  72 172 272 372 172 72 272 72   -  -
19628  78 178 278 378 178 78 278 78   -  -
19629  84 184 284 384 184 84 284 84   -  -
19630  90 190 290 390 190 90 290 90 390 90
19631   -   -   -   -   -  -   -  - 300  0
19632   -   -   -   -   -  -   -  - 305  5
19633   -   -   -   -   -  -   -  - 310 10
19634   -   -   -   -   -  -   -  - 315 15
19635   -   -   -   -   -  -   -  - 320 20
19636   -   -   -   -   -  -   -  - 325 25
19637   -   -   -   -   -  -   -  - 335 35
19638   -   -   -   -   -  -   -  - 340 40
19639   -   -   -   -   -  -   -  - 345 45
19640   -   -   -   -   -  -   -  - 350 50
19641   -   -   -   -   -  -   -  - 355 55
19642   -   -   -   -   -  -   -  - 365 65
19643   -   -   -   -   -  -   -  - 370 70
19644   -   -   -   -   -  -   -  - 375 75
19645   -   -   -   -   -  -   -  - 380 80
19646   -   -   -   -   -  -   -  - 385 85
19647   -   -   -   -   -  -   -  - 395 95
19648}
19649do_execsql_test joinD-672 {
19650  SELECT t1.*, t2.*, t3.*, t4.*
19651  FROM t1 RIGHT JOIN t2 ON t2.x>0
19652  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19653  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
19654  WHERE t1.b IS NOT DISTINCT FROM t2.b
19655  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19656} {
19657   6 106 206 306 106  6 206  6   -  -
19658  12 112 212 312 112 12 212 12   -  -
19659  18 118 218 318 118 18 218 18   -  -
19660  24 124 224 324 124 24 224 24   -  -
19661  30 130 230 330 130 30 230 30 330 30
19662  36 136 236 336 136 36 236 36   -  -
19663  42 142 242 342 142 42 242 42   -  -
19664  48 148 248 348 148 48 248 48   -  -
19665  54 154 254 354 154 54 254 54   -  -
19666  60 160 260 360 160 60 260 60 360 60
19667  66 166 266 366 166 66 266 66   -  -
19668  72 172 272 372 172 72 272 72   -  -
19669  78 178 278 378 178 78 278 78   -  -
19670  84 184 284 384 184 84 284 84   -  -
19671  90 190 290 390 190 90 290 90 390 90
19672   -   -   -   -   -  -   -  - 300  0
19673   -   -   -   -   -  -   -  - 305  5
19674   -   -   -   -   -  -   -  - 310 10
19675   -   -   -   -   -  -   -  - 320 20
19676   -   -   -   -   -  -   -  - 325 25
19677   -   -   -   -   -  -   -  - 335 35
19678   -   -   -   -   -  -   -  - 340 40
19679   -   -   -   -   -  -   -  - 350 50
19680   -   -   -   -   -  -   -  - 355 55
19681   -   -   -   -   -  -   -  - 365 65
19682   -   -   -   -   -  -   -  - 370 70
19683   -   -   -   -   -  -   -  - 380 80
19684   -   -   -   -   -  -   -  - 385 85
19685   -   -   -   -   -  -   -  - 395 95
19686}
19687do_execsql_test joinD-673 {
19688  SELECT t1.*, t2.*, t3.*, t4.*
19689  FROM t1 RIGHT JOIN t2 ON t2.x>0
19690  INNER JOIN t3 ON t3.y>0
19691  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
19692  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
19693  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19694} {
19695   6 106 206 306 106  6 206  6   -  -
19696  12 112 212 312 112 12 212 12   -  -
19697  18 118 218 318 118 18 218 18   -  -
19698  24 124 224 324 124 24 224 24   -  -
19699  30 130 230 330 130 30 230 30 330 30
19700  36 136 236 336 136 36 236 36   -  -
19701  42 142 242 342 142 42 242 42   -  -
19702  48 148 248 348 148 48 248 48   -  -
19703  54 154 254 354 154 54 254 54   -  -
19704  60 160 260 360 160 60 260 60 360 60
19705  66 166 266 366 166 66 266 66   -  -
19706  72 172 272 372 172 72 272 72   -  -
19707  78 178 278 378 178 78 278 78   -  -
19708  84 184 284 384 184 84 284 84   -  -
19709  90 190 290 390 190 90 290 90 390 90
19710   -   -   -   -   -  -   -  - 300  0
19711}
19712do_execsql_test joinD-674 {
19713  SELECT t1.*, t2.*, t3.*, t4.*
19714  FROM t1 RIGHT JOIN t2 ON t2.x>0
19715  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19716  FULL JOIN t4 ON t4.z>0
19717  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
19718  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19719} {
19720  30 130 230 330 130 30 230 30 330 30
19721  60 160 260 360 160 60 260 60 360 60
19722  90 190 290 390 190 90 290 90 390 90
19723}
19724do_execsql_test joinD-675 {
19725  SELECT t1.*, t2.*, t3.*, t4.*
19726  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
19727  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19728  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19729  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19730} {
19731   6 106 206 306 106  6 206  6   -  -
19732  12 112 212 312 112 12 212 12   -  -
19733  18 118 218 318 118 18 218 18   -  -
19734  24 124 224 324 124 24 224 24   -  -
19735  30 130 230 330 130 30 230 30 330 30
19736  36 136 236 336 136 36 236 36   -  -
19737  42 142 242 342 142 42 242 42   -  -
19738  48 148 248 348 148 48 248 48   -  -
19739  54 154 254 354 154 54 254 54   -  -
19740  60 160 260 360 160 60 260 60 360 60
19741  66 166 266 366 166 66 266 66   -  -
19742  72 172 272 372 172 72 272 72   -  -
19743  78 178 278 378 178 78 278 78   -  -
19744  84 184 284 384 184 84 284 84   -  -
19745  90 190 290 390 190 90 290 90 390 90
19746   -   -   -   -   -  -   -  - 300  0
19747   -   -   -   -   -  -   -  - 305  5
19748   -   -   -   -   -  -   -  - 310 10
19749   -   -   -   -   -  -   -  - 315 15
19750   -   -   -   -   -  -   -  - 320 20
19751   -   -   -   -   -  -   -  - 325 25
19752   -   -   -   -   -  -   -  - 335 35
19753   -   -   -   -   -  -   -  - 340 40
19754   -   -   -   -   -  -   -  - 345 45
19755   -   -   -   -   -  -   -  - 350 50
19756   -   -   -   -   -  -   -  - 355 55
19757   -   -   -   -   -  -   -  - 365 65
19758   -   -   -   -   -  -   -  - 370 70
19759   -   -   -   -   -  -   -  - 375 75
19760   -   -   -   -   -  -   -  - 380 80
19761   -   -   -   -   -  -   -  - 385 85
19762   -   -   -   -   -  -   -  - 395 95
19763}
19764do_execsql_test joinD-676 {
19765  SELECT t1.*, t2.*, t3.*, t4.*
19766  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19767  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
19768  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19769  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19770} {
19771   6 106 206 306 106  6 206  6   -  -
19772  12 112 212 312 112 12 212 12   -  -
19773  18 118 218 318 118 18 218 18   -  -
19774  24 124 224 324 124 24 224 24   -  -
19775  30 130 230 330 130 30 230 30 330 30
19776  36 136 236 336 136 36 236 36   -  -
19777  42 142 242 342 142 42 242 42   -  -
19778  48 148 248 348 148 48 248 48   -  -
19779  54 154 254 354 154 54 254 54   -  -
19780  60 160 260 360 160 60 260 60 360 60
19781  66 166 266 366 166 66 266 66   -  -
19782  72 172 272 372 172 72 272 72   -  -
19783  78 178 278 378 178 78 278 78   -  -
19784  84 184 284 384 184 84 284 84   -  -
19785  90 190 290 390 190 90 290 90 390 90
19786   -   -   -   -   -  -   -  - 300  0
19787   -   -   -   -   -  -   -  - 305  5
19788   -   -   -   -   -  -   -  - 310 10
19789   -   -   -   -   -  -   -  - 315 15
19790   -   -   -   -   -  -   -  - 320 20
19791   -   -   -   -   -  -   -  - 325 25
19792   -   -   -   -   -  -   -  - 335 35
19793   -   -   -   -   -  -   -  - 340 40
19794   -   -   -   -   -  -   -  - 345 45
19795   -   -   -   -   -  -   -  - 350 50
19796   -   -   -   -   -  -   -  - 355 55
19797   -   -   -   -   -  -   -  - 365 65
19798   -   -   -   -   -  -   -  - 370 70
19799   -   -   -   -   -  -   -  - 375 75
19800   -   -   -   -   -  -   -  - 380 80
19801   -   -   -   -   -  -   -  - 385 85
19802   -   -   -   -   -  -   -  - 395 95
19803}
19804do_execsql_test joinD-677 {
19805  SELECT t1.*, t2.*, t3.*, t4.*
19806  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19807  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19808  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19809  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19810} {
19811  10 110 210 310 110 10   -  - 310 10
19812  20 120 220 320 120 20   -  - 320 20
19813  30 130 230 330 130 30 230 30 330 30
19814  40 140 240 340 140 40   -  - 340 40
19815  50 150 250 350 150 50   -  - 350 50
19816  60 160 260 360 160 60 260 60 360 60
19817  70 170 270 370 170 70   -  - 370 70
19818  80 180 280 380 180 80   -  - 380 80
19819  90 190 290 390 190 90 290 90 390 90
19820}
19821do_execsql_test joinD-678 {
19822  SELECT t1.*, t2.*, t3.*, t4.*
19823  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19824  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19825  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19826  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19827} {
19828  10 110 210 310 110 10   -  - 310 10
19829  20 120 220 320 120 20   -  - 320 20
19830  30 130 230 330 130 30 230 30 330 30
19831  40 140 240 340 140 40   -  - 340 40
19832  50 150 250 350 150 50   -  - 350 50
19833  60 160 260 360 160 60 260 60 360 60
19834  70 170 270 370 170 70   -  - 370 70
19835  80 180 280 380 180 80   -  - 380 80
19836  90 190 290 390 190 90 290 90 390 90
19837}
19838do_execsql_test joinD-679 {
19839  SELECT t1.*, t2.*, t3.*, t4.*
19840  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19841  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19842  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19843  WHERE t2.x>0
19844  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19845} {
19846  10 110 210 310 110 10   -  - 310 10
19847  20 120 220 320 120 20   -  - 320 20
19848  30 130 230 330 130 30 230 30 330 30
19849  40 140 240 340 140 40   -  - 340 40
19850  50 150 250 350 150 50   -  - 350 50
19851  60 160 260 360 160 60 260 60 360 60
19852  70 170 270 370 170 70   -  - 370 70
19853  80 180 280 380 180 80   -  - 380 80
19854  90 190 290 390 190 90 290 90 390 90
19855}
19856do_execsql_test joinD-680 {
19857  SELECT t1.*, t2.*, t3.*, t4.*
19858  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19859  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19860  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19861  WHERE (t2.x>0 OR t2.x IS NULL)
19862  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19863} {
19864  10 110 210 310 110 10   -  - 310 10
19865  20 120 220 320 120 20   -  - 320 20
19866  30 130 230 330 130 30 230 30 330 30
19867  40 140 240 340 140 40   -  - 340 40
19868  50 150 250 350 150 50   -  - 350 50
19869  60 160 260 360 160 60 260 60 360 60
19870  70 170 270 370 170 70   -  - 370 70
19871  80 180 280 380 180 80   -  - 380 80
19872  90 190 290 390 190 90 290 90 390 90
19873}
19874do_execsql_test joinD-681 {
19875  SELECT t1.*, t2.*, t3.*, t4.*
19876  FROM t1 RIGHT JOIN t2 ON true
19877  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19878  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19879  WHERE t1.b=t2.b AND t2.x>0
19880  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19881} {
19882  10 110 210 310 110 10   -  - 310 10
19883  20 120 220 320 120 20   -  - 320 20
19884  30 130 230 330 130 30 230 30 330 30
19885  40 140 240 340 140 40   -  - 340 40
19886  50 150 250 350 150 50   -  - 350 50
19887  60 160 260 360 160 60 260 60 360 60
19888  70 170 270 370 170 70   -  - 370 70
19889  80 180 280 380 180 80   -  - 380 80
19890  90 190 290 390 190 90 290 90 390 90
19891}
19892do_execsql_test joinD-682 {
19893  SELECT t1.*, t2.*, t3.*, t4.*
19894  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19895  LEFT JOIN t3 ON t1.c=t3.c
19896  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19897  WHERE t3.y>0
19898  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19899} {
19900  30 130 230 330 130 30 230 30 330 30
19901  60 160 260 360 160 60 260 60 360 60
19902  90 190 290 390 190 90 290 90 390 90
19903}
19904do_execsql_test joinD-683 {
19905  SELECT t1.*, t2.*, t3.*, t4.*
19906  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19907  LEFT JOIN t3 ON t1.c=t3.c
19908  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19909  WHERE t3.y>0 OR t3.y IS NULL
19910  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19911} {
19912  10 110 210 310 110 10   -  - 310 10
19913  20 120 220 320 120 20   -  - 320 20
19914  30 130 230 330 130 30 230 30 330 30
19915  40 140 240 340 140 40   -  - 340 40
19916  50 150 250 350 150 50   -  - 350 50
19917  60 160 260 360 160 60 260 60 360 60
19918  70 170 270 370 170 70   -  - 370 70
19919  80 180 280 380 180 80   -  - 380 80
19920  90 190 290 390 190 90 290 90 390 90
19921}
19922do_execsql_test joinD-684 {
19923  SELECT t1.*, t2.*, t3.*, t4.*
19924  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19925  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19926  INNER JOIN t4 ON t1.d=t4.d
19927  WHERE t4.z>0
19928  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19929} {
19930  10 110 210 310 110 10   -  - 310 10
19931  20 120 220 320 120 20   -  - 320 20
19932  30 130 230 330 130 30 230 30 330 30
19933  40 140 240 340 140 40   -  - 340 40
19934  50 150 250 350 150 50   -  - 350 50
19935  60 160 260 360 160 60 260 60 360 60
19936  70 170 270 370 170 70   -  - 370 70
19937  80 180 280 380 180 80   -  - 380 80
19938  90 190 290 390 190 90 290 90 390 90
19939}
19940do_execsql_test joinD-685 {
19941  SELECT t1.*, t2.*, t3.*, t4.*
19942  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19943  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19944  INNER JOIN t4 ON t1.d=t4.d
19945  WHERE t4.z IS NULL OR t4.z>0
19946  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19947} {
19948  10 110 210 310 110 10   -  - 310 10
19949  20 120 220 320 120 20   -  - 320 20
19950  30 130 230 330 130 30 230 30 330 30
19951  40 140 240 340 140 40   -  - 340 40
19952  50 150 250 350 150 50   -  - 350 50
19953  60 160 260 360 160 60 260 60 360 60
19954  70 170 270 370 170 70   -  - 370 70
19955  80 180 280 380 180 80   -  - 380 80
19956  90 190 290 390 190 90 290 90 390 90
19957}
19958do_execsql_test joinD-686 {
19959  SELECT t1.*, t2.*, t3.*, t4.*
19960  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19961  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19962  INNER JOIN t4 ON t1.d=t4.d
19963  WHERE t2.x>0 AND t4.z>0
19964  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19965} {
19966  10 110 210 310 110 10   -  - 310 10
19967  20 120 220 320 120 20   -  - 320 20
19968  30 130 230 330 130 30 230 30 330 30
19969  40 140 240 340 140 40   -  - 340 40
19970  50 150 250 350 150 50   -  - 350 50
19971  60 160 260 360 160 60 260 60 360 60
19972  70 170 270 370 170 70   -  - 370 70
19973  80 180 280 380 180 80   -  - 380 80
19974  90 190 290 390 190 90 290 90 390 90
19975}
19976do_execsql_test joinD-687 {
19977  SELECT t1.*, t2.*, t3.*, t4.*
19978  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19979  LEFT JOIN t3 ON t1.c=t3.c
19980  INNER JOIN t4 ON t1.d=t4.d
19981  WHERE t4.z>0 AND t3.y>0
19982  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19983} {
19984  30 130 230 330 130 30 230 30 330 30
19985  60 160 260 360 160 60 260 60 360 60
19986  90 190 290 390 190 90 290 90 390 90
19987}
19988do_execsql_test joinD-688 {
19989  SELECT t1.*, t2.*, t3.*, t4.*
19990  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19991  LEFT JOIN t3 ON t1.c=t3.c
19992  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19993  WHERE t2.x>0 AND t3.y>0
19994  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19995} {
19996  30 130 230 330 130 30 230 30 330 30
19997  60 160 260 360 160 60 260 60 360 60
19998  90 190 290 390 190 90 290 90 390 90
19999}
20000do_execsql_test joinD-689 {
20001  SELECT t1.*, t2.*, t3.*, t4.*
20002  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20003  LEFT JOIN t3 ON t1.c=t3.c
20004  INNER JOIN t4 ON t1.d=t4.d
20005  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
20006  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20007} {
20008  30 130 230 330 130 30 230 30 330 30
20009  60 160 260 360 160 60 260 60 360 60
20010  90 190 290 390 190 90 290 90 390 90
20011}
20012do_execsql_test joinD-690 {
20013  SELECT t1.*, t2.*, t3.*, t4.*
20014  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20015  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20016  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20017  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20018} {
20019  10 110 210 310 110 10   -  - 310 10
20020  20 120 220 320 120 20   -  - 320 20
20021  30 130 230 330 130 30 230 30 330 30
20022  40 140 240 340 140 40   -  - 340 40
20023  50 150 250 350 150 50   -  - 350 50
20024  60 160 260 360 160 60 260 60 360 60
20025  70 170 270 370 170 70   -  - 370 70
20026  80 180 280 380 180 80   -  - 380 80
20027  90 190 290 390 190 90 290 90 390 90
20028}
20029do_execsql_test joinD-691 {
20030  SELECT t1.*, t2.*, t3.*, t4.*
20031  FROM t1 RIGHT JOIN t2 ON t2.x>0
20032  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20033  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20034  WHERE t1.b IS NOT DISTINCT FROM t2.b
20035  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20036} {
20037  10 110 210 310 110 10   -  - 310 10
20038  20 120 220 320 120 20   -  - 320 20
20039  30 130 230 330 130 30 230 30 330 30
20040  40 140 240 340 140 40   -  - 340 40
20041  50 150 250 350 150 50   -  - 350 50
20042  60 160 260 360 160 60 260 60 360 60
20043  70 170 270 370 170 70   -  - 370 70
20044  80 180 280 380 180 80   -  - 380 80
20045  90 190 290 390 190 90 290 90 390 90
20046}
20047do_execsql_test joinD-692 {
20048  SELECT t1.*, t2.*, t3.*, t4.*
20049  FROM t1 RIGHT JOIN t2 ON t2.x>0
20050  LEFT JOIN t3 ON t3.y>0
20051  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20052  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
20053  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20054} {
20055  30 130 230 330 130 30 230 30 330 30
20056  60 160 260 360 160 60 260 60 360 60
20057  90 190 290 390 190 90 290 90 390 90
20058}
20059do_execsql_test joinD-693 {
20060  SELECT t1.*, t2.*, t3.*, t4.*
20061  FROM t1 RIGHT JOIN t2 ON t2.x>0
20062  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20063  INNER JOIN t4 ON t4.z>0
20064  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
20065  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20066} {
20067  10 110 210 310 110 10   -  - 310 10
20068  20 120 220 320 120 20   -  - 320 20
20069  30 130 230 330 130 30 230 30 330 30
20070  40 140 240 340 140 40   -  - 340 40
20071  50 150 250 350 150 50   -  - 350 50
20072  60 160 260 360 160 60 260 60 360 60
20073  70 170 270 370 170 70   -  - 370 70
20074  80 180 280 380 180 80   -  - 380 80
20075  90 190 290 390 190 90 290 90 390 90
20076}
20077do_execsql_test joinD-694 {
20078  SELECT t1.*, t2.*, t3.*, t4.*
20079  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
20080  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20081  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
20082  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20083} {
20084  10 110 210 310 110 10   -  - 310 10
20085  20 120 220 320 120 20   -  - 320 20
20086  30 130 230 330 130 30 230 30 330 30
20087  40 140 240 340 140 40   -  - 340 40
20088  50 150 250 350 150 50   -  - 350 50
20089  60 160 260 360 160 60 260 60 360 60
20090  70 170 270 370 170 70   -  - 370 70
20091  80 180 280 380 180 80   -  - 380 80
20092  90 190 290 390 190 90 290 90 390 90
20093}
20094do_execsql_test joinD-695 {
20095  SELECT t1.*, t2.*, t3.*, t4.*
20096  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20097  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
20098  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
20099  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20100} {
20101  10 110 210 310 110 10   -  - 310 10
20102  20 120 220 320 120 20   -  - 320 20
20103  30 130 230 330 130 30 230 30 330 30
20104  40 140 240 340 140 40   -  - 340 40
20105  50 150 250 350 150 50   -  - 350 50
20106  60 160 260 360 160 60 260 60 360 60
20107  70 170 270 370 170 70   -  - 370 70
20108  80 180 280 380 180 80   -  - 380 80
20109  90 190 290 390 190 90 290 90 390 90
20110}
20111do_execsql_test joinD-696 {
20112  SELECT t1.*, t2.*, t3.*, t4.*
20113  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20114  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20115  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20116  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20117} {
20118   2 102 202 302 102  2   -  -   -  -
20119   4 104 204 304 104  4   -  -   -  -
20120   6 106 206 306 106  6 206  6   -  -
20121   8 108 208 308 108  8   -  -   -  -
20122  10 110 210 310 110 10   -  - 310 10
20123  12 112 212 312 112 12 212 12   -  -
20124  14 114 214 314 114 14   -  -   -  -
20125  16 116 216 316 116 16   -  -   -  -
20126  18 118 218 318 118 18 218 18   -  -
20127  20 120 220 320 120 20   -  - 320 20
20128  22 122 222 322 122 22   -  -   -  -
20129  24 124 224 324 124 24 224 24   -  -
20130  26 126 226 326 126 26   -  -   -  -
20131  28 128 228 328 128 28   -  -   -  -
20132  30 130 230 330 130 30 230 30 330 30
20133  32 132 232 332 132 32   -  -   -  -
20134  34 134 234 334 134 34   -  -   -  -
20135  36 136 236 336 136 36 236 36   -  -
20136  38 138 238 338 138 38   -  -   -  -
20137  40 140 240 340 140 40   -  - 340 40
20138  42 142 242 342 142 42 242 42   -  -
20139  44 144 244 344 144 44   -  -   -  -
20140  46 146 246 346 146 46   -  -   -  -
20141  48 148 248 348 148 48 248 48   -  -
20142  50 150 250 350 150 50   -  - 350 50
20143  52 152 252 352 152 52   -  -   -  -
20144  54 154 254 354 154 54 254 54   -  -
20145  56 156 256 356 156 56   -  -   -  -
20146  58 158 258 358 158 58   -  -   -  -
20147  60 160 260 360 160 60 260 60 360 60
20148  62 162 262 362 162 62   -  -   -  -
20149  64 164 264 364 164 64   -  -   -  -
20150  66 166 266 366 166 66 266 66   -  -
20151  68 168 268 368 168 68   -  -   -  -
20152  70 170 270 370 170 70   -  - 370 70
20153  72 172 272 372 172 72 272 72   -  -
20154  74 174 274 374 174 74   -  -   -  -
20155  76 176 276 376 176 76   -  -   -  -
20156  78 178 278 378 178 78 278 78   -  -
20157  80 180 280 380 180 80   -  - 380 80
20158  82 182 282 382 182 82   -  -   -  -
20159  84 184 284 384 184 84 284 84   -  -
20160  86 186 286 386 186 86   -  -   -  -
20161  88 188 288 388 188 88   -  -   -  -
20162  90 190 290 390 190 90 290 90 390 90
20163  92 192 292 392 192 92   -  -   -  -
20164  94 194 294 394 194 94   -  -   -  -
20165   -   -   -   - 100  0   -  -   -  -
20166}
20167do_execsql_test joinD-697 {
20168  SELECT t1.*, t2.*, t3.*, t4.*
20169  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20170  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20171  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20172  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20173} {
20174   2 102 202 302 102  2   -  -   -  -
20175   4 104 204 304 104  4   -  -   -  -
20176   6 106 206 306 106  6 206  6   -  -
20177   8 108 208 308 108  8   -  -   -  -
20178  10 110 210 310 110 10   -  - 310 10
20179  12 112 212 312 112 12 212 12   -  -
20180  14 114 214 314 114 14   -  -   -  -
20181  16 116 216 316 116 16   -  -   -  -
20182  18 118 218 318 118 18 218 18   -  -
20183  20 120 220 320 120 20   -  - 320 20
20184  22 122 222 322 122 22   -  -   -  -
20185  24 124 224 324 124 24 224 24   -  -
20186  26 126 226 326 126 26   -  -   -  -
20187  28 128 228 328 128 28   -  -   -  -
20188  30 130 230 330 130 30 230 30 330 30
20189  32 132 232 332 132 32   -  -   -  -
20190  34 134 234 334 134 34   -  -   -  -
20191  36 136 236 336 136 36 236 36   -  -
20192  38 138 238 338 138 38   -  -   -  -
20193  40 140 240 340 140 40   -  - 340 40
20194  42 142 242 342 142 42 242 42   -  -
20195  44 144 244 344 144 44   -  -   -  -
20196  46 146 246 346 146 46   -  -   -  -
20197  48 148 248 348 148 48 248 48   -  -
20198  50 150 250 350 150 50   -  - 350 50
20199  52 152 252 352 152 52   -  -   -  -
20200  54 154 254 354 154 54 254 54   -  -
20201  56 156 256 356 156 56   -  -   -  -
20202  58 158 258 358 158 58   -  -   -  -
20203  60 160 260 360 160 60 260 60 360 60
20204  62 162 262 362 162 62   -  -   -  -
20205  64 164 264 364 164 64   -  -   -  -
20206  66 166 266 366 166 66 266 66   -  -
20207  68 168 268 368 168 68   -  -   -  -
20208  70 170 270 370 170 70   -  - 370 70
20209  72 172 272 372 172 72 272 72   -  -
20210  74 174 274 374 174 74   -  -   -  -
20211  76 176 276 376 176 76   -  -   -  -
20212  78 178 278 378 178 78 278 78   -  -
20213  80 180 280 380 180 80   -  - 380 80
20214  82 182 282 382 182 82   -  -   -  -
20215  84 184 284 384 184 84 284 84   -  -
20216  86 186 286 386 186 86   -  -   -  -
20217  88 188 288 388 188 88   -  -   -  -
20218  90 190 290 390 190 90 290 90 390 90
20219  92 192 292 392 192 92   -  -   -  -
20220  94 194 294 394 194 94   -  -   -  -
20221   -   -   -   - 100  0   -  -   -  -
20222}
20223do_execsql_test joinD-698 {
20224  SELECT t1.*, t2.*, t3.*, t4.*
20225  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20226  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20227  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20228  WHERE t2.x>0
20229  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20230} {
20231   2 102 202 302 102  2   -  -   -  -
20232   4 104 204 304 104  4   -  -   -  -
20233   6 106 206 306 106  6 206  6   -  -
20234   8 108 208 308 108  8   -  -   -  -
20235  10 110 210 310 110 10   -  - 310 10
20236  12 112 212 312 112 12 212 12   -  -
20237  14 114 214 314 114 14   -  -   -  -
20238  16 116 216 316 116 16   -  -   -  -
20239  18 118 218 318 118 18 218 18   -  -
20240  20 120 220 320 120 20   -  - 320 20
20241  22 122 222 322 122 22   -  -   -  -
20242  24 124 224 324 124 24 224 24   -  -
20243  26 126 226 326 126 26   -  -   -  -
20244  28 128 228 328 128 28   -  -   -  -
20245  30 130 230 330 130 30 230 30 330 30
20246  32 132 232 332 132 32   -  -   -  -
20247  34 134 234 334 134 34   -  -   -  -
20248  36 136 236 336 136 36 236 36   -  -
20249  38 138 238 338 138 38   -  -   -  -
20250  40 140 240 340 140 40   -  - 340 40
20251  42 142 242 342 142 42 242 42   -  -
20252  44 144 244 344 144 44   -  -   -  -
20253  46 146 246 346 146 46   -  -   -  -
20254  48 148 248 348 148 48 248 48   -  -
20255  50 150 250 350 150 50   -  - 350 50
20256  52 152 252 352 152 52   -  -   -  -
20257  54 154 254 354 154 54 254 54   -  -
20258  56 156 256 356 156 56   -  -   -  -
20259  58 158 258 358 158 58   -  -   -  -
20260  60 160 260 360 160 60 260 60 360 60
20261  62 162 262 362 162 62   -  -   -  -
20262  64 164 264 364 164 64   -  -   -  -
20263  66 166 266 366 166 66 266 66   -  -
20264  68 168 268 368 168 68   -  -   -  -
20265  70 170 270 370 170 70   -  - 370 70
20266  72 172 272 372 172 72 272 72   -  -
20267  74 174 274 374 174 74   -  -   -  -
20268  76 176 276 376 176 76   -  -   -  -
20269  78 178 278 378 178 78 278 78   -  -
20270  80 180 280 380 180 80   -  - 380 80
20271  82 182 282 382 182 82   -  -   -  -
20272  84 184 284 384 184 84 284 84   -  -
20273  86 186 286 386 186 86   -  -   -  -
20274  88 188 288 388 188 88   -  -   -  -
20275  90 190 290 390 190 90 290 90 390 90
20276  92 192 292 392 192 92   -  -   -  -
20277  94 194 294 394 194 94   -  -   -  -
20278}
20279do_execsql_test joinD-699 {
20280  SELECT t1.*, t2.*, t3.*, t4.*
20281  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20282  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20283  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20284  WHERE (t2.x>0 OR t2.x IS NULL)
20285  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20286} {
20287   2 102 202 302 102  2   -  -   -  -
20288   4 104 204 304 104  4   -  -   -  -
20289   6 106 206 306 106  6 206  6   -  -
20290   8 108 208 308 108  8   -  -   -  -
20291  10 110 210 310 110 10   -  - 310 10
20292  12 112 212 312 112 12 212 12   -  -
20293  14 114 214 314 114 14   -  -   -  -
20294  16 116 216 316 116 16   -  -   -  -
20295  18 118 218 318 118 18 218 18   -  -
20296  20 120 220 320 120 20   -  - 320 20
20297  22 122 222 322 122 22   -  -   -  -
20298  24 124 224 324 124 24 224 24   -  -
20299  26 126 226 326 126 26   -  -   -  -
20300  28 128 228 328 128 28   -  -   -  -
20301  30 130 230 330 130 30 230 30 330 30
20302  32 132 232 332 132 32   -  -   -  -
20303  34 134 234 334 134 34   -  -   -  -
20304  36 136 236 336 136 36 236 36   -  -
20305  38 138 238 338 138 38   -  -   -  -
20306  40 140 240 340 140 40   -  - 340 40
20307  42 142 242 342 142 42 242 42   -  -
20308  44 144 244 344 144 44   -  -   -  -
20309  46 146 246 346 146 46   -  -   -  -
20310  48 148 248 348 148 48 248 48   -  -
20311  50 150 250 350 150 50   -  - 350 50
20312  52 152 252 352 152 52   -  -   -  -
20313  54 154 254 354 154 54 254 54   -  -
20314  56 156 256 356 156 56   -  -   -  -
20315  58 158 258 358 158 58   -  -   -  -
20316  60 160 260 360 160 60 260 60 360 60
20317  62 162 262 362 162 62   -  -   -  -
20318  64 164 264 364 164 64   -  -   -  -
20319  66 166 266 366 166 66 266 66   -  -
20320  68 168 268 368 168 68   -  -   -  -
20321  70 170 270 370 170 70   -  - 370 70
20322  72 172 272 372 172 72 272 72   -  -
20323  74 174 274 374 174 74   -  -   -  -
20324  76 176 276 376 176 76   -  -   -  -
20325  78 178 278 378 178 78 278 78   -  -
20326  80 180 280 380 180 80   -  - 380 80
20327  82 182 282 382 182 82   -  -   -  -
20328  84 184 284 384 184 84 284 84   -  -
20329  86 186 286 386 186 86   -  -   -  -
20330  88 188 288 388 188 88   -  -   -  -
20331  90 190 290 390 190 90 290 90 390 90
20332  92 192 292 392 192 92   -  -   -  -
20333  94 194 294 394 194 94   -  -   -  -
20334}
20335do_execsql_test joinD-700 {
20336  SELECT t1.*, t2.*, t3.*, t4.*
20337  FROM t1 RIGHT JOIN t2 ON true
20338  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20339  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20340  WHERE t1.b=t2.b AND t2.x>0
20341  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20342} {
20343   2 102 202 302 102  2   -  -   -  -
20344   4 104 204 304 104  4   -  -   -  -
20345   6 106 206 306 106  6 206  6   -  -
20346   8 108 208 308 108  8   -  -   -  -
20347  10 110 210 310 110 10   -  - 310 10
20348  12 112 212 312 112 12 212 12   -  -
20349  14 114 214 314 114 14   -  -   -  -
20350  16 116 216 316 116 16   -  -   -  -
20351  18 118 218 318 118 18 218 18   -  -
20352  20 120 220 320 120 20   -  - 320 20
20353  22 122 222 322 122 22   -  -   -  -
20354  24 124 224 324 124 24 224 24   -  -
20355  26 126 226 326 126 26   -  -   -  -
20356  28 128 228 328 128 28   -  -   -  -
20357  30 130 230 330 130 30 230 30 330 30
20358  32 132 232 332 132 32   -  -   -  -
20359  34 134 234 334 134 34   -  -   -  -
20360  36 136 236 336 136 36 236 36   -  -
20361  38 138 238 338 138 38   -  -   -  -
20362  40 140 240 340 140 40   -  - 340 40
20363  42 142 242 342 142 42 242 42   -  -
20364  44 144 244 344 144 44   -  -   -  -
20365  46 146 246 346 146 46   -  -   -  -
20366  48 148 248 348 148 48 248 48   -  -
20367  50 150 250 350 150 50   -  - 350 50
20368  52 152 252 352 152 52   -  -   -  -
20369  54 154 254 354 154 54 254 54   -  -
20370  56 156 256 356 156 56   -  -   -  -
20371  58 158 258 358 158 58   -  -   -  -
20372  60 160 260 360 160 60 260 60 360 60
20373  62 162 262 362 162 62   -  -   -  -
20374  64 164 264 364 164 64   -  -   -  -
20375  66 166 266 366 166 66 266 66   -  -
20376  68 168 268 368 168 68   -  -   -  -
20377  70 170 270 370 170 70   -  - 370 70
20378  72 172 272 372 172 72 272 72   -  -
20379  74 174 274 374 174 74   -  -   -  -
20380  76 176 276 376 176 76   -  -   -  -
20381  78 178 278 378 178 78 278 78   -  -
20382  80 180 280 380 180 80   -  - 380 80
20383  82 182 282 382 182 82   -  -   -  -
20384  84 184 284 384 184 84 284 84   -  -
20385  86 186 286 386 186 86   -  -   -  -
20386  88 188 288 388 188 88   -  -   -  -
20387  90 190 290 390 190 90 290 90 390 90
20388  92 192 292 392 192 92   -  -   -  -
20389  94 194 294 394 194 94   -  -   -  -
20390}
20391do_execsql_test joinD-701 {
20392  SELECT t1.*, t2.*, t3.*, t4.*
20393  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20394  LEFT JOIN t3 ON t1.c=t3.c
20395  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20396  WHERE t3.y>0
20397  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20398} {
20399   6 106 206 306 106  6 206  6   -  -
20400  12 112 212 312 112 12 212 12   -  -
20401  18 118 218 318 118 18 218 18   -  -
20402  24 124 224 324 124 24 224 24   -  -
20403  30 130 230 330 130 30 230 30 330 30
20404  36 136 236 336 136 36 236 36   -  -
20405  42 142 242 342 142 42 242 42   -  -
20406  48 148 248 348 148 48 248 48   -  -
20407  54 154 254 354 154 54 254 54   -  -
20408  60 160 260 360 160 60 260 60 360 60
20409  66 166 266 366 166 66 266 66   -  -
20410  72 172 272 372 172 72 272 72   -  -
20411  78 178 278 378 178 78 278 78   -  -
20412  84 184 284 384 184 84 284 84   -  -
20413  90 190 290 390 190 90 290 90 390 90
20414}
20415do_execsql_test joinD-702 {
20416  SELECT t1.*, t2.*, t3.*, t4.*
20417  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20418  LEFT JOIN t3 ON t1.c=t3.c
20419  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20420  WHERE t3.y>0 OR t3.y IS NULL
20421  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20422} {
20423   2 102 202 302 102  2   -  -   -  -
20424   4 104 204 304 104  4   -  -   -  -
20425   6 106 206 306 106  6 206  6   -  -
20426   8 108 208 308 108  8   -  -   -  -
20427  10 110 210 310 110 10   -  - 310 10
20428  12 112 212 312 112 12 212 12   -  -
20429  14 114 214 314 114 14   -  -   -  -
20430  16 116 216 316 116 16   -  -   -  -
20431  18 118 218 318 118 18 218 18   -  -
20432  20 120 220 320 120 20   -  - 320 20
20433  22 122 222 322 122 22   -  -   -  -
20434  24 124 224 324 124 24 224 24   -  -
20435  26 126 226 326 126 26   -  -   -  -
20436  28 128 228 328 128 28   -  -   -  -
20437  30 130 230 330 130 30 230 30 330 30
20438  32 132 232 332 132 32   -  -   -  -
20439  34 134 234 334 134 34   -  -   -  -
20440  36 136 236 336 136 36 236 36   -  -
20441  38 138 238 338 138 38   -  -   -  -
20442  40 140 240 340 140 40   -  - 340 40
20443  42 142 242 342 142 42 242 42   -  -
20444  44 144 244 344 144 44   -  -   -  -
20445  46 146 246 346 146 46   -  -   -  -
20446  48 148 248 348 148 48 248 48   -  -
20447  50 150 250 350 150 50   -  - 350 50
20448  52 152 252 352 152 52   -  -   -  -
20449  54 154 254 354 154 54 254 54   -  -
20450  56 156 256 356 156 56   -  -   -  -
20451  58 158 258 358 158 58   -  -   -  -
20452  60 160 260 360 160 60 260 60 360 60
20453  62 162 262 362 162 62   -  -   -  -
20454  64 164 264 364 164 64   -  -   -  -
20455  66 166 266 366 166 66 266 66   -  -
20456  68 168 268 368 168 68   -  -   -  -
20457  70 170 270 370 170 70   -  - 370 70
20458  72 172 272 372 172 72 272 72   -  -
20459  74 174 274 374 174 74   -  -   -  -
20460  76 176 276 376 176 76   -  -   -  -
20461  78 178 278 378 178 78 278 78   -  -
20462  80 180 280 380 180 80   -  - 380 80
20463  82 182 282 382 182 82   -  -   -  -
20464  84 184 284 384 184 84 284 84   -  -
20465  86 186 286 386 186 86   -  -   -  -
20466  88 188 288 388 188 88   -  -   -  -
20467  90 190 290 390 190 90 290 90 390 90
20468  92 192 292 392 192 92   -  -   -  -
20469  94 194 294 394 194 94   -  -   -  -
20470   -   -   -   - 100  0   -  -   -  -
20471}
20472do_execsql_test joinD-703 {
20473  SELECT t1.*, t2.*, t3.*, t4.*
20474  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20475  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20476  LEFT JOIN t4 ON t1.d=t4.d
20477  WHERE t4.z>0
20478  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20479} {
20480  10 110 210 310 110 10   -  - 310 10
20481  20 120 220 320 120 20   -  - 320 20
20482  30 130 230 330 130 30 230 30 330 30
20483  40 140 240 340 140 40   -  - 340 40
20484  50 150 250 350 150 50   -  - 350 50
20485  60 160 260 360 160 60 260 60 360 60
20486  70 170 270 370 170 70   -  - 370 70
20487  80 180 280 380 180 80   -  - 380 80
20488  90 190 290 390 190 90 290 90 390 90
20489}
20490do_execsql_test joinD-704 {
20491  SELECT t1.*, t2.*, t3.*, t4.*
20492  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20493  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20494  LEFT JOIN t4 ON t1.d=t4.d
20495  WHERE t4.z IS NULL OR t4.z>0
20496  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20497} {
20498   2 102 202 302 102  2   -  -   -  -
20499   4 104 204 304 104  4   -  -   -  -
20500   6 106 206 306 106  6 206  6   -  -
20501   8 108 208 308 108  8   -  -   -  -
20502  10 110 210 310 110 10   -  - 310 10
20503  12 112 212 312 112 12 212 12   -  -
20504  14 114 214 314 114 14   -  -   -  -
20505  16 116 216 316 116 16   -  -   -  -
20506  18 118 218 318 118 18 218 18   -  -
20507  20 120 220 320 120 20   -  - 320 20
20508  22 122 222 322 122 22   -  -   -  -
20509  24 124 224 324 124 24 224 24   -  -
20510  26 126 226 326 126 26   -  -   -  -
20511  28 128 228 328 128 28   -  -   -  -
20512  30 130 230 330 130 30 230 30 330 30
20513  32 132 232 332 132 32   -  -   -  -
20514  34 134 234 334 134 34   -  -   -  -
20515  36 136 236 336 136 36 236 36   -  -
20516  38 138 238 338 138 38   -  -   -  -
20517  40 140 240 340 140 40   -  - 340 40
20518  42 142 242 342 142 42 242 42   -  -
20519  44 144 244 344 144 44   -  -   -  -
20520  46 146 246 346 146 46   -  -   -  -
20521  48 148 248 348 148 48 248 48   -  -
20522  50 150 250 350 150 50   -  - 350 50
20523  52 152 252 352 152 52   -  -   -  -
20524  54 154 254 354 154 54 254 54   -  -
20525  56 156 256 356 156 56   -  -   -  -
20526  58 158 258 358 158 58   -  -   -  -
20527  60 160 260 360 160 60 260 60 360 60
20528  62 162 262 362 162 62   -  -   -  -
20529  64 164 264 364 164 64   -  -   -  -
20530  66 166 266 366 166 66 266 66   -  -
20531  68 168 268 368 168 68   -  -   -  -
20532  70 170 270 370 170 70   -  - 370 70
20533  72 172 272 372 172 72 272 72   -  -
20534  74 174 274 374 174 74   -  -   -  -
20535  76 176 276 376 176 76   -  -   -  -
20536  78 178 278 378 178 78 278 78   -  -
20537  80 180 280 380 180 80   -  - 380 80
20538  82 182 282 382 182 82   -  -   -  -
20539  84 184 284 384 184 84 284 84   -  -
20540  86 186 286 386 186 86   -  -   -  -
20541  88 188 288 388 188 88   -  -   -  -
20542  90 190 290 390 190 90 290 90 390 90
20543  92 192 292 392 192 92   -  -   -  -
20544  94 194 294 394 194 94   -  -   -  -
20545   -   -   -   - 100  0   -  -   -  -
20546}
20547do_execsql_test joinD-705 {
20548  SELECT t1.*, t2.*, t3.*, t4.*
20549  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20550  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20551  LEFT JOIN t4 ON t1.d=t4.d
20552  WHERE t2.x>0 AND t4.z>0
20553  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20554} {
20555  10 110 210 310 110 10   -  - 310 10
20556  20 120 220 320 120 20   -  - 320 20
20557  30 130 230 330 130 30 230 30 330 30
20558  40 140 240 340 140 40   -  - 340 40
20559  50 150 250 350 150 50   -  - 350 50
20560  60 160 260 360 160 60 260 60 360 60
20561  70 170 270 370 170 70   -  - 370 70
20562  80 180 280 380 180 80   -  - 380 80
20563  90 190 290 390 190 90 290 90 390 90
20564}
20565do_execsql_test joinD-706 {
20566  SELECT t1.*, t2.*, t3.*, t4.*
20567  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20568  LEFT JOIN t3 ON t1.c=t3.c
20569  LEFT JOIN t4 ON t1.d=t4.d
20570  WHERE t4.z>0 AND t3.y>0
20571  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20572} {
20573  30 130 230 330 130 30 230 30 330 30
20574  60 160 260 360 160 60 260 60 360 60
20575  90 190 290 390 190 90 290 90 390 90
20576}
20577do_execsql_test joinD-707 {
20578  SELECT t1.*, t2.*, t3.*, t4.*
20579  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20580  LEFT JOIN t3 ON t1.c=t3.c
20581  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20582  WHERE t2.x>0 AND t3.y>0
20583  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20584} {
20585   6 106 206 306 106  6 206  6   -  -
20586  12 112 212 312 112 12 212 12   -  -
20587  18 118 218 318 118 18 218 18   -  -
20588  24 124 224 324 124 24 224 24   -  -
20589  30 130 230 330 130 30 230 30 330 30
20590  36 136 236 336 136 36 236 36   -  -
20591  42 142 242 342 142 42 242 42   -  -
20592  48 148 248 348 148 48 248 48   -  -
20593  54 154 254 354 154 54 254 54   -  -
20594  60 160 260 360 160 60 260 60 360 60
20595  66 166 266 366 166 66 266 66   -  -
20596  72 172 272 372 172 72 272 72   -  -
20597  78 178 278 378 178 78 278 78   -  -
20598  84 184 284 384 184 84 284 84   -  -
20599  90 190 290 390 190 90 290 90 390 90
20600}
20601do_execsql_test joinD-708 {
20602  SELECT t1.*, t2.*, t3.*, t4.*
20603  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20604  LEFT JOIN t3 ON t1.c=t3.c
20605  LEFT JOIN t4 ON t1.d=t4.d
20606  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
20607  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20608} {
20609  30 130 230 330 130 30 230 30 330 30
20610  60 160 260 360 160 60 260 60 360 60
20611  90 190 290 390 190 90 290 90 390 90
20612}
20613do_execsql_test joinD-709 {
20614  SELECT t1.*, t2.*, t3.*, t4.*
20615  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20616  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20617  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20618  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20619} {
20620   2 102 202 302 102  2   -  -   -  -
20621   4 104 204 304 104  4   -  -   -  -
20622   6 106 206 306 106  6 206  6   -  -
20623   8 108 208 308 108  8   -  -   -  -
20624  10 110 210 310 110 10   -  - 310 10
20625  12 112 212 312 112 12 212 12   -  -
20626  14 114 214 314 114 14   -  -   -  -
20627  16 116 216 316 116 16   -  -   -  -
20628  18 118 218 318 118 18 218 18   -  -
20629  20 120 220 320 120 20   -  - 320 20
20630  22 122 222 322 122 22   -  -   -  -
20631  24 124 224 324 124 24 224 24   -  -
20632  26 126 226 326 126 26   -  -   -  -
20633  28 128 228 328 128 28   -  -   -  -
20634  30 130 230 330 130 30 230 30 330 30
20635  32 132 232 332 132 32   -  -   -  -
20636  34 134 234 334 134 34   -  -   -  -
20637  36 136 236 336 136 36 236 36   -  -
20638  38 138 238 338 138 38   -  -   -  -
20639  40 140 240 340 140 40   -  - 340 40
20640  42 142 242 342 142 42 242 42   -  -
20641  44 144 244 344 144 44   -  -   -  -
20642  46 146 246 346 146 46   -  -   -  -
20643  48 148 248 348 148 48 248 48   -  -
20644  50 150 250 350 150 50   -  - 350 50
20645  52 152 252 352 152 52   -  -   -  -
20646  54 154 254 354 154 54 254 54   -  -
20647  56 156 256 356 156 56   -  -   -  -
20648  58 158 258 358 158 58   -  -   -  -
20649  60 160 260 360 160 60 260 60 360 60
20650  62 162 262 362 162 62   -  -   -  -
20651  64 164 264 364 164 64   -  -   -  -
20652  66 166 266 366 166 66 266 66   -  -
20653  68 168 268 368 168 68   -  -   -  -
20654  70 170 270 370 170 70   -  - 370 70
20655  72 172 272 372 172 72 272 72   -  -
20656  74 174 274 374 174 74   -  -   -  -
20657  76 176 276 376 176 76   -  -   -  -
20658  78 178 278 378 178 78 278 78   -  -
20659  80 180 280 380 180 80   -  - 380 80
20660  82 182 282 382 182 82   -  -   -  -
20661  84 184 284 384 184 84 284 84   -  -
20662  86 186 286 386 186 86   -  -   -  -
20663  88 188 288 388 188 88   -  -   -  -
20664  90 190 290 390 190 90 290 90 390 90
20665  92 192 292 392 192 92   -  -   -  -
20666  94 194 294 394 194 94   -  -   -  -
20667   -   -   -   - 100  0   -  -   -  -
20668}
20669do_execsql_test joinD-710 {
20670  SELECT t1.*, t2.*, t3.*, t4.*
20671  FROM t1 RIGHT JOIN t2 ON t2.x>0
20672  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20673  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20674  WHERE t1.b IS NOT DISTINCT FROM t2.b
20675  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20676} {
20677   2 102 202 302 102  2   -  -   -  -
20678   4 104 204 304 104  4   -  -   -  -
20679   6 106 206 306 106  6 206  6   -  -
20680   8 108 208 308 108  8   -  -   -  -
20681  10 110 210 310 110 10   -  - 310 10
20682  12 112 212 312 112 12 212 12   -  -
20683  14 114 214 314 114 14   -  -   -  -
20684  16 116 216 316 116 16   -  -   -  -
20685  18 118 218 318 118 18 218 18   -  -
20686  20 120 220 320 120 20   -  - 320 20
20687  22 122 222 322 122 22   -  -   -  -
20688  24 124 224 324 124 24 224 24   -  -
20689  26 126 226 326 126 26   -  -   -  -
20690  28 128 228 328 128 28   -  -   -  -
20691  30 130 230 330 130 30 230 30 330 30
20692  32 132 232 332 132 32   -  -   -  -
20693  34 134 234 334 134 34   -  -   -  -
20694  36 136 236 336 136 36 236 36   -  -
20695  38 138 238 338 138 38   -  -   -  -
20696  40 140 240 340 140 40   -  - 340 40
20697  42 142 242 342 142 42 242 42   -  -
20698  44 144 244 344 144 44   -  -   -  -
20699  46 146 246 346 146 46   -  -   -  -
20700  48 148 248 348 148 48 248 48   -  -
20701  50 150 250 350 150 50   -  - 350 50
20702  52 152 252 352 152 52   -  -   -  -
20703  54 154 254 354 154 54 254 54   -  -
20704  56 156 256 356 156 56   -  -   -  -
20705  58 158 258 358 158 58   -  -   -  -
20706  60 160 260 360 160 60 260 60 360 60
20707  62 162 262 362 162 62   -  -   -  -
20708  64 164 264 364 164 64   -  -   -  -
20709  66 166 266 366 166 66 266 66   -  -
20710  68 168 268 368 168 68   -  -   -  -
20711  70 170 270 370 170 70   -  - 370 70
20712  72 172 272 372 172 72 272 72   -  -
20713  74 174 274 374 174 74   -  -   -  -
20714  76 176 276 376 176 76   -  -   -  -
20715  78 178 278 378 178 78 278 78   -  -
20716  80 180 280 380 180 80   -  - 380 80
20717  82 182 282 382 182 82   -  -   -  -
20718  84 184 284 384 184 84 284 84   -  -
20719  86 186 286 386 186 86   -  -   -  -
20720  88 188 288 388 188 88   -  -   -  -
20721  90 190 290 390 190 90 290 90 390 90
20722  92 192 292 392 192 92   -  -   -  -
20723  94 194 294 394 194 94   -  -   -  -
20724}
20725do_execsql_test joinD-711 {
20726  SELECT t1.*, t2.*, t3.*, t4.*
20727  FROM t1 RIGHT JOIN t2 ON t2.x>0
20728  LEFT JOIN t3 ON t3.y>0
20729  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20730  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
20731  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20732} {
20733   6 106 206 306 106  6 206  6   -  -
20734  12 112 212 312 112 12 212 12   -  -
20735  18 118 218 318 118 18 218 18   -  -
20736  24 124 224 324 124 24 224 24   -  -
20737  30 130 230 330 130 30 230 30 330 30
20738  36 136 236 336 136 36 236 36   -  -
20739  42 142 242 342 142 42 242 42   -  -
20740  48 148 248 348 148 48 248 48   -  -
20741  54 154 254 354 154 54 254 54   -  -
20742  60 160 260 360 160 60 260 60 360 60
20743  66 166 266 366 166 66 266 66   -  -
20744  72 172 272 372 172 72 272 72   -  -
20745  78 178 278 378 178 78 278 78   -  -
20746  84 184 284 384 184 84 284 84   -  -
20747  90 190 290 390 190 90 290 90 390 90
20748}
20749do_execsql_test joinD-712 {
20750  SELECT t1.*, t2.*, t3.*, t4.*
20751  FROM t1 RIGHT JOIN t2 ON t2.x>0
20752  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20753  LEFT JOIN t4 ON t4.z>0
20754  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
20755  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20756} {
20757  10 110 210 310 110 10   -  - 310 10
20758  20 120 220 320 120 20   -  - 320 20
20759  30 130 230 330 130 30 230 30 330 30
20760  40 140 240 340 140 40   -  - 340 40
20761  50 150 250 350 150 50   -  - 350 50
20762  60 160 260 360 160 60 260 60 360 60
20763  70 170 270 370 170 70   -  - 370 70
20764  80 180 280 380 180 80   -  - 380 80
20765  90 190 290 390 190 90 290 90 390 90
20766}
20767do_execsql_test joinD-713 {
20768  SELECT t1.*, t2.*, t3.*, t4.*
20769  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
20770  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20771  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20772  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20773} {
20774   2 102 202 302 102  2   -  -   -  -
20775   4 104 204 304 104  4   -  -   -  -
20776   6 106 206 306 106  6 206  6   -  -
20777   8 108 208 308 108  8   -  -   -  -
20778  10 110 210 310 110 10   -  - 310 10
20779  12 112 212 312 112 12 212 12   -  -
20780  14 114 214 314 114 14   -  -   -  -
20781  16 116 216 316 116 16   -  -   -  -
20782  18 118 218 318 118 18 218 18   -  -
20783  20 120 220 320 120 20   -  - 320 20
20784  22 122 222 322 122 22   -  -   -  -
20785  24 124 224 324 124 24 224 24   -  -
20786  26 126 226 326 126 26   -  -   -  -
20787  28 128 228 328 128 28   -  -   -  -
20788  30 130 230 330 130 30 230 30 330 30
20789  32 132 232 332 132 32   -  -   -  -
20790  34 134 234 334 134 34   -  -   -  -
20791  36 136 236 336 136 36 236 36   -  -
20792  38 138 238 338 138 38   -  -   -  -
20793  40 140 240 340 140 40   -  - 340 40
20794  42 142 242 342 142 42 242 42   -  -
20795  44 144 244 344 144 44   -  -   -  -
20796  46 146 246 346 146 46   -  -   -  -
20797  48 148 248 348 148 48 248 48   -  -
20798  50 150 250 350 150 50   -  - 350 50
20799  52 152 252 352 152 52   -  -   -  -
20800  54 154 254 354 154 54 254 54   -  -
20801  56 156 256 356 156 56   -  -   -  -
20802  58 158 258 358 158 58   -  -   -  -
20803  60 160 260 360 160 60 260 60 360 60
20804  62 162 262 362 162 62   -  -   -  -
20805  64 164 264 364 164 64   -  -   -  -
20806  66 166 266 366 166 66 266 66   -  -
20807  68 168 268 368 168 68   -  -   -  -
20808  70 170 270 370 170 70   -  - 370 70
20809  72 172 272 372 172 72 272 72   -  -
20810  74 174 274 374 174 74   -  -   -  -
20811  76 176 276 376 176 76   -  -   -  -
20812  78 178 278 378 178 78 278 78   -  -
20813  80 180 280 380 180 80   -  - 380 80
20814  82 182 282 382 182 82   -  -   -  -
20815  84 184 284 384 184 84 284 84   -  -
20816  86 186 286 386 186 86   -  -   -  -
20817  88 188 288 388 188 88   -  -   -  -
20818  90 190 290 390 190 90 290 90 390 90
20819  92 192 292 392 192 92   -  -   -  -
20820  94 194 294 394 194 94   -  -   -  -
20821   -   -   -   - 100  0   -  -   -  -
20822}
20823do_execsql_test joinD-714 {
20824  SELECT t1.*, t2.*, t3.*, t4.*
20825  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20826  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
20827  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20828  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20829} {
20830   2 102 202 302 102  2   -  -   -  -
20831   4 104 204 304 104  4   -  -   -  -
20832   6 106 206 306 106  6 206  6   -  -
20833   8 108 208 308 108  8   -  -   -  -
20834  10 110 210 310 110 10   -  - 310 10
20835  12 112 212 312 112 12 212 12   -  -
20836  14 114 214 314 114 14   -  -   -  -
20837  16 116 216 316 116 16   -  -   -  -
20838  18 118 218 318 118 18 218 18   -  -
20839  20 120 220 320 120 20   -  - 320 20
20840  22 122 222 322 122 22   -  -   -  -
20841  24 124 224 324 124 24 224 24   -  -
20842  26 126 226 326 126 26   -  -   -  -
20843  28 128 228 328 128 28   -  -   -  -
20844  30 130 230 330 130 30 230 30 330 30
20845  32 132 232 332 132 32   -  -   -  -
20846  34 134 234 334 134 34   -  -   -  -
20847  36 136 236 336 136 36 236 36   -  -
20848  38 138 238 338 138 38   -  -   -  -
20849  40 140 240 340 140 40   -  - 340 40
20850  42 142 242 342 142 42 242 42   -  -
20851  44 144 244 344 144 44   -  -   -  -
20852  46 146 246 346 146 46   -  -   -  -
20853  48 148 248 348 148 48 248 48   -  -
20854  50 150 250 350 150 50   -  - 350 50
20855  52 152 252 352 152 52   -  -   -  -
20856  54 154 254 354 154 54 254 54   -  -
20857  56 156 256 356 156 56   -  -   -  -
20858  58 158 258 358 158 58   -  -   -  -
20859  60 160 260 360 160 60 260 60 360 60
20860  62 162 262 362 162 62   -  -   -  -
20861  64 164 264 364 164 64   -  -   -  -
20862  66 166 266 366 166 66 266 66   -  -
20863  68 168 268 368 168 68   -  -   -  -
20864  70 170 270 370 170 70   -  - 370 70
20865  72 172 272 372 172 72 272 72   -  -
20866  74 174 274 374 174 74   -  -   -  -
20867  76 176 276 376 176 76   -  -   -  -
20868  78 178 278 378 178 78 278 78   -  -
20869  80 180 280 380 180 80   -  - 380 80
20870  82 182 282 382 182 82   -  -   -  -
20871  84 184 284 384 184 84 284 84   -  -
20872  86 186 286 386 186 86   -  -   -  -
20873  88 188 288 388 188 88   -  -   -  -
20874  90 190 290 390 190 90 290 90 390 90
20875  92 192 292 392 192 92   -  -   -  -
20876  94 194 294 394 194 94   -  -   -  -
20877   -   -   -   - 100  0   -  -   -  -
20878}
20879do_execsql_test joinD-715 {
20880  SELECT t1.*, t2.*, t3.*, t4.*
20881  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20882  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20883  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20884  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20885} {
20886  10 110 210 310 110 10   -  - 310 10
20887  20 120 220 320 120 20   -  - 320 20
20888  30 130 230 330 130 30 230 30 330 30
20889  40 140 240 340 140 40   -  - 340 40
20890  50 150 250 350 150 50   -  - 350 50
20891  60 160 260 360 160 60 260 60 360 60
20892  70 170 270 370 170 70   -  - 370 70
20893  80 180 280 380 180 80   -  - 380 80
20894  90 190 290 390 190 90 290 90 390 90
20895   -   -   -   -   -  -   -  - 300  0
20896   -   -   -   -   -  -   -  - 305  5
20897   -   -   -   -   -  -   -  - 315 15
20898   -   -   -   -   -  -   -  - 325 25
20899   -   -   -   -   -  -   -  - 335 35
20900   -   -   -   -   -  -   -  - 345 45
20901   -   -   -   -   -  -   -  - 355 55
20902   -   -   -   -   -  -   -  - 365 65
20903   -   -   -   -   -  -   -  - 375 75
20904   -   -   -   -   -  -   -  - 385 85
20905   -   -   -   -   -  -   -  - 395 95
20906}
20907do_execsql_test joinD-716 {
20908  SELECT t1.*, t2.*, t3.*, t4.*
20909  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20910  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20911  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20912  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20913} {
20914  10 110 210 310 110 10   -  - 310 10
20915  20 120 220 320 120 20   -  - 320 20
20916  30 130 230 330 130 30 230 30 330 30
20917  40 140 240 340 140 40   -  - 340 40
20918  50 150 250 350 150 50   -  - 350 50
20919  60 160 260 360 160 60 260 60 360 60
20920  70 170 270 370 170 70   -  - 370 70
20921  80 180 280 380 180 80   -  - 380 80
20922  90 190 290 390 190 90 290 90 390 90
20923   -   -   -   -   -  -   -  - 300  0
20924   -   -   -   -   -  -   -  - 305  5
20925   -   -   -   -   -  -   -  - 315 15
20926   -   -   -   -   -  -   -  - 325 25
20927   -   -   -   -   -  -   -  - 335 35
20928   -   -   -   -   -  -   -  - 345 45
20929   -   -   -   -   -  -   -  - 355 55
20930   -   -   -   -   -  -   -  - 365 65
20931   -   -   -   -   -  -   -  - 375 75
20932   -   -   -   -   -  -   -  - 385 85
20933   -   -   -   -   -  -   -  - 395 95
20934}
20935do_execsql_test joinD-717 {
20936  SELECT t1.*, t2.*, t3.*, t4.*
20937  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20938  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20939  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20940  WHERE t2.x>0
20941  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20942} {
20943  10 110 210 310 110 10   -  - 310 10
20944  20 120 220 320 120 20   -  - 320 20
20945  30 130 230 330 130 30 230 30 330 30
20946  40 140 240 340 140 40   -  - 340 40
20947  50 150 250 350 150 50   -  - 350 50
20948  60 160 260 360 160 60 260 60 360 60
20949  70 170 270 370 170 70   -  - 370 70
20950  80 180 280 380 180 80   -  - 380 80
20951  90 190 290 390 190 90 290 90 390 90
20952}
20953do_execsql_test joinD-718 {
20954  SELECT t1.*, t2.*, t3.*, t4.*
20955  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20956  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20957  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20958  WHERE (t2.x>0 OR t2.x IS NULL)
20959  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20960} {
20961  10 110 210 310 110 10   -  - 310 10
20962  20 120 220 320 120 20   -  - 320 20
20963  30 130 230 330 130 30 230 30 330 30
20964  40 140 240 340 140 40   -  - 340 40
20965  50 150 250 350 150 50   -  - 350 50
20966  60 160 260 360 160 60 260 60 360 60
20967  70 170 270 370 170 70   -  - 370 70
20968  80 180 280 380 180 80   -  - 380 80
20969  90 190 290 390 190 90 290 90 390 90
20970   -   -   -   -   -  -   -  - 300  0
20971   -   -   -   -   -  -   -  - 305  5
20972   -   -   -   -   -  -   -  - 315 15
20973   -   -   -   -   -  -   -  - 325 25
20974   -   -   -   -   -  -   -  - 335 35
20975   -   -   -   -   -  -   -  - 345 45
20976   -   -   -   -   -  -   -  - 355 55
20977   -   -   -   -   -  -   -  - 365 65
20978   -   -   -   -   -  -   -  - 375 75
20979   -   -   -   -   -  -   -  - 385 85
20980   -   -   -   -   -  -   -  - 395 95
20981}
20982do_execsql_test joinD-719 {
20983  SELECT t1.*, t2.*, t3.*, t4.*
20984  FROM t1 RIGHT JOIN t2 ON true
20985  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20986  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20987  WHERE t1.b=t2.b AND t2.x>0
20988  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20989} {
20990  10 110 210 310 110 10   -  - 310 10
20991  20 120 220 320 120 20   -  - 320 20
20992  30 130 230 330 130 30 230 30 330 30
20993  40 140 240 340 140 40   -  - 340 40
20994  50 150 250 350 150 50   -  - 350 50
20995  60 160 260 360 160 60 260 60 360 60
20996  70 170 270 370 170 70   -  - 370 70
20997  80 180 280 380 180 80   -  - 380 80
20998  90 190 290 390 190 90 290 90 390 90
20999}
21000do_execsql_test joinD-720 {
21001  SELECT t1.*, t2.*, t3.*, t4.*
21002  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21003  LEFT JOIN t3 ON t1.c=t3.c
21004  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21005  WHERE t3.y>0
21006  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21007} {
21008  30 130 230 330 130 30 230 30 330 30
21009  60 160 260 360 160 60 260 60 360 60
21010  90 190 290 390 190 90 290 90 390 90
21011}
21012do_execsql_test joinD-721 {
21013  SELECT t1.*, t2.*, t3.*, t4.*
21014  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21015  LEFT JOIN t3 ON t1.c=t3.c
21016  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21017  WHERE t3.y>0 OR t3.y IS NULL
21018  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21019} {
21020  10 110 210 310 110 10   -  - 310 10
21021  20 120 220 320 120 20   -  - 320 20
21022  30 130 230 330 130 30 230 30 330 30
21023  40 140 240 340 140 40   -  - 340 40
21024  50 150 250 350 150 50   -  - 350 50
21025  60 160 260 360 160 60 260 60 360 60
21026  70 170 270 370 170 70   -  - 370 70
21027  80 180 280 380 180 80   -  - 380 80
21028  90 190 290 390 190 90 290 90 390 90
21029   -   -   -   -   -  -   -  - 300  0
21030   -   -   -   -   -  -   -  - 305  5
21031   -   -   -   -   -  -   -  - 315 15
21032   -   -   -   -   -  -   -  - 325 25
21033   -   -   -   -   -  -   -  - 335 35
21034   -   -   -   -   -  -   -  - 345 45
21035   -   -   -   -   -  -   -  - 355 55
21036   -   -   -   -   -  -   -  - 365 65
21037   -   -   -   -   -  -   -  - 375 75
21038   -   -   -   -   -  -   -  - 385 85
21039   -   -   -   -   -  -   -  - 395 95
21040}
21041do_execsql_test joinD-722 {
21042  SELECT t1.*, t2.*, t3.*, t4.*
21043  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21044  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21045  RIGHT JOIN t4 ON t1.d=t4.d
21046  WHERE t4.z>0
21047  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21048} {
21049  10 110 210 310 110 10   -  - 310 10
21050  20 120 220 320 120 20   -  - 320 20
21051  30 130 230 330 130 30 230 30 330 30
21052  40 140 240 340 140 40   -  - 340 40
21053  50 150 250 350 150 50   -  - 350 50
21054  60 160 260 360 160 60 260 60 360 60
21055  70 170 270 370 170 70   -  - 370 70
21056  80 180 280 380 180 80   -  - 380 80
21057  90 190 290 390 190 90 290 90 390 90
21058   -   -   -   -   -  -   -  - 305  5
21059   -   -   -   -   -  -   -  - 315 15
21060   -   -   -   -   -  -   -  - 325 25
21061   -   -   -   -   -  -   -  - 335 35
21062   -   -   -   -   -  -   -  - 345 45
21063   -   -   -   -   -  -   -  - 355 55
21064   -   -   -   -   -  -   -  - 365 65
21065   -   -   -   -   -  -   -  - 375 75
21066   -   -   -   -   -  -   -  - 385 85
21067   -   -   -   -   -  -   -  - 395 95
21068}
21069do_execsql_test joinD-723 {
21070  SELECT t1.*, t2.*, t3.*, t4.*
21071  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21072  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21073  RIGHT JOIN t4 ON t1.d=t4.d
21074  WHERE t4.z IS NULL OR t4.z>0
21075  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21076} {
21077  10 110 210 310 110 10   -  - 310 10
21078  20 120 220 320 120 20   -  - 320 20
21079  30 130 230 330 130 30 230 30 330 30
21080  40 140 240 340 140 40   -  - 340 40
21081  50 150 250 350 150 50   -  - 350 50
21082  60 160 260 360 160 60 260 60 360 60
21083  70 170 270 370 170 70   -  - 370 70
21084  80 180 280 380 180 80   -  - 380 80
21085  90 190 290 390 190 90 290 90 390 90
21086   -   -   -   -   -  -   -  - 305  5
21087   -   -   -   -   -  -   -  - 315 15
21088   -   -   -   -   -  -   -  - 325 25
21089   -   -   -   -   -  -   -  - 335 35
21090   -   -   -   -   -  -   -  - 345 45
21091   -   -   -   -   -  -   -  - 355 55
21092   -   -   -   -   -  -   -  - 365 65
21093   -   -   -   -   -  -   -  - 375 75
21094   -   -   -   -   -  -   -  - 385 85
21095   -   -   -   -   -  -   -  - 395 95
21096}
21097do_execsql_test joinD-724 {
21098  SELECT t1.*, t2.*, t3.*, t4.*
21099  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21100  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21101  RIGHT JOIN t4 ON t1.d=t4.d
21102  WHERE t2.x>0 AND t4.z>0
21103  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21104} {
21105  10 110 210 310 110 10   -  - 310 10
21106  20 120 220 320 120 20   -  - 320 20
21107  30 130 230 330 130 30 230 30 330 30
21108  40 140 240 340 140 40   -  - 340 40
21109  50 150 250 350 150 50   -  - 350 50
21110  60 160 260 360 160 60 260 60 360 60
21111  70 170 270 370 170 70   -  - 370 70
21112  80 180 280 380 180 80   -  - 380 80
21113  90 190 290 390 190 90 290 90 390 90
21114}
21115do_execsql_test joinD-725 {
21116  SELECT t1.*, t2.*, t3.*, t4.*
21117  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21118  LEFT JOIN t3 ON t1.c=t3.c
21119  RIGHT JOIN t4 ON t1.d=t4.d
21120  WHERE t4.z>0 AND t3.y>0
21121  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21122} {
21123  30 130 230 330 130 30 230 30 330 30
21124  60 160 260 360 160 60 260 60 360 60
21125  90 190 290 390 190 90 290 90 390 90
21126}
21127do_execsql_test joinD-726 {
21128  SELECT t1.*, t2.*, t3.*, t4.*
21129  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21130  LEFT JOIN t3 ON t1.c=t3.c
21131  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21132  WHERE t2.x>0 AND t3.y>0
21133  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21134} {
21135  30 130 230 330 130 30 230 30 330 30
21136  60 160 260 360 160 60 260 60 360 60
21137  90 190 290 390 190 90 290 90 390 90
21138}
21139do_execsql_test joinD-727 {
21140  SELECT t1.*, t2.*, t3.*, t4.*
21141  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21142  LEFT JOIN t3 ON t1.c=t3.c
21143  RIGHT JOIN t4 ON t1.d=t4.d
21144  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
21145  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21146} {
21147  30 130 230 330 130 30 230 30 330 30
21148  60 160 260 360 160 60 260 60 360 60
21149  90 190 290 390 190 90 290 90 390 90
21150}
21151do_execsql_test joinD-728 {
21152  SELECT t1.*, t2.*, t3.*, t4.*
21153  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
21154  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21155  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
21156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21157} {
21158  10 110 210 310 110 10   -  - 310 10
21159  20 120 220 320 120 20   -  - 320 20
21160  30 130 230 330 130 30 230 30 330 30
21161  40 140 240 340 140 40   -  - 340 40
21162  50 150 250 350 150 50   -  - 350 50
21163  60 160 260 360 160 60 260 60 360 60
21164  70 170 270 370 170 70   -  - 370 70
21165  80 180 280 380 180 80   -  - 380 80
21166  90 190 290 390 190 90 290 90 390 90
21167   -   -   -   -   -  -   -  - 300  0
21168   -   -   -   -   -  -   -  - 305  5
21169   -   -   -   -   -  -   -  - 315 15
21170   -   -   -   -   -  -   -  - 325 25
21171   -   -   -   -   -  -   -  - 335 35
21172   -   -   -   -   -  -   -  - 345 45
21173   -   -   -   -   -  -   -  - 355 55
21174   -   -   -   -   -  -   -  - 365 65
21175   -   -   -   -   -  -   -  - 375 75
21176   -   -   -   -   -  -   -  - 385 85
21177   -   -   -   -   -  -   -  - 395 95
21178}
21179do_execsql_test joinD-729 {
21180  SELECT t1.*, t2.*, t3.*, t4.*
21181  FROM t1 RIGHT JOIN t2 ON t2.x>0
21182  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21183  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
21184  WHERE t1.b IS NOT DISTINCT FROM t2.b
21185  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21186} {
21187  10 110 210 310 110 10   -  - 310 10
21188  20 120 220 320 120 20   -  - 320 20
21189  30 130 230 330 130 30 230 30 330 30
21190  40 140 240 340 140 40   -  - 340 40
21191  50 150 250 350 150 50   -  - 350 50
21192  60 160 260 360 160 60 260 60 360 60
21193  70 170 270 370 170 70   -  - 370 70
21194  80 180 280 380 180 80   -  - 380 80
21195  90 190 290 390 190 90 290 90 390 90
21196   -   -   -   -   -  -   -  - 300  0
21197}
21198do_execsql_test joinD-730 {
21199  SELECT t1.*, t2.*, t3.*, t4.*
21200  FROM t1 RIGHT JOIN t2 ON t2.x>0
21201  LEFT JOIN t3 ON t3.y>0
21202  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
21203  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
21204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21205} {
21206  30 130 230 330 130 30 230 30 330 30
21207  60 160 260 360 160 60 260 60 360 60
21208  90 190 290 390 190 90 290 90 390 90
21209   -   -   -   -   -  -   -  - 300  0
21210}
21211do_execsql_test joinD-731 {
21212  SELECT t1.*, t2.*, t3.*, t4.*
21213  FROM t1 RIGHT JOIN t2 ON t2.x>0
21214  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21215  RIGHT JOIN t4 ON t4.z>0
21216  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
21217  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21218} {
21219  10 110 210 310 110 10   -  - 310 10
21220  20 120 220 320 120 20   -  - 320 20
21221  30 130 230 330 130 30 230 30 330 30
21222  40 140 240 340 140 40   -  - 340 40
21223  50 150 250 350 150 50   -  - 350 50
21224  60 160 260 360 160 60 260 60 360 60
21225  70 170 270 370 170 70   -  - 370 70
21226  80 180 280 380 180 80   -  - 380 80
21227  90 190 290 390 190 90 290 90 390 90
21228}
21229do_execsql_test joinD-732 {
21230  SELECT t1.*, t2.*, t3.*, t4.*
21231  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
21232  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21233  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21234  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21235} {
21236  10 110 210 310 110 10   -  - 310 10
21237  20 120 220 320 120 20   -  - 320 20
21238  30 130 230 330 130 30 230 30 330 30
21239  40 140 240 340 140 40   -  - 340 40
21240  50 150 250 350 150 50   -  - 350 50
21241  60 160 260 360 160 60 260 60 360 60
21242  70 170 270 370 170 70   -  - 370 70
21243  80 180 280 380 180 80   -  - 380 80
21244  90 190 290 390 190 90 290 90 390 90
21245   -   -   -   -   -  -   -  - 300  0
21246   -   -   -   -   -  -   -  - 305  5
21247   -   -   -   -   -  -   -  - 315 15
21248   -   -   -   -   -  -   -  - 325 25
21249   -   -   -   -   -  -   -  - 335 35
21250   -   -   -   -   -  -   -  - 345 45
21251   -   -   -   -   -  -   -  - 355 55
21252   -   -   -   -   -  -   -  - 365 65
21253   -   -   -   -   -  -   -  - 375 75
21254   -   -   -   -   -  -   -  - 385 85
21255   -   -   -   -   -  -   -  - 395 95
21256}
21257do_execsql_test joinD-733 {
21258  SELECT t1.*, t2.*, t3.*, t4.*
21259  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21260  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
21261  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21262  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21263} {
21264  10 110 210 310 110 10   -  - 310 10
21265  20 120 220 320 120 20   -  - 320 20
21266  30 130 230 330 130 30 230 30 330 30
21267  40 140 240 340 140 40   -  - 340 40
21268  50 150 250 350 150 50   -  - 350 50
21269  60 160 260 360 160 60 260 60 360 60
21270  70 170 270 370 170 70   -  - 370 70
21271  80 180 280 380 180 80   -  - 380 80
21272  90 190 290 390 190 90 290 90 390 90
21273   -   -   -   -   -  -   -  - 300  0
21274   -   -   -   -   -  -   -  - 305  5
21275   -   -   -   -   -  -   -  - 315 15
21276   -   -   -   -   -  -   -  - 325 25
21277   -   -   -   -   -  -   -  - 335 35
21278   -   -   -   -   -  -   -  - 345 45
21279   -   -   -   -   -  -   -  - 355 55
21280   -   -   -   -   -  -   -  - 365 65
21281   -   -   -   -   -  -   -  - 375 75
21282   -   -   -   -   -  -   -  - 385 85
21283   -   -   -   -   -  -   -  - 395 95
21284}
21285do_execsql_test joinD-734 {
21286  SELECT t1.*, t2.*, t3.*, t4.*
21287  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21288  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21289  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21290  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21291} {
21292   2 102 202 302 102  2   -  -   -  -
21293   4 104 204 304 104  4   -  -   -  -
21294   6 106 206 306 106  6 206  6   -  -
21295   8 108 208 308 108  8   -  -   -  -
21296  10 110 210 310 110 10   -  - 310 10
21297  12 112 212 312 112 12 212 12   -  -
21298  14 114 214 314 114 14   -  -   -  -
21299  16 116 216 316 116 16   -  -   -  -
21300  18 118 218 318 118 18 218 18   -  -
21301  20 120 220 320 120 20   -  - 320 20
21302  22 122 222 322 122 22   -  -   -  -
21303  24 124 224 324 124 24 224 24   -  -
21304  26 126 226 326 126 26   -  -   -  -
21305  28 128 228 328 128 28   -  -   -  -
21306  30 130 230 330 130 30 230 30 330 30
21307  32 132 232 332 132 32   -  -   -  -
21308  34 134 234 334 134 34   -  -   -  -
21309  36 136 236 336 136 36 236 36   -  -
21310  38 138 238 338 138 38   -  -   -  -
21311  40 140 240 340 140 40   -  - 340 40
21312  42 142 242 342 142 42 242 42   -  -
21313  44 144 244 344 144 44   -  -   -  -
21314  46 146 246 346 146 46   -  -   -  -
21315  48 148 248 348 148 48 248 48   -  -
21316  50 150 250 350 150 50   -  - 350 50
21317  52 152 252 352 152 52   -  -   -  -
21318  54 154 254 354 154 54 254 54   -  -
21319  56 156 256 356 156 56   -  -   -  -
21320  58 158 258 358 158 58   -  -   -  -
21321  60 160 260 360 160 60 260 60 360 60
21322  62 162 262 362 162 62   -  -   -  -
21323  64 164 264 364 164 64   -  -   -  -
21324  66 166 266 366 166 66 266 66   -  -
21325  68 168 268 368 168 68   -  -   -  -
21326  70 170 270 370 170 70   -  - 370 70
21327  72 172 272 372 172 72 272 72   -  -
21328  74 174 274 374 174 74   -  -   -  -
21329  76 176 276 376 176 76   -  -   -  -
21330  78 178 278 378 178 78 278 78   -  -
21331  80 180 280 380 180 80   -  - 380 80
21332  82 182 282 382 182 82   -  -   -  -
21333  84 184 284 384 184 84 284 84   -  -
21334  86 186 286 386 186 86   -  -   -  -
21335  88 188 288 388 188 88   -  -   -  -
21336  90 190 290 390 190 90 290 90 390 90
21337  92 192 292 392 192 92   -  -   -  -
21338  94 194 294 394 194 94   -  -   -  -
21339   -   -   -   - 100  0   -  -   -  -
21340   -   -   -   -   -  -   -  - 300  0
21341   -   -   -   -   -  -   -  - 305  5
21342   -   -   -   -   -  -   -  - 315 15
21343   -   -   -   -   -  -   -  - 325 25
21344   -   -   -   -   -  -   -  - 335 35
21345   -   -   -   -   -  -   -  - 345 45
21346   -   -   -   -   -  -   -  - 355 55
21347   -   -   -   -   -  -   -  - 365 65
21348   -   -   -   -   -  -   -  - 375 75
21349   -   -   -   -   -  -   -  - 385 85
21350   -   -   -   -   -  -   -  - 395 95
21351}
21352do_execsql_test joinD-735 {
21353  SELECT t1.*, t2.*, t3.*, t4.*
21354  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
21355  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21356  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21357  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21358} {
21359   2 102 202 302 102  2   -  -   -  -
21360   4 104 204 304 104  4   -  -   -  -
21361   6 106 206 306 106  6 206  6   -  -
21362   8 108 208 308 108  8   -  -   -  -
21363  10 110 210 310 110 10   -  - 310 10
21364  12 112 212 312 112 12 212 12   -  -
21365  14 114 214 314 114 14   -  -   -  -
21366  16 116 216 316 116 16   -  -   -  -
21367  18 118 218 318 118 18 218 18   -  -
21368  20 120 220 320 120 20   -  - 320 20
21369  22 122 222 322 122 22   -  -   -  -
21370  24 124 224 324 124 24 224 24   -  -
21371  26 126 226 326 126 26   -  -   -  -
21372  28 128 228 328 128 28   -  -   -  -
21373  30 130 230 330 130 30 230 30 330 30
21374  32 132 232 332 132 32   -  -   -  -
21375  34 134 234 334 134 34   -  -   -  -
21376  36 136 236 336 136 36 236 36   -  -
21377  38 138 238 338 138 38   -  -   -  -
21378  40 140 240 340 140 40   -  - 340 40
21379  42 142 242 342 142 42 242 42   -  -
21380  44 144 244 344 144 44   -  -   -  -
21381  46 146 246 346 146 46   -  -   -  -
21382  48 148 248 348 148 48 248 48   -  -
21383  50 150 250 350 150 50   -  - 350 50
21384  52 152 252 352 152 52   -  -   -  -
21385  54 154 254 354 154 54 254 54   -  -
21386  56 156 256 356 156 56   -  -   -  -
21387  58 158 258 358 158 58   -  -   -  -
21388  60 160 260 360 160 60 260 60 360 60
21389  62 162 262 362 162 62   -  -   -  -
21390  64 164 264 364 164 64   -  -   -  -
21391  66 166 266 366 166 66 266 66   -  -
21392  68 168 268 368 168 68   -  -   -  -
21393  70 170 270 370 170 70   -  - 370 70
21394  72 172 272 372 172 72 272 72   -  -
21395  74 174 274 374 174 74   -  -   -  -
21396  76 176 276 376 176 76   -  -   -  -
21397  78 178 278 378 178 78 278 78   -  -
21398  80 180 280 380 180 80   -  - 380 80
21399  82 182 282 382 182 82   -  -   -  -
21400  84 184 284 384 184 84 284 84   -  -
21401  86 186 286 386 186 86   -  -   -  -
21402  88 188 288 388 188 88   -  -   -  -
21403  90 190 290 390 190 90 290 90 390 90
21404  92 192 292 392 192 92   -  -   -  -
21405  94 194 294 394 194 94   -  -   -  -
21406   -   -   -   - 100  0   -  -   -  -
21407   -   -   -   -   -  -   -  - 300  0
21408   -   -   -   -   -  -   -  - 305  5
21409   -   -   -   -   -  -   -  - 315 15
21410   -   -   -   -   -  -   -  - 325 25
21411   -   -   -   -   -  -   -  - 335 35
21412   -   -   -   -   -  -   -  - 345 45
21413   -   -   -   -   -  -   -  - 355 55
21414   -   -   -   -   -  -   -  - 365 65
21415   -   -   -   -   -  -   -  - 375 75
21416   -   -   -   -   -  -   -  - 385 85
21417   -   -   -   -   -  -   -  - 395 95
21418}
21419do_execsql_test joinD-736 {
21420  SELECT t1.*, t2.*, t3.*, t4.*
21421  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21422  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21423  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21424  WHERE t2.x>0
21425  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21426} {
21427   2 102 202 302 102  2   -  -   -  -
21428   4 104 204 304 104  4   -  -   -  -
21429   6 106 206 306 106  6 206  6   -  -
21430   8 108 208 308 108  8   -  -   -  -
21431  10 110 210 310 110 10   -  - 310 10
21432  12 112 212 312 112 12 212 12   -  -
21433  14 114 214 314 114 14   -  -   -  -
21434  16 116 216 316 116 16   -  -   -  -
21435  18 118 218 318 118 18 218 18   -  -
21436  20 120 220 320 120 20   -  - 320 20
21437  22 122 222 322 122 22   -  -   -  -
21438  24 124 224 324 124 24 224 24   -  -
21439  26 126 226 326 126 26   -  -   -  -
21440  28 128 228 328 128 28   -  -   -  -
21441  30 130 230 330 130 30 230 30 330 30
21442  32 132 232 332 132 32   -  -   -  -
21443  34 134 234 334 134 34   -  -   -  -
21444  36 136 236 336 136 36 236 36   -  -
21445  38 138 238 338 138 38   -  -   -  -
21446  40 140 240 340 140 40   -  - 340 40
21447  42 142 242 342 142 42 242 42   -  -
21448  44 144 244 344 144 44   -  -   -  -
21449  46 146 246 346 146 46   -  -   -  -
21450  48 148 248 348 148 48 248 48   -  -
21451  50 150 250 350 150 50   -  - 350 50
21452  52 152 252 352 152 52   -  -   -  -
21453  54 154 254 354 154 54 254 54   -  -
21454  56 156 256 356 156 56   -  -   -  -
21455  58 158 258 358 158 58   -  -   -  -
21456  60 160 260 360 160 60 260 60 360 60
21457  62 162 262 362 162 62   -  -   -  -
21458  64 164 264 364 164 64   -  -   -  -
21459  66 166 266 366 166 66 266 66   -  -
21460  68 168 268 368 168 68   -  -   -  -
21461  70 170 270 370 170 70   -  - 370 70
21462  72 172 272 372 172 72 272 72   -  -
21463  74 174 274 374 174 74   -  -   -  -
21464  76 176 276 376 176 76   -  -   -  -
21465  78 178 278 378 178 78 278 78   -  -
21466  80 180 280 380 180 80   -  - 380 80
21467  82 182 282 382 182 82   -  -   -  -
21468  84 184 284 384 184 84 284 84   -  -
21469  86 186 286 386 186 86   -  -   -  -
21470  88 188 288 388 188 88   -  -   -  -
21471  90 190 290 390 190 90 290 90 390 90
21472  92 192 292 392 192 92   -  -   -  -
21473  94 194 294 394 194 94   -  -   -  -
21474}
21475do_execsql_test joinD-737 {
21476  SELECT t1.*, t2.*, t3.*, t4.*
21477  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21478  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21479  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21480  WHERE (t2.x>0 OR t2.x IS NULL)
21481  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21482} {
21483   2 102 202 302 102  2   -  -   -  -
21484   4 104 204 304 104  4   -  -   -  -
21485   6 106 206 306 106  6 206  6   -  -
21486   8 108 208 308 108  8   -  -   -  -
21487  10 110 210 310 110 10   -  - 310 10
21488  12 112 212 312 112 12 212 12   -  -
21489  14 114 214 314 114 14   -  -   -  -
21490  16 116 216 316 116 16   -  -   -  -
21491  18 118 218 318 118 18 218 18   -  -
21492  20 120 220 320 120 20   -  - 320 20
21493  22 122 222 322 122 22   -  -   -  -
21494  24 124 224 324 124 24 224 24   -  -
21495  26 126 226 326 126 26   -  -   -  -
21496  28 128 228 328 128 28   -  -   -  -
21497  30 130 230 330 130 30 230 30 330 30
21498  32 132 232 332 132 32   -  -   -  -
21499  34 134 234 334 134 34   -  -   -  -
21500  36 136 236 336 136 36 236 36   -  -
21501  38 138 238 338 138 38   -  -   -  -
21502  40 140 240 340 140 40   -  - 340 40
21503  42 142 242 342 142 42 242 42   -  -
21504  44 144 244 344 144 44   -  -   -  -
21505  46 146 246 346 146 46   -  -   -  -
21506  48 148 248 348 148 48 248 48   -  -
21507  50 150 250 350 150 50   -  - 350 50
21508  52 152 252 352 152 52   -  -   -  -
21509  54 154 254 354 154 54 254 54   -  -
21510  56 156 256 356 156 56   -  -   -  -
21511  58 158 258 358 158 58   -  -   -  -
21512  60 160 260 360 160 60 260 60 360 60
21513  62 162 262 362 162 62   -  -   -  -
21514  64 164 264 364 164 64   -  -   -  -
21515  66 166 266 366 166 66 266 66   -  -
21516  68 168 268 368 168 68   -  -   -  -
21517  70 170 270 370 170 70   -  - 370 70
21518  72 172 272 372 172 72 272 72   -  -
21519  74 174 274 374 174 74   -  -   -  -
21520  76 176 276 376 176 76   -  -   -  -
21521  78 178 278 378 178 78 278 78   -  -
21522  80 180 280 380 180 80   -  - 380 80
21523  82 182 282 382 182 82   -  -   -  -
21524  84 184 284 384 184 84 284 84   -  -
21525  86 186 286 386 186 86   -  -   -  -
21526  88 188 288 388 188 88   -  -   -  -
21527  90 190 290 390 190 90 290 90 390 90
21528  92 192 292 392 192 92   -  -   -  -
21529  94 194 294 394 194 94   -  -   -  -
21530   -   -   -   -   -  -   -  - 300  0
21531   -   -   -   -   -  -   -  - 305  5
21532   -   -   -   -   -  -   -  - 315 15
21533   -   -   -   -   -  -   -  - 325 25
21534   -   -   -   -   -  -   -  - 335 35
21535   -   -   -   -   -  -   -  - 345 45
21536   -   -   -   -   -  -   -  - 355 55
21537   -   -   -   -   -  -   -  - 365 65
21538   -   -   -   -   -  -   -  - 375 75
21539   -   -   -   -   -  -   -  - 385 85
21540   -   -   -   -   -  -   -  - 395 95
21541}
21542do_execsql_test joinD-738 {
21543  SELECT t1.*, t2.*, t3.*, t4.*
21544  FROM t1 RIGHT JOIN t2 ON true
21545  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21546  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21547  WHERE t1.b=t2.b AND t2.x>0
21548  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21549} {
21550   2 102 202 302 102  2   -  -   -  -
21551   4 104 204 304 104  4   -  -   -  -
21552   6 106 206 306 106  6 206  6   -  -
21553   8 108 208 308 108  8   -  -   -  -
21554  10 110 210 310 110 10   -  - 310 10
21555  12 112 212 312 112 12 212 12   -  -
21556  14 114 214 314 114 14   -  -   -  -
21557  16 116 216 316 116 16   -  -   -  -
21558  18 118 218 318 118 18 218 18   -  -
21559  20 120 220 320 120 20   -  - 320 20
21560  22 122 222 322 122 22   -  -   -  -
21561  24 124 224 324 124 24 224 24   -  -
21562  26 126 226 326 126 26   -  -   -  -
21563  28 128 228 328 128 28   -  -   -  -
21564  30 130 230 330 130 30 230 30 330 30
21565  32 132 232 332 132 32   -  -   -  -
21566  34 134 234 334 134 34   -  -   -  -
21567  36 136 236 336 136 36 236 36   -  -
21568  38 138 238 338 138 38   -  -   -  -
21569  40 140 240 340 140 40   -  - 340 40
21570  42 142 242 342 142 42 242 42   -  -
21571  44 144 244 344 144 44   -  -   -  -
21572  46 146 246 346 146 46   -  -   -  -
21573  48 148 248 348 148 48 248 48   -  -
21574  50 150 250 350 150 50   -  - 350 50
21575  52 152 252 352 152 52   -  -   -  -
21576  54 154 254 354 154 54 254 54   -  -
21577  56 156 256 356 156 56   -  -   -  -
21578  58 158 258 358 158 58   -  -   -  -
21579  60 160 260 360 160 60 260 60 360 60
21580  62 162 262 362 162 62   -  -   -  -
21581  64 164 264 364 164 64   -  -   -  -
21582  66 166 266 366 166 66 266 66   -  -
21583  68 168 268 368 168 68   -  -   -  -
21584  70 170 270 370 170 70   -  - 370 70
21585  72 172 272 372 172 72 272 72   -  -
21586  74 174 274 374 174 74   -  -   -  -
21587  76 176 276 376 176 76   -  -   -  -
21588  78 178 278 378 178 78 278 78   -  -
21589  80 180 280 380 180 80   -  - 380 80
21590  82 182 282 382 182 82   -  -   -  -
21591  84 184 284 384 184 84 284 84   -  -
21592  86 186 286 386 186 86   -  -   -  -
21593  88 188 288 388 188 88   -  -   -  -
21594  90 190 290 390 190 90 290 90 390 90
21595  92 192 292 392 192 92   -  -   -  -
21596  94 194 294 394 194 94   -  -   -  -
21597}
21598do_execsql_test joinD-739 {
21599  SELECT t1.*, t2.*, t3.*, t4.*
21600  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21601  LEFT JOIN t3 ON t1.c=t3.c
21602  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21603  WHERE t3.y>0
21604  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21605} {
21606   6 106 206 306 106  6 206  6   -  -
21607  12 112 212 312 112 12 212 12   -  -
21608  18 118 218 318 118 18 218 18   -  -
21609  24 124 224 324 124 24 224 24   -  -
21610  30 130 230 330 130 30 230 30 330 30
21611  36 136 236 336 136 36 236 36   -  -
21612  42 142 242 342 142 42 242 42   -  -
21613  48 148 248 348 148 48 248 48   -  -
21614  54 154 254 354 154 54 254 54   -  -
21615  60 160 260 360 160 60 260 60 360 60
21616  66 166 266 366 166 66 266 66   -  -
21617  72 172 272 372 172 72 272 72   -  -
21618  78 178 278 378 178 78 278 78   -  -
21619  84 184 284 384 184 84 284 84   -  -
21620  90 190 290 390 190 90 290 90 390 90
21621}
21622do_execsql_test joinD-740 {
21623  SELECT t1.*, t2.*, t3.*, t4.*
21624  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21625  LEFT JOIN t3 ON t1.c=t3.c
21626  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21627  WHERE t3.y>0 OR t3.y IS NULL
21628  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21629} {
21630   2 102 202 302 102  2   -  -   -  -
21631   4 104 204 304 104  4   -  -   -  -
21632   6 106 206 306 106  6 206  6   -  -
21633   8 108 208 308 108  8   -  -   -  -
21634  10 110 210 310 110 10   -  - 310 10
21635  12 112 212 312 112 12 212 12   -  -
21636  14 114 214 314 114 14   -  -   -  -
21637  16 116 216 316 116 16   -  -   -  -
21638  18 118 218 318 118 18 218 18   -  -
21639  20 120 220 320 120 20   -  - 320 20
21640  22 122 222 322 122 22   -  -   -  -
21641  24 124 224 324 124 24 224 24   -  -
21642  26 126 226 326 126 26   -  -   -  -
21643  28 128 228 328 128 28   -  -   -  -
21644  30 130 230 330 130 30 230 30 330 30
21645  32 132 232 332 132 32   -  -   -  -
21646  34 134 234 334 134 34   -  -   -  -
21647  36 136 236 336 136 36 236 36   -  -
21648  38 138 238 338 138 38   -  -   -  -
21649  40 140 240 340 140 40   -  - 340 40
21650  42 142 242 342 142 42 242 42   -  -
21651  44 144 244 344 144 44   -  -   -  -
21652  46 146 246 346 146 46   -  -   -  -
21653  48 148 248 348 148 48 248 48   -  -
21654  50 150 250 350 150 50   -  - 350 50
21655  52 152 252 352 152 52   -  -   -  -
21656  54 154 254 354 154 54 254 54   -  -
21657  56 156 256 356 156 56   -  -   -  -
21658  58 158 258 358 158 58   -  -   -  -
21659  60 160 260 360 160 60 260 60 360 60
21660  62 162 262 362 162 62   -  -   -  -
21661  64 164 264 364 164 64   -  -   -  -
21662  66 166 266 366 166 66 266 66   -  -
21663  68 168 268 368 168 68   -  -   -  -
21664  70 170 270 370 170 70   -  - 370 70
21665  72 172 272 372 172 72 272 72   -  -
21666  74 174 274 374 174 74   -  -   -  -
21667  76 176 276 376 176 76   -  -   -  -
21668  78 178 278 378 178 78 278 78   -  -
21669  80 180 280 380 180 80   -  - 380 80
21670  82 182 282 382 182 82   -  -   -  -
21671  84 184 284 384 184 84 284 84   -  -
21672  86 186 286 386 186 86   -  -   -  -
21673  88 188 288 388 188 88   -  -   -  -
21674  90 190 290 390 190 90 290 90 390 90
21675  92 192 292 392 192 92   -  -   -  -
21676  94 194 294 394 194 94   -  -   -  -
21677   -   -   -   - 100  0   -  -   -  -
21678   -   -   -   -   -  -   -  - 300  0
21679   -   -   -   -   -  -   -  - 305  5
21680   -   -   -   -   -  -   -  - 315 15
21681   -   -   -   -   -  -   -  - 325 25
21682   -   -   -   -   -  -   -  - 335 35
21683   -   -   -   -   -  -   -  - 345 45
21684   -   -   -   -   -  -   -  - 355 55
21685   -   -   -   -   -  -   -  - 365 65
21686   -   -   -   -   -  -   -  - 375 75
21687   -   -   -   -   -  -   -  - 385 85
21688   -   -   -   -   -  -   -  - 395 95
21689}
21690do_execsql_test joinD-741 {
21691  SELECT t1.*, t2.*, t3.*, t4.*
21692  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21693  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21694  FULL JOIN t4 ON t1.d=t4.d
21695  WHERE t4.z>0
21696  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21697} {
21698  10 110 210 310 110 10   -  - 310 10
21699  20 120 220 320 120 20   -  - 320 20
21700  30 130 230 330 130 30 230 30 330 30
21701  40 140 240 340 140 40   -  - 340 40
21702  50 150 250 350 150 50   -  - 350 50
21703  60 160 260 360 160 60 260 60 360 60
21704  70 170 270 370 170 70   -  - 370 70
21705  80 180 280 380 180 80   -  - 380 80
21706  90 190 290 390 190 90 290 90 390 90
21707   -   -   -   -   -  -   -  - 305  5
21708   -   -   -   -   -  -   -  - 315 15
21709   -   -   -   -   -  -   -  - 325 25
21710   -   -   -   -   -  -   -  - 335 35
21711   -   -   -   -   -  -   -  - 345 45
21712   -   -   -   -   -  -   -  - 355 55
21713   -   -   -   -   -  -   -  - 365 65
21714   -   -   -   -   -  -   -  - 375 75
21715   -   -   -   -   -  -   -  - 385 85
21716   -   -   -   -   -  -   -  - 395 95
21717}
21718do_execsql_test joinD-742 {
21719  SELECT t1.*, t2.*, t3.*, t4.*
21720  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21721  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21722  FULL JOIN t4 ON t1.d=t4.d
21723  WHERE t4.z IS NULL OR t4.z>0
21724  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21725} {
21726   2 102 202 302 102  2   -  -   -  -
21727   4 104 204 304 104  4   -  -   -  -
21728   6 106 206 306 106  6 206  6   -  -
21729   8 108 208 308 108  8   -  -   -  -
21730  10 110 210 310 110 10   -  - 310 10
21731  12 112 212 312 112 12 212 12   -  -
21732  14 114 214 314 114 14   -  -   -  -
21733  16 116 216 316 116 16   -  -   -  -
21734  18 118 218 318 118 18 218 18   -  -
21735  20 120 220 320 120 20   -  - 320 20
21736  22 122 222 322 122 22   -  -   -  -
21737  24 124 224 324 124 24 224 24   -  -
21738  26 126 226 326 126 26   -  -   -  -
21739  28 128 228 328 128 28   -  -   -  -
21740  30 130 230 330 130 30 230 30 330 30
21741  32 132 232 332 132 32   -  -   -  -
21742  34 134 234 334 134 34   -  -   -  -
21743  36 136 236 336 136 36 236 36   -  -
21744  38 138 238 338 138 38   -  -   -  -
21745  40 140 240 340 140 40   -  - 340 40
21746  42 142 242 342 142 42 242 42   -  -
21747  44 144 244 344 144 44   -  -   -  -
21748  46 146 246 346 146 46   -  -   -  -
21749  48 148 248 348 148 48 248 48   -  -
21750  50 150 250 350 150 50   -  - 350 50
21751  52 152 252 352 152 52   -  -   -  -
21752  54 154 254 354 154 54 254 54   -  -
21753  56 156 256 356 156 56   -  -   -  -
21754  58 158 258 358 158 58   -  -   -  -
21755  60 160 260 360 160 60 260 60 360 60
21756  62 162 262 362 162 62   -  -   -  -
21757  64 164 264 364 164 64   -  -   -  -
21758  66 166 266 366 166 66 266 66   -  -
21759  68 168 268 368 168 68   -  -   -  -
21760  70 170 270 370 170 70   -  - 370 70
21761  72 172 272 372 172 72 272 72   -  -
21762  74 174 274 374 174 74   -  -   -  -
21763  76 176 276 376 176 76   -  -   -  -
21764  78 178 278 378 178 78 278 78   -  -
21765  80 180 280 380 180 80   -  - 380 80
21766  82 182 282 382 182 82   -  -   -  -
21767  84 184 284 384 184 84 284 84   -  -
21768  86 186 286 386 186 86   -  -   -  -
21769  88 188 288 388 188 88   -  -   -  -
21770  90 190 290 390 190 90 290 90 390 90
21771  92 192 292 392 192 92   -  -   -  -
21772  94 194 294 394 194 94   -  -   -  -
21773   -   -   -   - 100  0   -  -   -  -
21774   -   -   -   -   -  -   -  - 305  5
21775   -   -   -   -   -  -   -  - 315 15
21776   -   -   -   -   -  -   -  - 325 25
21777   -   -   -   -   -  -   -  - 335 35
21778   -   -   -   -   -  -   -  - 345 45
21779   -   -   -   -   -  -   -  - 355 55
21780   -   -   -   -   -  -   -  - 365 65
21781   -   -   -   -   -  -   -  - 375 75
21782   -   -   -   -   -  -   -  - 385 85
21783   -   -   -   -   -  -   -  - 395 95
21784}
21785do_execsql_test joinD-743 {
21786  SELECT t1.*, t2.*, t3.*, t4.*
21787  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21788  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21789  FULL JOIN t4 ON t1.d=t4.d
21790  WHERE t2.x>0 AND t4.z>0
21791  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21792} {
21793  10 110 210 310 110 10   -  - 310 10
21794  20 120 220 320 120 20   -  - 320 20
21795  30 130 230 330 130 30 230 30 330 30
21796  40 140 240 340 140 40   -  - 340 40
21797  50 150 250 350 150 50   -  - 350 50
21798  60 160 260 360 160 60 260 60 360 60
21799  70 170 270 370 170 70   -  - 370 70
21800  80 180 280 380 180 80   -  - 380 80
21801  90 190 290 390 190 90 290 90 390 90
21802}
21803do_execsql_test joinD-744 {
21804  SELECT t1.*, t2.*, t3.*, t4.*
21805  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21806  LEFT JOIN t3 ON t1.c=t3.c
21807  FULL JOIN t4 ON t1.d=t4.d
21808  WHERE t4.z>0 AND t3.y>0
21809  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21810} {
21811  30 130 230 330 130 30 230 30 330 30
21812  60 160 260 360 160 60 260 60 360 60
21813  90 190 290 390 190 90 290 90 390 90
21814}
21815do_execsql_test joinD-745 {
21816  SELECT t1.*, t2.*, t3.*, t4.*
21817  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21818  LEFT JOIN t3 ON t1.c=t3.c
21819  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21820  WHERE t2.x>0 AND t3.y>0
21821  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21822} {
21823   6 106 206 306 106  6 206  6   -  -
21824  12 112 212 312 112 12 212 12   -  -
21825  18 118 218 318 118 18 218 18   -  -
21826  24 124 224 324 124 24 224 24   -  -
21827  30 130 230 330 130 30 230 30 330 30
21828  36 136 236 336 136 36 236 36   -  -
21829  42 142 242 342 142 42 242 42   -  -
21830  48 148 248 348 148 48 248 48   -  -
21831  54 154 254 354 154 54 254 54   -  -
21832  60 160 260 360 160 60 260 60 360 60
21833  66 166 266 366 166 66 266 66   -  -
21834  72 172 272 372 172 72 272 72   -  -
21835  78 178 278 378 178 78 278 78   -  -
21836  84 184 284 384 184 84 284 84   -  -
21837  90 190 290 390 190 90 290 90 390 90
21838}
21839do_execsql_test joinD-746 {
21840  SELECT t1.*, t2.*, t3.*, t4.*
21841  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21842  LEFT JOIN t3 ON t1.c=t3.c
21843  FULL JOIN t4 ON t1.d=t4.d
21844  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
21845  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21846} {
21847  30 130 230 330 130 30 230 30 330 30
21848  60 160 260 360 160 60 260 60 360 60
21849  90 190 290 390 190 90 290 90 390 90
21850}
21851do_execsql_test joinD-747 {
21852  SELECT t1.*, t2.*, t3.*, t4.*
21853  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
21854  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21855  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
21856  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21857} {
21858   2 102 202 302 102  2   -  -   -  -
21859   4 104 204 304 104  4   -  -   -  -
21860   6 106 206 306 106  6 206  6   -  -
21861   8 108 208 308 108  8   -  -   -  -
21862  10 110 210 310 110 10   -  - 310 10
21863  12 112 212 312 112 12 212 12   -  -
21864  14 114 214 314 114 14   -  -   -  -
21865  16 116 216 316 116 16   -  -   -  -
21866  18 118 218 318 118 18 218 18   -  -
21867  20 120 220 320 120 20   -  - 320 20
21868  22 122 222 322 122 22   -  -   -  -
21869  24 124 224 324 124 24 224 24   -  -
21870  26 126 226 326 126 26   -  -   -  -
21871  28 128 228 328 128 28   -  -   -  -
21872  30 130 230 330 130 30 230 30 330 30
21873  32 132 232 332 132 32   -  -   -  -
21874  34 134 234 334 134 34   -  -   -  -
21875  36 136 236 336 136 36 236 36   -  -
21876  38 138 238 338 138 38   -  -   -  -
21877  40 140 240 340 140 40   -  - 340 40
21878  42 142 242 342 142 42 242 42   -  -
21879  44 144 244 344 144 44   -  -   -  -
21880  46 146 246 346 146 46   -  -   -  -
21881  48 148 248 348 148 48 248 48   -  -
21882  50 150 250 350 150 50   -  - 350 50
21883  52 152 252 352 152 52   -  -   -  -
21884  54 154 254 354 154 54 254 54   -  -
21885  56 156 256 356 156 56   -  -   -  -
21886  58 158 258 358 158 58   -  -   -  -
21887  60 160 260 360 160 60 260 60 360 60
21888  62 162 262 362 162 62   -  -   -  -
21889  64 164 264 364 164 64   -  -   -  -
21890  66 166 266 366 166 66 266 66   -  -
21891  68 168 268 368 168 68   -  -   -  -
21892  70 170 270 370 170 70   -  - 370 70
21893  72 172 272 372 172 72 272 72   -  -
21894  74 174 274 374 174 74   -  -   -  -
21895  76 176 276 376 176 76   -  -   -  -
21896  78 178 278 378 178 78 278 78   -  -
21897  80 180 280 380 180 80   -  - 380 80
21898  82 182 282 382 182 82   -  -   -  -
21899  84 184 284 384 184 84 284 84   -  -
21900  86 186 286 386 186 86   -  -   -  -
21901  88 188 288 388 188 88   -  -   -  -
21902  90 190 290 390 190 90 290 90 390 90
21903  92 192 292 392 192 92   -  -   -  -
21904  94 194 294 394 194 94   -  -   -  -
21905   -   -   -   - 100  0   -  -   -  -
21906   -   -   -   -   -  -   -  - 300  0
21907   -   -   -   -   -  -   -  - 305  5
21908   -   -   -   -   -  -   -  - 315 15
21909   -   -   -   -   -  -   -  - 325 25
21910   -   -   -   -   -  -   -  - 335 35
21911   -   -   -   -   -  -   -  - 345 45
21912   -   -   -   -   -  -   -  - 355 55
21913   -   -   -   -   -  -   -  - 365 65
21914   -   -   -   -   -  -   -  - 375 75
21915   -   -   -   -   -  -   -  - 385 85
21916   -   -   -   -   -  -   -  - 395 95
21917}
21918do_execsql_test joinD-748 {
21919  SELECT t1.*, t2.*, t3.*, t4.*
21920  FROM t1 RIGHT JOIN t2 ON t2.x>0
21921  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21922  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
21923  WHERE t1.b IS NOT DISTINCT FROM t2.b
21924  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21925} {
21926   2 102 202 302 102  2   -  -   -  -
21927   4 104 204 304 104  4   -  -   -  -
21928   6 106 206 306 106  6 206  6   -  -
21929   8 108 208 308 108  8   -  -   -  -
21930  10 110 210 310 110 10   -  - 310 10
21931  12 112 212 312 112 12 212 12   -  -
21932  14 114 214 314 114 14   -  -   -  -
21933  16 116 216 316 116 16   -  -   -  -
21934  18 118 218 318 118 18 218 18   -  -
21935  20 120 220 320 120 20   -  - 320 20
21936  22 122 222 322 122 22   -  -   -  -
21937  24 124 224 324 124 24 224 24   -  -
21938  26 126 226 326 126 26   -  -   -  -
21939  28 128 228 328 128 28   -  -   -  -
21940  30 130 230 330 130 30 230 30 330 30
21941  32 132 232 332 132 32   -  -   -  -
21942  34 134 234 334 134 34   -  -   -  -
21943  36 136 236 336 136 36 236 36   -  -
21944  38 138 238 338 138 38   -  -   -  -
21945  40 140 240 340 140 40   -  - 340 40
21946  42 142 242 342 142 42 242 42   -  -
21947  44 144 244 344 144 44   -  -   -  -
21948  46 146 246 346 146 46   -  -   -  -
21949  48 148 248 348 148 48 248 48   -  -
21950  50 150 250 350 150 50   -  - 350 50
21951  52 152 252 352 152 52   -  -   -  -
21952  54 154 254 354 154 54 254 54   -  -
21953  56 156 256 356 156 56   -  -   -  -
21954  58 158 258 358 158 58   -  -   -  -
21955  60 160 260 360 160 60 260 60 360 60
21956  62 162 262 362 162 62   -  -   -  -
21957  64 164 264 364 164 64   -  -   -  -
21958  66 166 266 366 166 66 266 66   -  -
21959  68 168 268 368 168 68   -  -   -  -
21960  70 170 270 370 170 70   -  - 370 70
21961  72 172 272 372 172 72 272 72   -  -
21962  74 174 274 374 174 74   -  -   -  -
21963  76 176 276 376 176 76   -  -   -  -
21964  78 178 278 378 178 78 278 78   -  -
21965  80 180 280 380 180 80   -  - 380 80
21966  82 182 282 382 182 82   -  -   -  -
21967  84 184 284 384 184 84 284 84   -  -
21968  86 186 286 386 186 86   -  -   -  -
21969  88 188 288 388 188 88   -  -   -  -
21970  90 190 290 390 190 90 290 90 390 90
21971  92 192 292 392 192 92   -  -   -  -
21972  94 194 294 394 194 94   -  -   -  -
21973   -   -   -   -   -  -   -  - 300  0
21974}
21975do_execsql_test joinD-749 {
21976  SELECT t1.*, t2.*, t3.*, t4.*
21977  FROM t1 RIGHT JOIN t2 ON t2.x>0
21978  LEFT JOIN t3 ON t3.y>0
21979  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
21980  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
21981  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21982} {
21983   6 106 206 306 106  6 206  6   -  -
21984  12 112 212 312 112 12 212 12   -  -
21985  18 118 218 318 118 18 218 18   -  -
21986  24 124 224 324 124 24 224 24   -  -
21987  30 130 230 330 130 30 230 30 330 30
21988  36 136 236 336 136 36 236 36   -  -
21989  42 142 242 342 142 42 242 42   -  -
21990  48 148 248 348 148 48 248 48   -  -
21991  54 154 254 354 154 54 254 54   -  -
21992  60 160 260 360 160 60 260 60 360 60
21993  66 166 266 366 166 66 266 66   -  -
21994  72 172 272 372 172 72 272 72   -  -
21995  78 178 278 378 178 78 278 78   -  -
21996  84 184 284 384 184 84 284 84   -  -
21997  90 190 290 390 190 90 290 90 390 90
21998   -   -   -   -   -  -   -  - 300  0
21999}
22000do_execsql_test joinD-750 {
22001  SELECT t1.*, t2.*, t3.*, t4.*
22002  FROM t1 RIGHT JOIN t2 ON t2.x>0
22003  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22004  FULL JOIN t4 ON t4.z>0
22005  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
22006  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22007} {
22008  10 110 210 310 110 10   -  - 310 10
22009  20 120 220 320 120 20   -  - 320 20
22010  30 130 230 330 130 30 230 30 330 30
22011  40 140 240 340 140 40   -  - 340 40
22012  50 150 250 350 150 50   -  - 350 50
22013  60 160 260 360 160 60 260 60 360 60
22014  70 170 270 370 170 70   -  - 370 70
22015  80 180 280 380 180 80   -  - 380 80
22016  90 190 290 390 190 90 290 90 390 90
22017}
22018do_execsql_test joinD-751 {
22019  SELECT t1.*, t2.*, t3.*, t4.*
22020  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
22021  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
22022  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
22023  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22024} {
22025   2 102 202 302 102  2   -  -   -  -
22026   4 104 204 304 104  4   -  -   -  -
22027   6 106 206 306 106  6 206  6   -  -
22028   8 108 208 308 108  8   -  -   -  -
22029  10 110 210 310 110 10   -  - 310 10
22030  12 112 212 312 112 12 212 12   -  -
22031  14 114 214 314 114 14   -  -   -  -
22032  16 116 216 316 116 16   -  -   -  -
22033  18 118 218 318 118 18 218 18   -  -
22034  20 120 220 320 120 20   -  - 320 20
22035  22 122 222 322 122 22   -  -   -  -
22036  24 124 224 324 124 24 224 24   -  -
22037  26 126 226 326 126 26   -  -   -  -
22038  28 128 228 328 128 28   -  -   -  -
22039  30 130 230 330 130 30 230 30 330 30
22040  32 132 232 332 132 32   -  -   -  -
22041  34 134 234 334 134 34   -  -   -  -
22042  36 136 236 336 136 36 236 36   -  -
22043  38 138 238 338 138 38   -  -   -  -
22044  40 140 240 340 140 40   -  - 340 40
22045  42 142 242 342 142 42 242 42   -  -
22046  44 144 244 344 144 44   -  -   -  -
22047  46 146 246 346 146 46   -  -   -  -
22048  48 148 248 348 148 48 248 48   -  -
22049  50 150 250 350 150 50   -  - 350 50
22050  52 152 252 352 152 52   -  -   -  -
22051  54 154 254 354 154 54 254 54   -  -
22052  56 156 256 356 156 56   -  -   -  -
22053  58 158 258 358 158 58   -  -   -  -
22054  60 160 260 360 160 60 260 60 360 60
22055  62 162 262 362 162 62   -  -   -  -
22056  64 164 264 364 164 64   -  -   -  -
22057  66 166 266 366 166 66 266 66   -  -
22058  68 168 268 368 168 68   -  -   -  -
22059  70 170 270 370 170 70   -  - 370 70
22060  72 172 272 372 172 72 272 72   -  -
22061  74 174 274 374 174 74   -  -   -  -
22062  76 176 276 376 176 76   -  -   -  -
22063  78 178 278 378 178 78 278 78   -  -
22064  80 180 280 380 180 80   -  - 380 80
22065  82 182 282 382 182 82   -  -   -  -
22066  84 184 284 384 184 84 284 84   -  -
22067  86 186 286 386 186 86   -  -   -  -
22068  88 188 288 388 188 88   -  -   -  -
22069  90 190 290 390 190 90 290 90 390 90
22070  92 192 292 392 192 92   -  -   -  -
22071  94 194 294 394 194 94   -  -   -  -
22072   -   -   -   - 100  0   -  -   -  -
22073   -   -   -   -   -  -   -  - 300  0
22074   -   -   -   -   -  -   -  - 305  5
22075   -   -   -   -   -  -   -  - 315 15
22076   -   -   -   -   -  -   -  - 325 25
22077   -   -   -   -   -  -   -  - 335 35
22078   -   -   -   -   -  -   -  - 345 45
22079   -   -   -   -   -  -   -  - 355 55
22080   -   -   -   -   -  -   -  - 365 65
22081   -   -   -   -   -  -   -  - 375 75
22082   -   -   -   -   -  -   -  - 385 85
22083   -   -   -   -   -  -   -  - 395 95
22084}
22085do_execsql_test joinD-752 {
22086  SELECT t1.*, t2.*, t3.*, t4.*
22087  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22088  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
22089  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
22090  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22091} {
22092   2 102 202 302 102  2   -  -   -  -
22093   4 104 204 304 104  4   -  -   -  -
22094   6 106 206 306 106  6 206  6   -  -
22095   8 108 208 308 108  8   -  -   -  -
22096  10 110 210 310 110 10   -  - 310 10
22097  12 112 212 312 112 12 212 12   -  -
22098  14 114 214 314 114 14   -  -   -  -
22099  16 116 216 316 116 16   -  -   -  -
22100  18 118 218 318 118 18 218 18   -  -
22101  20 120 220 320 120 20   -  - 320 20
22102  22 122 222 322 122 22   -  -   -  -
22103  24 124 224 324 124 24 224 24   -  -
22104  26 126 226 326 126 26   -  -   -  -
22105  28 128 228 328 128 28   -  -   -  -
22106  30 130 230 330 130 30 230 30 330 30
22107  32 132 232 332 132 32   -  -   -  -
22108  34 134 234 334 134 34   -  -   -  -
22109  36 136 236 336 136 36 236 36   -  -
22110  38 138 238 338 138 38   -  -   -  -
22111  40 140 240 340 140 40   -  - 340 40
22112  42 142 242 342 142 42 242 42   -  -
22113  44 144 244 344 144 44   -  -   -  -
22114  46 146 246 346 146 46   -  -   -  -
22115  48 148 248 348 148 48 248 48   -  -
22116  50 150 250 350 150 50   -  - 350 50
22117  52 152 252 352 152 52   -  -   -  -
22118  54 154 254 354 154 54 254 54   -  -
22119  56 156 256 356 156 56   -  -   -  -
22120  58 158 258 358 158 58   -  -   -  -
22121  60 160 260 360 160 60 260 60 360 60
22122  62 162 262 362 162 62   -  -   -  -
22123  64 164 264 364 164 64   -  -   -  -
22124  66 166 266 366 166 66 266 66   -  -
22125  68 168 268 368 168 68   -  -   -  -
22126  70 170 270 370 170 70   -  - 370 70
22127  72 172 272 372 172 72 272 72   -  -
22128  74 174 274 374 174 74   -  -   -  -
22129  76 176 276 376 176 76   -  -   -  -
22130  78 178 278 378 178 78 278 78   -  -
22131  80 180 280 380 180 80   -  - 380 80
22132  82 182 282 382 182 82   -  -   -  -
22133  84 184 284 384 184 84 284 84   -  -
22134  86 186 286 386 186 86   -  -   -  -
22135  88 188 288 388 188 88   -  -   -  -
22136  90 190 290 390 190 90 290 90 390 90
22137  92 192 292 392 192 92   -  -   -  -
22138  94 194 294 394 194 94   -  -   -  -
22139   -   -   -   - 100  0   -  -   -  -
22140   -   -   -   -   -  -   -  - 300  0
22141   -   -   -   -   -  -   -  - 305  5
22142   -   -   -   -   -  -   -  - 315 15
22143   -   -   -   -   -  -   -  - 325 25
22144   -   -   -   -   -  -   -  - 335 35
22145   -   -   -   -   -  -   -  - 345 45
22146   -   -   -   -   -  -   -  - 355 55
22147   -   -   -   -   -  -   -  - 365 65
22148   -   -   -   -   -  -   -  - 375 75
22149   -   -   -   -   -  -   -  - 385 85
22150   -   -   -   -   -  -   -  - 395 95
22151}
22152do_execsql_test joinD-753 {
22153  SELECT t1.*, t2.*, t3.*, t4.*
22154  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22155  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22156  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22157  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22158} {
22159  30 130 230 330 130 30 230 30 330 30
22160  60 160 260 360 160 60 260 60 360 60
22161  90 190 290 390 190 90 290 90 390 90
22162}
22163do_execsql_test joinD-754 {
22164  SELECT t1.*, t2.*, t3.*, t4.*
22165  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22166  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22167  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22168  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22169} {
22170  30 130 230 330 130 30 230 30 330 30
22171  60 160 260 360 160 60 260 60 360 60
22172  90 190 290 390 190 90 290 90 390 90
22173}
22174do_execsql_test joinD-755 {
22175  SELECT t1.*, t2.*, t3.*, t4.*
22176  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22177  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22178  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22179  WHERE t2.x>0
22180  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22181} {
22182  30 130 230 330 130 30 230 30 330 30
22183  60 160 260 360 160 60 260 60 360 60
22184  90 190 290 390 190 90 290 90 390 90
22185}
22186do_execsql_test joinD-756 {
22187  SELECT t1.*, t2.*, t3.*, t4.*
22188  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22189  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22190  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22191  WHERE (t2.x>0 OR t2.x IS NULL)
22192  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22193} {
22194  30 130 230 330 130 30 230 30 330 30
22195  60 160 260 360 160 60 260 60 360 60
22196  90 190 290 390 190 90 290 90 390 90
22197}
22198do_execsql_test joinD-757 {
22199  SELECT t1.*, t2.*, t3.*, t4.*
22200  FROM t1 RIGHT JOIN t2 ON true
22201  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22202  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22203  WHERE t1.b=t2.b AND t2.x>0
22204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22205} {
22206  30 130 230 330 130 30 230 30 330 30
22207  60 160 260 360 160 60 260 60 360 60
22208  90 190 290 390 190 90 290 90 390 90
22209}
22210do_execsql_test joinD-758 {
22211  SELECT t1.*, t2.*, t3.*, t4.*
22212  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22213  RIGHT JOIN t3 ON t1.c=t3.c
22214  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22215  WHERE t3.y>0
22216  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22217} {
22218  30 130 230 330 130 30 230 30 330 30
22219  60 160 260 360 160 60 260 60 360 60
22220  90 190 290 390 190 90 290 90 390 90
22221}
22222do_execsql_test joinD-759 {
22223  SELECT t1.*, t2.*, t3.*, t4.*
22224  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22225  RIGHT JOIN t3 ON t1.c=t3.c
22226  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22227  WHERE t3.y>0 OR t3.y IS NULL
22228  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22229} {
22230  30 130 230 330 130 30 230 30 330 30
22231  60 160 260 360 160 60 260 60 360 60
22232  90 190 290 390 190 90 290 90 390 90
22233}
22234do_execsql_test joinD-760 {
22235  SELECT t1.*, t2.*, t3.*, t4.*
22236  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22237  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22238  INNER JOIN t4 ON t1.d=t4.d
22239  WHERE t4.z>0
22240  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22241} {
22242  30 130 230 330 130 30 230 30 330 30
22243  60 160 260 360 160 60 260 60 360 60
22244  90 190 290 390 190 90 290 90 390 90
22245}
22246do_execsql_test joinD-761 {
22247  SELECT t1.*, t2.*, t3.*, t4.*
22248  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22249  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22250  INNER JOIN t4 ON t1.d=t4.d
22251  WHERE t4.z IS NULL OR t4.z>0
22252  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22253} {
22254  30 130 230 330 130 30 230 30 330 30
22255  60 160 260 360 160 60 260 60 360 60
22256  90 190 290 390 190 90 290 90 390 90
22257}
22258do_execsql_test joinD-762 {
22259  SELECT t1.*, t2.*, t3.*, t4.*
22260  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22261  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22262  INNER JOIN t4 ON t1.d=t4.d
22263  WHERE t2.x>0 AND t4.z>0
22264  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22265} {
22266  30 130 230 330 130 30 230 30 330 30
22267  60 160 260 360 160 60 260 60 360 60
22268  90 190 290 390 190 90 290 90 390 90
22269}
22270do_execsql_test joinD-763 {
22271  SELECT t1.*, t2.*, t3.*, t4.*
22272  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22273  RIGHT JOIN t3 ON t1.c=t3.c
22274  INNER JOIN t4 ON t1.d=t4.d
22275  WHERE t4.z>0 AND t3.y>0
22276  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22277} {
22278  30 130 230 330 130 30 230 30 330 30
22279  60 160 260 360 160 60 260 60 360 60
22280  90 190 290 390 190 90 290 90 390 90
22281}
22282do_execsql_test joinD-764 {
22283  SELECT t1.*, t2.*, t3.*, t4.*
22284  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22285  RIGHT JOIN t3 ON t1.c=t3.c
22286  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22287  WHERE t2.x>0 AND t3.y>0
22288  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22289} {
22290  30 130 230 330 130 30 230 30 330 30
22291  60 160 260 360 160 60 260 60 360 60
22292  90 190 290 390 190 90 290 90 390 90
22293}
22294do_execsql_test joinD-765 {
22295  SELECT t1.*, t2.*, t3.*, t4.*
22296  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22297  RIGHT JOIN t3 ON t1.c=t3.c
22298  INNER JOIN t4 ON t1.d=t4.d
22299  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
22300  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22301} {
22302  30 130 230 330 130 30 230 30 330 30
22303  60 160 260 360 160 60 260 60 360 60
22304  90 190 290 390 190 90 290 90 390 90
22305}
22306do_execsql_test joinD-766 {
22307  SELECT t1.*, t2.*, t3.*, t4.*
22308  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22309  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22310  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22311  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22312} {
22313  30 130 230 330 130 30 230 30 330 30
22314  60 160 260 360 160 60 260 60 360 60
22315  90 190 290 390 190 90 290 90 390 90
22316}
22317do_execsql_test joinD-767 {
22318  SELECT t1.*, t2.*, t3.*, t4.*
22319  FROM t1 RIGHT JOIN t2 ON t2.x>0
22320  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22321  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22322  WHERE t1.b IS NOT DISTINCT FROM t2.b
22323  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22324} {
22325  30 130 230 330 130 30 230 30 330 30
22326  60 160 260 360 160 60 260 60 360 60
22327  90 190 290 390 190 90 290 90 390 90
22328}
22329do_execsql_test joinD-768 {
22330  SELECT t1.*, t2.*, t3.*, t4.*
22331  FROM t1 RIGHT JOIN t2 ON t2.x>0
22332  RIGHT JOIN t3 ON t3.y>0
22333  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22334  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
22335  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22336} {
22337  30 130 230 330 130 30 230 30 330 30
22338  60 160 260 360 160 60 260 60 360 60
22339  90 190 290 390 190 90 290 90 390 90
22340}
22341do_execsql_test joinD-769 {
22342  SELECT t1.*, t2.*, t3.*, t4.*
22343  FROM t1 RIGHT JOIN t2 ON t2.x>0
22344  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22345  INNER JOIN t4 ON t4.z>0
22346  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
22347  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22348} {
22349  30 130 230 330 130 30 230 30 330 30
22350  60 160 260 360 160 60 260 60 360 60
22351  90 190 290 390 190 90 290 90 390 90
22352}
22353do_execsql_test joinD-770 {
22354  SELECT t1.*, t2.*, t3.*, t4.*
22355  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
22356  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22357  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22358  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22359} {
22360  30 130 230 330 130 30 230 30 330 30
22361  60 160 260 360 160 60 260 60 360 60
22362  90 190 290 390 190 90 290 90 390 90
22363}
22364do_execsql_test joinD-771 {
22365  SELECT t1.*, t2.*, t3.*, t4.*
22366  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22367  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
22368  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22369  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22370} {
22371  30 130 230 330 130 30 230 30 330 30
22372  60 160 260 360 160 60 260 60 360 60
22373  90 190 290 390 190 90 290 90 390 90
22374}
22375do_execsql_test joinD-772 {
22376  SELECT t1.*, t2.*, t3.*, t4.*
22377  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22378  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22379  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22380  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22381} {
22382   6 106 206 306 106  6 206  6   -  -
22383  12 112 212 312 112 12 212 12   -  -
22384  18 118 218 318 118 18 218 18   -  -
22385  24 124 224 324 124 24 224 24   -  -
22386  30 130 230 330 130 30 230 30 330 30
22387  36 136 236 336 136 36 236 36   -  -
22388  42 142 242 342 142 42 242 42   -  -
22389  48 148 248 348 148 48 248 48   -  -
22390  54 154 254 354 154 54 254 54   -  -
22391  60 160 260 360 160 60 260 60 360 60
22392  66 166 266 366 166 66 266 66   -  -
22393  72 172 272 372 172 72 272 72   -  -
22394  78 178 278 378 178 78 278 78   -  -
22395  84 184 284 384 184 84 284 84   -  -
22396  90 190 290 390 190 90 290 90 390 90
22397   -   -   -   -   -  - 200  0   -  -
22398   -   -   -   -   -  - 203  3   -  -
22399   -   -   -   -   -  - 209  9   -  -
22400   -   -   -   -   -  - 215 15   -  -
22401   -   -   -   -   -  - 221 21   -  -
22402   -   -   -   -   -  - 227 27   -  -
22403   -   -   -   -   -  - 233 33   -  -
22404   -   -   -   -   -  - 239 39   -  -
22405   -   -   -   -   -  - 245 45   -  -
22406   -   -   -   -   -  - 251 51   -  -
22407   -   -   -   -   -  - 257 57   -  -
22408   -   -   -   -   -  - 263 63   -  -
22409   -   -   -   -   -  - 269 69   -  -
22410   -   -   -   -   -  - 275 75   -  -
22411   -   -   -   -   -  - 281 81   -  -
22412   -   -   -   -   -  - 287 87   -  -
22413   -   -   -   -   -  - 293 93   -  -
22414}
22415do_execsql_test joinD-773 {
22416  SELECT t1.*, t2.*, t3.*, t4.*
22417  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22418  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22419  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22420  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22421} {
22422   6 106 206 306 106  6 206  6   -  -
22423  12 112 212 312 112 12 212 12   -  -
22424  18 118 218 318 118 18 218 18   -  -
22425  24 124 224 324 124 24 224 24   -  -
22426  30 130 230 330 130 30 230 30 330 30
22427  36 136 236 336 136 36 236 36   -  -
22428  42 142 242 342 142 42 242 42   -  -
22429  48 148 248 348 148 48 248 48   -  -
22430  54 154 254 354 154 54 254 54   -  -
22431  60 160 260 360 160 60 260 60 360 60
22432  66 166 266 366 166 66 266 66   -  -
22433  72 172 272 372 172 72 272 72   -  -
22434  78 178 278 378 178 78 278 78   -  -
22435  84 184 284 384 184 84 284 84   -  -
22436  90 190 290 390 190 90 290 90 390 90
22437   -   -   -   -   -  - 200  0   -  -
22438   -   -   -   -   -  - 203  3   -  -
22439   -   -   -   -   -  - 209  9   -  -
22440   -   -   -   -   -  - 215 15   -  -
22441   -   -   -   -   -  - 221 21   -  -
22442   -   -   -   -   -  - 227 27   -  -
22443   -   -   -   -   -  - 233 33   -  -
22444   -   -   -   -   -  - 239 39   -  -
22445   -   -   -   -   -  - 245 45   -  -
22446   -   -   -   -   -  - 251 51   -  -
22447   -   -   -   -   -  - 257 57   -  -
22448   -   -   -   -   -  - 263 63   -  -
22449   -   -   -   -   -  - 269 69   -  -
22450   -   -   -   -   -  - 275 75   -  -
22451   -   -   -   -   -  - 281 81   -  -
22452   -   -   -   -   -  - 287 87   -  -
22453   -   -   -   -   -  - 293 93   -  -
22454}
22455do_execsql_test joinD-774 {
22456  SELECT t1.*, t2.*, t3.*, t4.*
22457  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22458  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22459  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22460  WHERE t2.x>0
22461  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22462} {
22463   6 106 206 306 106  6 206  6   -  -
22464  12 112 212 312 112 12 212 12   -  -
22465  18 118 218 318 118 18 218 18   -  -
22466  24 124 224 324 124 24 224 24   -  -
22467  30 130 230 330 130 30 230 30 330 30
22468  36 136 236 336 136 36 236 36   -  -
22469  42 142 242 342 142 42 242 42   -  -
22470  48 148 248 348 148 48 248 48   -  -
22471  54 154 254 354 154 54 254 54   -  -
22472  60 160 260 360 160 60 260 60 360 60
22473  66 166 266 366 166 66 266 66   -  -
22474  72 172 272 372 172 72 272 72   -  -
22475  78 178 278 378 178 78 278 78   -  -
22476  84 184 284 384 184 84 284 84   -  -
22477  90 190 290 390 190 90 290 90 390 90
22478}
22479do_execsql_test joinD-775 {
22480  SELECT t1.*, t2.*, t3.*, t4.*
22481  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22482  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22483  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22484  WHERE (t2.x>0 OR t2.x IS NULL)
22485  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22486} {
22487   6 106 206 306 106  6 206  6   -  -
22488  12 112 212 312 112 12 212 12   -  -
22489  18 118 218 318 118 18 218 18   -  -
22490  24 124 224 324 124 24 224 24   -  -
22491  30 130 230 330 130 30 230 30 330 30
22492  36 136 236 336 136 36 236 36   -  -
22493  42 142 242 342 142 42 242 42   -  -
22494  48 148 248 348 148 48 248 48   -  -
22495  54 154 254 354 154 54 254 54   -  -
22496  60 160 260 360 160 60 260 60 360 60
22497  66 166 266 366 166 66 266 66   -  -
22498  72 172 272 372 172 72 272 72   -  -
22499  78 178 278 378 178 78 278 78   -  -
22500  84 184 284 384 184 84 284 84   -  -
22501  90 190 290 390 190 90 290 90 390 90
22502   -   -   -   -   -  - 200  0   -  -
22503   -   -   -   -   -  - 203  3   -  -
22504   -   -   -   -   -  - 209  9   -  -
22505   -   -   -   -   -  - 215 15   -  -
22506   -   -   -   -   -  - 221 21   -  -
22507   -   -   -   -   -  - 227 27   -  -
22508   -   -   -   -   -  - 233 33   -  -
22509   -   -   -   -   -  - 239 39   -  -
22510   -   -   -   -   -  - 245 45   -  -
22511   -   -   -   -   -  - 251 51   -  -
22512   -   -   -   -   -  - 257 57   -  -
22513   -   -   -   -   -  - 263 63   -  -
22514   -   -   -   -   -  - 269 69   -  -
22515   -   -   -   -   -  - 275 75   -  -
22516   -   -   -   -   -  - 281 81   -  -
22517   -   -   -   -   -  - 287 87   -  -
22518   -   -   -   -   -  - 293 93   -  -
22519}
22520do_execsql_test joinD-776 {
22521  SELECT t1.*, t2.*, t3.*, t4.*
22522  FROM t1 RIGHT JOIN t2 ON true
22523  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22524  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22525  WHERE t1.b=t2.b AND t2.x>0
22526  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22527} {
22528   6 106 206 306 106  6 206  6   -  -
22529  12 112 212 312 112 12 212 12   -  -
22530  18 118 218 318 118 18 218 18   -  -
22531  24 124 224 324 124 24 224 24   -  -
22532  30 130 230 330 130 30 230 30 330 30
22533  36 136 236 336 136 36 236 36   -  -
22534  42 142 242 342 142 42 242 42   -  -
22535  48 148 248 348 148 48 248 48   -  -
22536  54 154 254 354 154 54 254 54   -  -
22537  60 160 260 360 160 60 260 60 360 60
22538  66 166 266 366 166 66 266 66   -  -
22539  72 172 272 372 172 72 272 72   -  -
22540  78 178 278 378 178 78 278 78   -  -
22541  84 184 284 384 184 84 284 84   -  -
22542  90 190 290 390 190 90 290 90 390 90
22543}
22544do_execsql_test joinD-777 {
22545  SELECT t1.*, t2.*, t3.*, t4.*
22546  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22547  RIGHT JOIN t3 ON t1.c=t3.c
22548  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22549  WHERE t3.y>0
22550  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22551} {
22552   6 106 206 306 106  6 206  6   -  -
22553  12 112 212 312 112 12 212 12   -  -
22554  18 118 218 318 118 18 218 18   -  -
22555  24 124 224 324 124 24 224 24   -  -
22556  30 130 230 330 130 30 230 30 330 30
22557  36 136 236 336 136 36 236 36   -  -
22558  42 142 242 342 142 42 242 42   -  -
22559  48 148 248 348 148 48 248 48   -  -
22560  54 154 254 354 154 54 254 54   -  -
22561  60 160 260 360 160 60 260 60 360 60
22562  66 166 266 366 166 66 266 66   -  -
22563  72 172 272 372 172 72 272 72   -  -
22564  78 178 278 378 178 78 278 78   -  -
22565  84 184 284 384 184 84 284 84   -  -
22566  90 190 290 390 190 90 290 90 390 90
22567   -   -   -   -   -  - 203  3   -  -
22568   -   -   -   -   -  - 209  9   -  -
22569   -   -   -   -   -  - 215 15   -  -
22570   -   -   -   -   -  - 221 21   -  -
22571   -   -   -   -   -  - 227 27   -  -
22572   -   -   -   -   -  - 233 33   -  -
22573   -   -   -   -   -  - 239 39   -  -
22574   -   -   -   -   -  - 245 45   -  -
22575   -   -   -   -   -  - 251 51   -  -
22576   -   -   -   -   -  - 257 57   -  -
22577   -   -   -   -   -  - 263 63   -  -
22578   -   -   -   -   -  - 269 69   -  -
22579   -   -   -   -   -  - 275 75   -  -
22580   -   -   -   -   -  - 281 81   -  -
22581   -   -   -   -   -  - 287 87   -  -
22582   -   -   -   -   -  - 293 93   -  -
22583}
22584do_execsql_test joinD-778 {
22585  SELECT t1.*, t2.*, t3.*, t4.*
22586  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22587  RIGHT JOIN t3 ON t1.c=t3.c
22588  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22589  WHERE t3.y>0 OR t3.y IS NULL
22590  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22591} {
22592   6 106 206 306 106  6 206  6   -  -
22593  12 112 212 312 112 12 212 12   -  -
22594  18 118 218 318 118 18 218 18   -  -
22595  24 124 224 324 124 24 224 24   -  -
22596  30 130 230 330 130 30 230 30 330 30
22597  36 136 236 336 136 36 236 36   -  -
22598  42 142 242 342 142 42 242 42   -  -
22599  48 148 248 348 148 48 248 48   -  -
22600  54 154 254 354 154 54 254 54   -  -
22601  60 160 260 360 160 60 260 60 360 60
22602  66 166 266 366 166 66 266 66   -  -
22603  72 172 272 372 172 72 272 72   -  -
22604  78 178 278 378 178 78 278 78   -  -
22605  84 184 284 384 184 84 284 84   -  -
22606  90 190 290 390 190 90 290 90 390 90
22607   -   -   -   -   -  - 203  3   -  -
22608   -   -   -   -   -  - 209  9   -  -
22609   -   -   -   -   -  - 215 15   -  -
22610   -   -   -   -   -  - 221 21   -  -
22611   -   -   -   -   -  - 227 27   -  -
22612   -   -   -   -   -  - 233 33   -  -
22613   -   -   -   -   -  - 239 39   -  -
22614   -   -   -   -   -  - 245 45   -  -
22615   -   -   -   -   -  - 251 51   -  -
22616   -   -   -   -   -  - 257 57   -  -
22617   -   -   -   -   -  - 263 63   -  -
22618   -   -   -   -   -  - 269 69   -  -
22619   -   -   -   -   -  - 275 75   -  -
22620   -   -   -   -   -  - 281 81   -  -
22621   -   -   -   -   -  - 287 87   -  -
22622   -   -   -   -   -  - 293 93   -  -
22623}
22624do_execsql_test joinD-779 {
22625  SELECT t1.*, t2.*, t3.*, t4.*
22626  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22627  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22628  LEFT JOIN t4 ON t1.d=t4.d
22629  WHERE t4.z>0
22630  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22631} {
22632  30 130 230 330 130 30 230 30 330 30
22633  60 160 260 360 160 60 260 60 360 60
22634  90 190 290 390 190 90 290 90 390 90
22635}
22636do_execsql_test joinD-780 {
22637  SELECT t1.*, t2.*, t3.*, t4.*
22638  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22639  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22640  LEFT JOIN t4 ON t1.d=t4.d
22641  WHERE t4.z IS NULL OR t4.z>0
22642  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22643} {
22644   6 106 206 306 106  6 206  6   -  -
22645  12 112 212 312 112 12 212 12   -  -
22646  18 118 218 318 118 18 218 18   -  -
22647  24 124 224 324 124 24 224 24   -  -
22648  30 130 230 330 130 30 230 30 330 30
22649  36 136 236 336 136 36 236 36   -  -
22650  42 142 242 342 142 42 242 42   -  -
22651  48 148 248 348 148 48 248 48   -  -
22652  54 154 254 354 154 54 254 54   -  -
22653  60 160 260 360 160 60 260 60 360 60
22654  66 166 266 366 166 66 266 66   -  -
22655  72 172 272 372 172 72 272 72   -  -
22656  78 178 278 378 178 78 278 78   -  -
22657  84 184 284 384 184 84 284 84   -  -
22658  90 190 290 390 190 90 290 90 390 90
22659   -   -   -   -   -  - 200  0   -  -
22660   -   -   -   -   -  - 203  3   -  -
22661   -   -   -   -   -  - 209  9   -  -
22662   -   -   -   -   -  - 215 15   -  -
22663   -   -   -   -   -  - 221 21   -  -
22664   -   -   -   -   -  - 227 27   -  -
22665   -   -   -   -   -  - 233 33   -  -
22666   -   -   -   -   -  - 239 39   -  -
22667   -   -   -   -   -  - 245 45   -  -
22668   -   -   -   -   -  - 251 51   -  -
22669   -   -   -   -   -  - 257 57   -  -
22670   -   -   -   -   -  - 263 63   -  -
22671   -   -   -   -   -  - 269 69   -  -
22672   -   -   -   -   -  - 275 75   -  -
22673   -   -   -   -   -  - 281 81   -  -
22674   -   -   -   -   -  - 287 87   -  -
22675   -   -   -   -   -  - 293 93   -  -
22676}
22677do_execsql_test joinD-781 {
22678  SELECT t1.*, t2.*, t3.*, t4.*
22679  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22680  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22681  LEFT JOIN t4 ON t1.d=t4.d
22682  WHERE t2.x>0 AND t4.z>0
22683  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22684} {
22685  30 130 230 330 130 30 230 30 330 30
22686  60 160 260 360 160 60 260 60 360 60
22687  90 190 290 390 190 90 290 90 390 90
22688}
22689do_execsql_test joinD-782 {
22690  SELECT t1.*, t2.*, t3.*, t4.*
22691  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22692  RIGHT JOIN t3 ON t1.c=t3.c
22693  LEFT JOIN t4 ON t1.d=t4.d
22694  WHERE t4.z>0 AND t3.y>0
22695  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22696} {
22697  30 130 230 330 130 30 230 30 330 30
22698  60 160 260 360 160 60 260 60 360 60
22699  90 190 290 390 190 90 290 90 390 90
22700}
22701do_execsql_test joinD-783 {
22702  SELECT t1.*, t2.*, t3.*, t4.*
22703  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22704  RIGHT JOIN t3 ON t1.c=t3.c
22705  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22706  WHERE t2.x>0 AND t3.y>0
22707  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22708} {
22709   6 106 206 306 106  6 206  6   -  -
22710  12 112 212 312 112 12 212 12   -  -
22711  18 118 218 318 118 18 218 18   -  -
22712  24 124 224 324 124 24 224 24   -  -
22713  30 130 230 330 130 30 230 30 330 30
22714  36 136 236 336 136 36 236 36   -  -
22715  42 142 242 342 142 42 242 42   -  -
22716  48 148 248 348 148 48 248 48   -  -
22717  54 154 254 354 154 54 254 54   -  -
22718  60 160 260 360 160 60 260 60 360 60
22719  66 166 266 366 166 66 266 66   -  -
22720  72 172 272 372 172 72 272 72   -  -
22721  78 178 278 378 178 78 278 78   -  -
22722  84 184 284 384 184 84 284 84   -  -
22723  90 190 290 390 190 90 290 90 390 90
22724}
22725do_execsql_test joinD-784 {
22726  SELECT t1.*, t2.*, t3.*, t4.*
22727  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22728  RIGHT JOIN t3 ON t1.c=t3.c
22729  LEFT JOIN t4 ON t1.d=t4.d
22730  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
22731  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22732} {
22733  30 130 230 330 130 30 230 30 330 30
22734  60 160 260 360 160 60 260 60 360 60
22735  90 190 290 390 190 90 290 90 390 90
22736}
22737do_execsql_test joinD-785 {
22738  SELECT t1.*, t2.*, t3.*, t4.*
22739  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22740  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22741  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22742  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22743} {
22744   6 106 206 306 106  6 206  6   -  -
22745  12 112 212 312 112 12 212 12   -  -
22746  18 118 218 318 118 18 218 18   -  -
22747  24 124 224 324 124 24 224 24   -  -
22748  30 130 230 330 130 30 230 30 330 30
22749  36 136 236 336 136 36 236 36   -  -
22750  42 142 242 342 142 42 242 42   -  -
22751  48 148 248 348 148 48 248 48   -  -
22752  54 154 254 354 154 54 254 54   -  -
22753  60 160 260 360 160 60 260 60 360 60
22754  66 166 266 366 166 66 266 66   -  -
22755  72 172 272 372 172 72 272 72   -  -
22756  78 178 278 378 178 78 278 78   -  -
22757  84 184 284 384 184 84 284 84   -  -
22758  90 190 290 390 190 90 290 90 390 90
22759   -   -   -   -   -  - 200  0   -  -
22760   -   -   -   -   -  - 203  3   -  -
22761   -   -   -   -   -  - 209  9   -  -
22762   -   -   -   -   -  - 215 15   -  -
22763   -   -   -   -   -  - 221 21   -  -
22764   -   -   -   -   -  - 227 27   -  -
22765   -   -   -   -   -  - 233 33   -  -
22766   -   -   -   -   -  - 239 39   -  -
22767   -   -   -   -   -  - 245 45   -  -
22768   -   -   -   -   -  - 251 51   -  -
22769   -   -   -   -   -  - 257 57   -  -
22770   -   -   -   -   -  - 263 63   -  -
22771   -   -   -   -   -  - 269 69   -  -
22772   -   -   -   -   -  - 275 75   -  -
22773   -   -   -   -   -  - 281 81   -  -
22774   -   -   -   -   -  - 287 87   -  -
22775   -   -   -   -   -  - 293 93   -  -
22776}
22777do_execsql_test joinD-786 {
22778  SELECT t1.*, t2.*, t3.*, t4.*
22779  FROM t1 RIGHT JOIN t2 ON t2.x>0
22780  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22781  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22782  WHERE t1.b IS NOT DISTINCT FROM t2.b
22783  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22784} {
22785   6 106 206 306 106  6 206  6   -  -
22786  12 112 212 312 112 12 212 12   -  -
22787  18 118 218 318 118 18 218 18   -  -
22788  24 124 224 324 124 24 224 24   -  -
22789  30 130 230 330 130 30 230 30 330 30
22790  36 136 236 336 136 36 236 36   -  -
22791  42 142 242 342 142 42 242 42   -  -
22792  48 148 248 348 148 48 248 48   -  -
22793  54 154 254 354 154 54 254 54   -  -
22794  60 160 260 360 160 60 260 60 360 60
22795  66 166 266 366 166 66 266 66   -  -
22796  72 172 272 372 172 72 272 72   -  -
22797  78 178 278 378 178 78 278 78   -  -
22798  84 184 284 384 184 84 284 84   -  -
22799  90 190 290 390 190 90 290 90 390 90
22800   -   -   -   -   -  - 200  0   -  -
22801}
22802do_execsql_test joinD-787 {
22803  SELECT t1.*, t2.*, t3.*, t4.*
22804  FROM t1 RIGHT JOIN t2 ON t2.x>0
22805  RIGHT JOIN t3 ON t3.y>0
22806  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22807  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
22808  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22809} {
22810   6 106 206 306 106  6 206  6   -  -
22811  12 112 212 312 112 12 212 12   -  -
22812  18 118 218 318 118 18 218 18   -  -
22813  24 124 224 324 124 24 224 24   -  -
22814  30 130 230 330 130 30 230 30 330 30
22815  36 136 236 336 136 36 236 36   -  -
22816  42 142 242 342 142 42 242 42   -  -
22817  48 148 248 348 148 48 248 48   -  -
22818  54 154 254 354 154 54 254 54   -  -
22819  60 160 260 360 160 60 260 60 360 60
22820  66 166 266 366 166 66 266 66   -  -
22821  72 172 272 372 172 72 272 72   -  -
22822  78 178 278 378 178 78 278 78   -  -
22823  84 184 284 384 184 84 284 84   -  -
22824  90 190 290 390 190 90 290 90 390 90
22825}
22826do_execsql_test joinD-788 {
22827  SELECT t1.*, t2.*, t3.*, t4.*
22828  FROM t1 RIGHT JOIN t2 ON t2.x>0
22829  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22830  LEFT JOIN t4 ON t4.z>0
22831  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
22832  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22833} {
22834  30 130 230 330 130 30 230 30 330 30
22835  60 160 260 360 160 60 260 60 360 60
22836  90 190 290 390 190 90 290 90 390 90
22837}
22838do_execsql_test joinD-789 {
22839  SELECT t1.*, t2.*, t3.*, t4.*
22840  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
22841  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22842  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22843  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22844} {
22845   6 106 206 306 106  6 206  6   -  -
22846  12 112 212 312 112 12 212 12   -  -
22847  18 118 218 318 118 18 218 18   -  -
22848  24 124 224 324 124 24 224 24   -  -
22849  30 130 230 330 130 30 230 30 330 30
22850  36 136 236 336 136 36 236 36   -  -
22851  42 142 242 342 142 42 242 42   -  -
22852  48 148 248 348 148 48 248 48   -  -
22853  54 154 254 354 154 54 254 54   -  -
22854  60 160 260 360 160 60 260 60 360 60
22855  66 166 266 366 166 66 266 66   -  -
22856  72 172 272 372 172 72 272 72   -  -
22857  78 178 278 378 178 78 278 78   -  -
22858  84 184 284 384 184 84 284 84   -  -
22859  90 190 290 390 190 90 290 90 390 90
22860   -   -   -   -   -  - 200  0   -  -
22861   -   -   -   -   -  - 203  3   -  -
22862   -   -   -   -   -  - 209  9   -  -
22863   -   -   -   -   -  - 215 15   -  -
22864   -   -   -   -   -  - 221 21   -  -
22865   -   -   -   -   -  - 227 27   -  -
22866   -   -   -   -   -  - 233 33   -  -
22867   -   -   -   -   -  - 239 39   -  -
22868   -   -   -   -   -  - 245 45   -  -
22869   -   -   -   -   -  - 251 51   -  -
22870   -   -   -   -   -  - 257 57   -  -
22871   -   -   -   -   -  - 263 63   -  -
22872   -   -   -   -   -  - 269 69   -  -
22873   -   -   -   -   -  - 275 75   -  -
22874   -   -   -   -   -  - 281 81   -  -
22875   -   -   -   -   -  - 287 87   -  -
22876   -   -   -   -   -  - 293 93   -  -
22877}
22878do_execsql_test joinD-790 {
22879  SELECT t1.*, t2.*, t3.*, t4.*
22880  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22881  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
22882  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22883  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22884} {
22885   6 106 206 306 106  6 206  6   -  -
22886  12 112 212 312 112 12 212 12   -  -
22887  18 118 218 318 118 18 218 18   -  -
22888  24 124 224 324 124 24 224 24   -  -
22889  30 130 230 330 130 30 230 30 330 30
22890  36 136 236 336 136 36 236 36   -  -
22891  42 142 242 342 142 42 242 42   -  -
22892  48 148 248 348 148 48 248 48   -  -
22893  54 154 254 354 154 54 254 54   -  -
22894  60 160 260 360 160 60 260 60 360 60
22895  66 166 266 366 166 66 266 66   -  -
22896  72 172 272 372 172 72 272 72   -  -
22897  78 178 278 378 178 78 278 78   -  -
22898  84 184 284 384 184 84 284 84   -  -
22899  90 190 290 390 190 90 290 90 390 90
22900   -   -   -   -   -  - 200  0   -  -
22901   -   -   -   -   -  - 203  3   -  -
22902   -   -   -   -   -  - 209  9   -  -
22903   -   -   -   -   -  - 215 15   -  -
22904   -   -   -   -   -  - 221 21   -  -
22905   -   -   -   -   -  - 227 27   -  -
22906   -   -   -   -   -  - 233 33   -  -
22907   -   -   -   -   -  - 239 39   -  -
22908   -   -   -   -   -  - 245 45   -  -
22909   -   -   -   -   -  - 251 51   -  -
22910   -   -   -   -   -  - 257 57   -  -
22911   -   -   -   -   -  - 263 63   -  -
22912   -   -   -   -   -  - 269 69   -  -
22913   -   -   -   -   -  - 275 75   -  -
22914   -   -   -   -   -  - 281 81   -  -
22915   -   -   -   -   -  - 287 87   -  -
22916   -   -   -   -   -  - 293 93   -  -
22917}
22918do_execsql_test joinD-791 {
22919  SELECT t1.*, t2.*, t3.*, t4.*
22920  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22921  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22922  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22923  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22924} {
22925  30 130 230 330 130 30 230 30 330 30
22926  60 160 260 360 160 60 260 60 360 60
22927  90 190 290 390 190 90 290 90 390 90
22928   -   -   -   -   -  -   -  - 300  0
22929   -   -   -   -   -  -   -  - 305  5
22930   -   -   -   -   -  -   -  - 310 10
22931   -   -   -   -   -  -   -  - 315 15
22932   -   -   -   -   -  -   -  - 320 20
22933   -   -   -   -   -  -   -  - 325 25
22934   -   -   -   -   -  -   -  - 335 35
22935   -   -   -   -   -  -   -  - 340 40
22936   -   -   -   -   -  -   -  - 345 45
22937   -   -   -   -   -  -   -  - 350 50
22938   -   -   -   -   -  -   -  - 355 55
22939   -   -   -   -   -  -   -  - 365 65
22940   -   -   -   -   -  -   -  - 370 70
22941   -   -   -   -   -  -   -  - 375 75
22942   -   -   -   -   -  -   -  - 380 80
22943   -   -   -   -   -  -   -  - 385 85
22944   -   -   -   -   -  -   -  - 395 95
22945}
22946do_execsql_test joinD-792 {
22947  SELECT t1.*, t2.*, t3.*, t4.*
22948  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22949  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22950  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22951  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22952} {
22953  30 130 230 330 130 30 230 30 330 30
22954  60 160 260 360 160 60 260 60 360 60
22955  90 190 290 390 190 90 290 90 390 90
22956   -   -   -   -   -  -   -  - 300  0
22957   -   -   -   -   -  -   -  - 305  5
22958   -   -   -   -   -  -   -  - 310 10
22959   -   -   -   -   -  -   -  - 315 15
22960   -   -   -   -   -  -   -  - 320 20
22961   -   -   -   -   -  -   -  - 325 25
22962   -   -   -   -   -  -   -  - 335 35
22963   -   -   -   -   -  -   -  - 340 40
22964   -   -   -   -   -  -   -  - 345 45
22965   -   -   -   -   -  -   -  - 350 50
22966   -   -   -   -   -  -   -  - 355 55
22967   -   -   -   -   -  -   -  - 365 65
22968   -   -   -   -   -  -   -  - 370 70
22969   -   -   -   -   -  -   -  - 375 75
22970   -   -   -   -   -  -   -  - 380 80
22971   -   -   -   -   -  -   -  - 385 85
22972   -   -   -   -   -  -   -  - 395 95
22973}
22974do_execsql_test joinD-793 {
22975  SELECT t1.*, t2.*, t3.*, t4.*
22976  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22977  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22978  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22979  WHERE t2.x>0
22980  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22981} {
22982  30 130 230 330 130 30 230 30 330 30
22983  60 160 260 360 160 60 260 60 360 60
22984  90 190 290 390 190 90 290 90 390 90
22985}
22986do_execsql_test joinD-794 {
22987  SELECT t1.*, t2.*, t3.*, t4.*
22988  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22989  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22990  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22991  WHERE (t2.x>0 OR t2.x IS NULL)
22992  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22993} {
22994  30 130 230 330 130 30 230 30 330 30
22995  60 160 260 360 160 60 260 60 360 60
22996  90 190 290 390 190 90 290 90 390 90
22997   -   -   -   -   -  -   -  - 300  0
22998   -   -   -   -   -  -   -  - 305  5
22999   -   -   -   -   -  -   -  - 310 10
23000   -   -   -   -   -  -   -  - 315 15
23001   -   -   -   -   -  -   -  - 320 20
23002   -   -   -   -   -  -   -  - 325 25
23003   -   -   -   -   -  -   -  - 335 35
23004   -   -   -   -   -  -   -  - 340 40
23005   -   -   -   -   -  -   -  - 345 45
23006   -   -   -   -   -  -   -  - 350 50
23007   -   -   -   -   -  -   -  - 355 55
23008   -   -   -   -   -  -   -  - 365 65
23009   -   -   -   -   -  -   -  - 370 70
23010   -   -   -   -   -  -   -  - 375 75
23011   -   -   -   -   -  -   -  - 380 80
23012   -   -   -   -   -  -   -  - 385 85
23013   -   -   -   -   -  -   -  - 395 95
23014}
23015do_execsql_test joinD-795 {
23016  SELECT t1.*, t2.*, t3.*, t4.*
23017  FROM t1 RIGHT JOIN t2 ON true
23018  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23019  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23020  WHERE t1.b=t2.b AND t2.x>0
23021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23022} {
23023  30 130 230 330 130 30 230 30 330 30
23024  60 160 260 360 160 60 260 60 360 60
23025  90 190 290 390 190 90 290 90 390 90
23026}
23027do_execsql_test joinD-796 {
23028  SELECT t1.*, t2.*, t3.*, t4.*
23029  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23030  RIGHT JOIN t3 ON t1.c=t3.c
23031  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23032  WHERE t3.y>0
23033  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23034} {
23035  30 130 230 330 130 30 230 30 330 30
23036  60 160 260 360 160 60 260 60 360 60
23037  90 190 290 390 190 90 290 90 390 90
23038}
23039do_execsql_test joinD-797 {
23040  SELECT t1.*, t2.*, t3.*, t4.*
23041  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23042  RIGHT JOIN t3 ON t1.c=t3.c
23043  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23044  WHERE t3.y>0 OR t3.y IS NULL
23045  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23046} {
23047  30 130 230 330 130 30 230 30 330 30
23048  60 160 260 360 160 60 260 60 360 60
23049  90 190 290 390 190 90 290 90 390 90
23050   -   -   -   -   -  -   -  - 300  0
23051   -   -   -   -   -  -   -  - 305  5
23052   -   -   -   -   -  -   -  - 310 10
23053   -   -   -   -   -  -   -  - 315 15
23054   -   -   -   -   -  -   -  - 320 20
23055   -   -   -   -   -  -   -  - 325 25
23056   -   -   -   -   -  -   -  - 335 35
23057   -   -   -   -   -  -   -  - 340 40
23058   -   -   -   -   -  -   -  - 345 45
23059   -   -   -   -   -  -   -  - 350 50
23060   -   -   -   -   -  -   -  - 355 55
23061   -   -   -   -   -  -   -  - 365 65
23062   -   -   -   -   -  -   -  - 370 70
23063   -   -   -   -   -  -   -  - 375 75
23064   -   -   -   -   -  -   -  - 380 80
23065   -   -   -   -   -  -   -  - 385 85
23066   -   -   -   -   -  -   -  - 395 95
23067}
23068do_execsql_test joinD-798 {
23069  SELECT t1.*, t2.*, t3.*, t4.*
23070  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23071  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23072  RIGHT JOIN t4 ON t1.d=t4.d
23073  WHERE t4.z>0
23074  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23075} {
23076  30 130 230 330 130 30 230 30 330 30
23077  60 160 260 360 160 60 260 60 360 60
23078  90 190 290 390 190 90 290 90 390 90
23079   -   -   -   -   -  -   -  - 305  5
23080   -   -   -   -   -  -   -  - 310 10
23081   -   -   -   -   -  -   -  - 315 15
23082   -   -   -   -   -  -   -  - 320 20
23083   -   -   -   -   -  -   -  - 325 25
23084   -   -   -   -   -  -   -  - 335 35
23085   -   -   -   -   -  -   -  - 340 40
23086   -   -   -   -   -  -   -  - 345 45
23087   -   -   -   -   -  -   -  - 350 50
23088   -   -   -   -   -  -   -  - 355 55
23089   -   -   -   -   -  -   -  - 365 65
23090   -   -   -   -   -  -   -  - 370 70
23091   -   -   -   -   -  -   -  - 375 75
23092   -   -   -   -   -  -   -  - 380 80
23093   -   -   -   -   -  -   -  - 385 85
23094   -   -   -   -   -  -   -  - 395 95
23095}
23096do_execsql_test joinD-799 {
23097  SELECT t1.*, t2.*, t3.*, t4.*
23098  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23099  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23100  RIGHT JOIN t4 ON t1.d=t4.d
23101  WHERE t4.z IS NULL OR t4.z>0
23102  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23103} {
23104  30 130 230 330 130 30 230 30 330 30
23105  60 160 260 360 160 60 260 60 360 60
23106  90 190 290 390 190 90 290 90 390 90
23107   -   -   -   -   -  -   -  - 305  5
23108   -   -   -   -   -  -   -  - 310 10
23109   -   -   -   -   -  -   -  - 315 15
23110   -   -   -   -   -  -   -  - 320 20
23111   -   -   -   -   -  -   -  - 325 25
23112   -   -   -   -   -  -   -  - 335 35
23113   -   -   -   -   -  -   -  - 340 40
23114   -   -   -   -   -  -   -  - 345 45
23115   -   -   -   -   -  -   -  - 350 50
23116   -   -   -   -   -  -   -  - 355 55
23117   -   -   -   -   -  -   -  - 365 65
23118   -   -   -   -   -  -   -  - 370 70
23119   -   -   -   -   -  -   -  - 375 75
23120   -   -   -   -   -  -   -  - 380 80
23121   -   -   -   -   -  -   -  - 385 85
23122   -   -   -   -   -  -   -  - 395 95
23123}
23124do_execsql_test joinD-800 {
23125  SELECT t1.*, t2.*, t3.*, t4.*
23126  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23127  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23128  RIGHT JOIN t4 ON t1.d=t4.d
23129  WHERE t2.x>0 AND t4.z>0
23130  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23131} {
23132  30 130 230 330 130 30 230 30 330 30
23133  60 160 260 360 160 60 260 60 360 60
23134  90 190 290 390 190 90 290 90 390 90
23135}
23136do_execsql_test joinD-801 {
23137  SELECT t1.*, t2.*, t3.*, t4.*
23138  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23139  RIGHT JOIN t3 ON t1.c=t3.c
23140  RIGHT JOIN t4 ON t1.d=t4.d
23141  WHERE t4.z>0 AND t3.y>0
23142  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23143} {
23144  30 130 230 330 130 30 230 30 330 30
23145  60 160 260 360 160 60 260 60 360 60
23146  90 190 290 390 190 90 290 90 390 90
23147}
23148do_execsql_test joinD-802 {
23149  SELECT t1.*, t2.*, t3.*, t4.*
23150  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23151  RIGHT JOIN t3 ON t1.c=t3.c
23152  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23153  WHERE t2.x>0 AND t3.y>0
23154  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23155} {
23156  30 130 230 330 130 30 230 30 330 30
23157  60 160 260 360 160 60 260 60 360 60
23158  90 190 290 390 190 90 290 90 390 90
23159}
23160do_execsql_test joinD-803 {
23161  SELECT t1.*, t2.*, t3.*, t4.*
23162  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23163  RIGHT JOIN t3 ON t1.c=t3.c
23164  RIGHT JOIN t4 ON t1.d=t4.d
23165  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
23166  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23167} {
23168  30 130 230 330 130 30 230 30 330 30
23169  60 160 260 360 160 60 260 60 360 60
23170  90 190 290 390 190 90 290 90 390 90
23171}
23172do_execsql_test joinD-804 {
23173  SELECT t1.*, t2.*, t3.*, t4.*
23174  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
23175  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23176  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
23177  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23178} {
23179  30 130 230 330 130 30 230 30 330 30
23180  60 160 260 360 160 60 260 60 360 60
23181  90 190 290 390 190 90 290 90 390 90
23182   -   -   -   -   -  -   -  - 300  0
23183   -   -   -   -   -  -   -  - 305  5
23184   -   -   -   -   -  -   -  - 310 10
23185   -   -   -   -   -  -   -  - 315 15
23186   -   -   -   -   -  -   -  - 320 20
23187   -   -   -   -   -  -   -  - 325 25
23188   -   -   -   -   -  -   -  - 335 35
23189   -   -   -   -   -  -   -  - 340 40
23190   -   -   -   -   -  -   -  - 345 45
23191   -   -   -   -   -  -   -  - 350 50
23192   -   -   -   -   -  -   -  - 355 55
23193   -   -   -   -   -  -   -  - 365 65
23194   -   -   -   -   -  -   -  - 370 70
23195   -   -   -   -   -  -   -  - 375 75
23196   -   -   -   -   -  -   -  - 380 80
23197   -   -   -   -   -  -   -  - 385 85
23198   -   -   -   -   -  -   -  - 395 95
23199}
23200do_execsql_test joinD-805 {
23201  SELECT t1.*, t2.*, t3.*, t4.*
23202  FROM t1 RIGHT JOIN t2 ON t2.x>0
23203  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23204  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
23205  WHERE t1.b IS NOT DISTINCT FROM t2.b
23206  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23207} {
23208  30 130 230 330 130 30 230 30 330 30
23209  60 160 260 360 160 60 260 60 360 60
23210  90 190 290 390 190 90 290 90 390 90
23211   -   -   -   -   -  -   -  - 300  0
23212   -   -   -   -   -  -   -  - 305  5
23213   -   -   -   -   -  -   -  - 310 10
23214   -   -   -   -   -  -   -  - 320 20
23215   -   -   -   -   -  -   -  - 325 25
23216   -   -   -   -   -  -   -  - 335 35
23217   -   -   -   -   -  -   -  - 340 40
23218   -   -   -   -   -  -   -  - 350 50
23219   -   -   -   -   -  -   -  - 355 55
23220   -   -   -   -   -  -   -  - 365 65
23221   -   -   -   -   -  -   -  - 370 70
23222   -   -   -   -   -  -   -  - 380 80
23223   -   -   -   -   -  -   -  - 385 85
23224   -   -   -   -   -  -   -  - 395 95
23225}
23226do_execsql_test joinD-806 {
23227  SELECT t1.*, t2.*, t3.*, t4.*
23228  FROM t1 RIGHT JOIN t2 ON t2.x>0
23229  RIGHT JOIN t3 ON t3.y>0
23230  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
23231  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
23232  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23233} {
23234  30 130 230 330 130 30 230 30 330 30
23235  60 160 260 360 160 60 260 60 360 60
23236  90 190 290 390 190 90 290 90 390 90
23237   -   -   -   -   -  -   -  - 300  0
23238}
23239do_execsql_test joinD-807 {
23240  SELECT t1.*, t2.*, t3.*, t4.*
23241  FROM t1 RIGHT JOIN t2 ON t2.x>0
23242  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23243  RIGHT JOIN t4 ON t4.z>0
23244  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
23245  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23246} {
23247  30 130 230 330 130 30 230 30 330 30
23248  60 160 260 360 160 60 260 60 360 60
23249  90 190 290 390 190 90 290 90 390 90
23250}
23251do_execsql_test joinD-808 {
23252  SELECT t1.*, t2.*, t3.*, t4.*
23253  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
23254  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23255  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23256  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23257} {
23258  30 130 230 330 130 30 230 30 330 30
23259  60 160 260 360 160 60 260 60 360 60
23260  90 190 290 390 190 90 290 90 390 90
23261   -   -   -   -   -  -   -  - 300  0
23262   -   -   -   -   -  -   -  - 305  5
23263   -   -   -   -   -  -   -  - 310 10
23264   -   -   -   -   -  -   -  - 315 15
23265   -   -   -   -   -  -   -  - 320 20
23266   -   -   -   -   -  -   -  - 325 25
23267   -   -   -   -   -  -   -  - 335 35
23268   -   -   -   -   -  -   -  - 340 40
23269   -   -   -   -   -  -   -  - 345 45
23270   -   -   -   -   -  -   -  - 350 50
23271   -   -   -   -   -  -   -  - 355 55
23272   -   -   -   -   -  -   -  - 365 65
23273   -   -   -   -   -  -   -  - 370 70
23274   -   -   -   -   -  -   -  - 375 75
23275   -   -   -   -   -  -   -  - 380 80
23276   -   -   -   -   -  -   -  - 385 85
23277   -   -   -   -   -  -   -  - 395 95
23278}
23279do_execsql_test joinD-809 {
23280  SELECT t1.*, t2.*, t3.*, t4.*
23281  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23282  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
23283  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23285} {
23286  30 130 230 330 130 30 230 30 330 30
23287  60 160 260 360 160 60 260 60 360 60
23288  90 190 290 390 190 90 290 90 390 90
23289   -   -   -   -   -  -   -  - 300  0
23290   -   -   -   -   -  -   -  - 305  5
23291   -   -   -   -   -  -   -  - 310 10
23292   -   -   -   -   -  -   -  - 315 15
23293   -   -   -   -   -  -   -  - 320 20
23294   -   -   -   -   -  -   -  - 325 25
23295   -   -   -   -   -  -   -  - 335 35
23296   -   -   -   -   -  -   -  - 340 40
23297   -   -   -   -   -  -   -  - 345 45
23298   -   -   -   -   -  -   -  - 350 50
23299   -   -   -   -   -  -   -  - 355 55
23300   -   -   -   -   -  -   -  - 365 65
23301   -   -   -   -   -  -   -  - 370 70
23302   -   -   -   -   -  -   -  - 375 75
23303   -   -   -   -   -  -   -  - 380 80
23304   -   -   -   -   -  -   -  - 385 85
23305   -   -   -   -   -  -   -  - 395 95
23306}
23307do_execsql_test joinD-810 {
23308  SELECT t1.*, t2.*, t3.*, t4.*
23309  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23310  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23311  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23312  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23313} {
23314   6 106 206 306 106  6 206  6   -  -
23315  12 112 212 312 112 12 212 12   -  -
23316  18 118 218 318 118 18 218 18   -  -
23317  24 124 224 324 124 24 224 24   -  -
23318  30 130 230 330 130 30 230 30 330 30
23319  36 136 236 336 136 36 236 36   -  -
23320  42 142 242 342 142 42 242 42   -  -
23321  48 148 248 348 148 48 248 48   -  -
23322  54 154 254 354 154 54 254 54   -  -
23323  60 160 260 360 160 60 260 60 360 60
23324  66 166 266 366 166 66 266 66   -  -
23325  72 172 272 372 172 72 272 72   -  -
23326  78 178 278 378 178 78 278 78   -  -
23327  84 184 284 384 184 84 284 84   -  -
23328  90 190 290 390 190 90 290 90 390 90
23329   -   -   -   -   -  - 200  0   -  -
23330   -   -   -   -   -  - 203  3   -  -
23331   -   -   -   -   -  - 209  9   -  -
23332   -   -   -   -   -  - 215 15   -  -
23333   -   -   -   -   -  - 221 21   -  -
23334   -   -   -   -   -  - 227 27   -  -
23335   -   -   -   -   -  - 233 33   -  -
23336   -   -   -   -   -  - 239 39   -  -
23337   -   -   -   -   -  - 245 45   -  -
23338   -   -   -   -   -  - 251 51   -  -
23339   -   -   -   -   -  - 257 57   -  -
23340   -   -   -   -   -  - 263 63   -  -
23341   -   -   -   -   -  - 269 69   -  -
23342   -   -   -   -   -  - 275 75   -  -
23343   -   -   -   -   -  - 281 81   -  -
23344   -   -   -   -   -  - 287 87   -  -
23345   -   -   -   -   -  - 293 93   -  -
23346   -   -   -   -   -  -   -  - 300  0
23347   -   -   -   -   -  -   -  - 305  5
23348   -   -   -   -   -  -   -  - 310 10
23349   -   -   -   -   -  -   -  - 315 15
23350   -   -   -   -   -  -   -  - 320 20
23351   -   -   -   -   -  -   -  - 325 25
23352   -   -   -   -   -  -   -  - 335 35
23353   -   -   -   -   -  -   -  - 340 40
23354   -   -   -   -   -  -   -  - 345 45
23355   -   -   -   -   -  -   -  - 350 50
23356   -   -   -   -   -  -   -  - 355 55
23357   -   -   -   -   -  -   -  - 365 65
23358   -   -   -   -   -  -   -  - 370 70
23359   -   -   -   -   -  -   -  - 375 75
23360   -   -   -   -   -  -   -  - 380 80
23361   -   -   -   -   -  -   -  - 385 85
23362   -   -   -   -   -  -   -  - 395 95
23363}
23364do_execsql_test joinD-811 {
23365  SELECT t1.*, t2.*, t3.*, t4.*
23366  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
23367  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23368  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23369  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23370} {
23371   6 106 206 306 106  6 206  6   -  -
23372  12 112 212 312 112 12 212 12   -  -
23373  18 118 218 318 118 18 218 18   -  -
23374  24 124 224 324 124 24 224 24   -  -
23375  30 130 230 330 130 30 230 30 330 30
23376  36 136 236 336 136 36 236 36   -  -
23377  42 142 242 342 142 42 242 42   -  -
23378  48 148 248 348 148 48 248 48   -  -
23379  54 154 254 354 154 54 254 54   -  -
23380  60 160 260 360 160 60 260 60 360 60
23381  66 166 266 366 166 66 266 66   -  -
23382  72 172 272 372 172 72 272 72   -  -
23383  78 178 278 378 178 78 278 78   -  -
23384  84 184 284 384 184 84 284 84   -  -
23385  90 190 290 390 190 90 290 90 390 90
23386   -   -   -   -   -  - 200  0   -  -
23387   -   -   -   -   -  - 203  3   -  -
23388   -   -   -   -   -  - 209  9   -  -
23389   -   -   -   -   -  - 215 15   -  -
23390   -   -   -   -   -  - 221 21   -  -
23391   -   -   -   -   -  - 227 27   -  -
23392   -   -   -   -   -  - 233 33   -  -
23393   -   -   -   -   -  - 239 39   -  -
23394   -   -   -   -   -  - 245 45   -  -
23395   -   -   -   -   -  - 251 51   -  -
23396   -   -   -   -   -  - 257 57   -  -
23397   -   -   -   -   -  - 263 63   -  -
23398   -   -   -   -   -  - 269 69   -  -
23399   -   -   -   -   -  - 275 75   -  -
23400   -   -   -   -   -  - 281 81   -  -
23401   -   -   -   -   -  - 287 87   -  -
23402   -   -   -   -   -  - 293 93   -  -
23403   -   -   -   -   -  -   -  - 300  0
23404   -   -   -   -   -  -   -  - 305  5
23405   -   -   -   -   -  -   -  - 310 10
23406   -   -   -   -   -  -   -  - 315 15
23407   -   -   -   -   -  -   -  - 320 20
23408   -   -   -   -   -  -   -  - 325 25
23409   -   -   -   -   -  -   -  - 335 35
23410   -   -   -   -   -  -   -  - 340 40
23411   -   -   -   -   -  -   -  - 345 45
23412   -   -   -   -   -  -   -  - 350 50
23413   -   -   -   -   -  -   -  - 355 55
23414   -   -   -   -   -  -   -  - 365 65
23415   -   -   -   -   -  -   -  - 370 70
23416   -   -   -   -   -  -   -  - 375 75
23417   -   -   -   -   -  -   -  - 380 80
23418   -   -   -   -   -  -   -  - 385 85
23419   -   -   -   -   -  -   -  - 395 95
23420}
23421do_execsql_test joinD-812 {
23422  SELECT t1.*, t2.*, t3.*, t4.*
23423  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23424  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23425  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23426  WHERE t2.x>0
23427  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23428} {
23429   6 106 206 306 106  6 206  6   -  -
23430  12 112 212 312 112 12 212 12   -  -
23431  18 118 218 318 118 18 218 18   -  -
23432  24 124 224 324 124 24 224 24   -  -
23433  30 130 230 330 130 30 230 30 330 30
23434  36 136 236 336 136 36 236 36   -  -
23435  42 142 242 342 142 42 242 42   -  -
23436  48 148 248 348 148 48 248 48   -  -
23437  54 154 254 354 154 54 254 54   -  -
23438  60 160 260 360 160 60 260 60 360 60
23439  66 166 266 366 166 66 266 66   -  -
23440  72 172 272 372 172 72 272 72   -  -
23441  78 178 278 378 178 78 278 78   -  -
23442  84 184 284 384 184 84 284 84   -  -
23443  90 190 290 390 190 90 290 90 390 90
23444}
23445do_execsql_test joinD-813 {
23446  SELECT t1.*, t2.*, t3.*, t4.*
23447  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23448  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23449  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23450  WHERE (t2.x>0 OR t2.x IS NULL)
23451  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23452} {
23453   6 106 206 306 106  6 206  6   -  -
23454  12 112 212 312 112 12 212 12   -  -
23455  18 118 218 318 118 18 218 18   -  -
23456  24 124 224 324 124 24 224 24   -  -
23457  30 130 230 330 130 30 230 30 330 30
23458  36 136 236 336 136 36 236 36   -  -
23459  42 142 242 342 142 42 242 42   -  -
23460  48 148 248 348 148 48 248 48   -  -
23461  54 154 254 354 154 54 254 54   -  -
23462  60 160 260 360 160 60 260 60 360 60
23463  66 166 266 366 166 66 266 66   -  -
23464  72 172 272 372 172 72 272 72   -  -
23465  78 178 278 378 178 78 278 78   -  -
23466  84 184 284 384 184 84 284 84   -  -
23467  90 190 290 390 190 90 290 90 390 90
23468   -   -   -   -   -  - 200  0   -  -
23469   -   -   -   -   -  - 203  3   -  -
23470   -   -   -   -   -  - 209  9   -  -
23471   -   -   -   -   -  - 215 15   -  -
23472   -   -   -   -   -  - 221 21   -  -
23473   -   -   -   -   -  - 227 27   -  -
23474   -   -   -   -   -  - 233 33   -  -
23475   -   -   -   -   -  - 239 39   -  -
23476   -   -   -   -   -  - 245 45   -  -
23477   -   -   -   -   -  - 251 51   -  -
23478   -   -   -   -   -  - 257 57   -  -
23479   -   -   -   -   -  - 263 63   -  -
23480   -   -   -   -   -  - 269 69   -  -
23481   -   -   -   -   -  - 275 75   -  -
23482   -   -   -   -   -  - 281 81   -  -
23483   -   -   -   -   -  - 287 87   -  -
23484   -   -   -   -   -  - 293 93   -  -
23485   -   -   -   -   -  -   -  - 300  0
23486   -   -   -   -   -  -   -  - 305  5
23487   -   -   -   -   -  -   -  - 310 10
23488   -   -   -   -   -  -   -  - 315 15
23489   -   -   -   -   -  -   -  - 320 20
23490   -   -   -   -   -  -   -  - 325 25
23491   -   -   -   -   -  -   -  - 335 35
23492   -   -   -   -   -  -   -  - 340 40
23493   -   -   -   -   -  -   -  - 345 45
23494   -   -   -   -   -  -   -  - 350 50
23495   -   -   -   -   -  -   -  - 355 55
23496   -   -   -   -   -  -   -  - 365 65
23497   -   -   -   -   -  -   -  - 370 70
23498   -   -   -   -   -  -   -  - 375 75
23499   -   -   -   -   -  -   -  - 380 80
23500   -   -   -   -   -  -   -  - 385 85
23501   -   -   -   -   -  -   -  - 395 95
23502}
23503do_execsql_test joinD-814 {
23504  SELECT t1.*, t2.*, t3.*, t4.*
23505  FROM t1 RIGHT JOIN t2 ON true
23506  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23507  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23508  WHERE t1.b=t2.b AND t2.x>0
23509  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23510} {
23511   6 106 206 306 106  6 206  6   -  -
23512  12 112 212 312 112 12 212 12   -  -
23513  18 118 218 318 118 18 218 18   -  -
23514  24 124 224 324 124 24 224 24   -  -
23515  30 130 230 330 130 30 230 30 330 30
23516  36 136 236 336 136 36 236 36   -  -
23517  42 142 242 342 142 42 242 42   -  -
23518  48 148 248 348 148 48 248 48   -  -
23519  54 154 254 354 154 54 254 54   -  -
23520  60 160 260 360 160 60 260 60 360 60
23521  66 166 266 366 166 66 266 66   -  -
23522  72 172 272 372 172 72 272 72   -  -
23523  78 178 278 378 178 78 278 78   -  -
23524  84 184 284 384 184 84 284 84   -  -
23525  90 190 290 390 190 90 290 90 390 90
23526}
23527do_execsql_test joinD-815 {
23528  SELECT t1.*, t2.*, t3.*, t4.*
23529  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23530  RIGHT JOIN t3 ON t1.c=t3.c
23531  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23532  WHERE t3.y>0
23533  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23534} {
23535   6 106 206 306 106  6 206  6   -  -
23536  12 112 212 312 112 12 212 12   -  -
23537  18 118 218 318 118 18 218 18   -  -
23538  24 124 224 324 124 24 224 24   -  -
23539  30 130 230 330 130 30 230 30 330 30
23540  36 136 236 336 136 36 236 36   -  -
23541  42 142 242 342 142 42 242 42   -  -
23542  48 148 248 348 148 48 248 48   -  -
23543  54 154 254 354 154 54 254 54   -  -
23544  60 160 260 360 160 60 260 60 360 60
23545  66 166 266 366 166 66 266 66   -  -
23546  72 172 272 372 172 72 272 72   -  -
23547  78 178 278 378 178 78 278 78   -  -
23548  84 184 284 384 184 84 284 84   -  -
23549  90 190 290 390 190 90 290 90 390 90
23550   -   -   -   -   -  - 203  3   -  -
23551   -   -   -   -   -  - 209  9   -  -
23552   -   -   -   -   -  - 215 15   -  -
23553   -   -   -   -   -  - 221 21   -  -
23554   -   -   -   -   -  - 227 27   -  -
23555   -   -   -   -   -  - 233 33   -  -
23556   -   -   -   -   -  - 239 39   -  -
23557   -   -   -   -   -  - 245 45   -  -
23558   -   -   -   -   -  - 251 51   -  -
23559   -   -   -   -   -  - 257 57   -  -
23560   -   -   -   -   -  - 263 63   -  -
23561   -   -   -   -   -  - 269 69   -  -
23562   -   -   -   -   -  - 275 75   -  -
23563   -   -   -   -   -  - 281 81   -  -
23564   -   -   -   -   -  - 287 87   -  -
23565   -   -   -   -   -  - 293 93   -  -
23566}
23567do_execsql_test joinD-816 {
23568  SELECT t1.*, t2.*, t3.*, t4.*
23569  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23570  RIGHT JOIN t3 ON t1.c=t3.c
23571  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23572  WHERE t3.y>0 OR t3.y IS NULL
23573  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23574} {
23575   6 106 206 306 106  6 206  6   -  -
23576  12 112 212 312 112 12 212 12   -  -
23577  18 118 218 318 118 18 218 18   -  -
23578  24 124 224 324 124 24 224 24   -  -
23579  30 130 230 330 130 30 230 30 330 30
23580  36 136 236 336 136 36 236 36   -  -
23581  42 142 242 342 142 42 242 42   -  -
23582  48 148 248 348 148 48 248 48   -  -
23583  54 154 254 354 154 54 254 54   -  -
23584  60 160 260 360 160 60 260 60 360 60
23585  66 166 266 366 166 66 266 66   -  -
23586  72 172 272 372 172 72 272 72   -  -
23587  78 178 278 378 178 78 278 78   -  -
23588  84 184 284 384 184 84 284 84   -  -
23589  90 190 290 390 190 90 290 90 390 90
23590   -   -   -   -   -  - 203  3   -  -
23591   -   -   -   -   -  - 209  9   -  -
23592   -   -   -   -   -  - 215 15   -  -
23593   -   -   -   -   -  - 221 21   -  -
23594   -   -   -   -   -  - 227 27   -  -
23595   -   -   -   -   -  - 233 33   -  -
23596   -   -   -   -   -  - 239 39   -  -
23597   -   -   -   -   -  - 245 45   -  -
23598   -   -   -   -   -  - 251 51   -  -
23599   -   -   -   -   -  - 257 57   -  -
23600   -   -   -   -   -  - 263 63   -  -
23601   -   -   -   -   -  - 269 69   -  -
23602   -   -   -   -   -  - 275 75   -  -
23603   -   -   -   -   -  - 281 81   -  -
23604   -   -   -   -   -  - 287 87   -  -
23605   -   -   -   -   -  - 293 93   -  -
23606   -   -   -   -   -  -   -  - 300  0
23607   -   -   -   -   -  -   -  - 305  5
23608   -   -   -   -   -  -   -  - 310 10
23609   -   -   -   -   -  -   -  - 315 15
23610   -   -   -   -   -  -   -  - 320 20
23611   -   -   -   -   -  -   -  - 325 25
23612   -   -   -   -   -  -   -  - 335 35
23613   -   -   -   -   -  -   -  - 340 40
23614   -   -   -   -   -  -   -  - 345 45
23615   -   -   -   -   -  -   -  - 350 50
23616   -   -   -   -   -  -   -  - 355 55
23617   -   -   -   -   -  -   -  - 365 65
23618   -   -   -   -   -  -   -  - 370 70
23619   -   -   -   -   -  -   -  - 375 75
23620   -   -   -   -   -  -   -  - 380 80
23621   -   -   -   -   -  -   -  - 385 85
23622   -   -   -   -   -  -   -  - 395 95
23623}
23624do_execsql_test joinD-817 {
23625  SELECT t1.*, t2.*, t3.*, t4.*
23626  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23627  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23628  FULL JOIN t4 ON t1.d=t4.d
23629  WHERE t4.z>0
23630  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23631} {
23632  30 130 230 330 130 30 230 30 330 30
23633  60 160 260 360 160 60 260 60 360 60
23634  90 190 290 390 190 90 290 90 390 90
23635   -   -   -   -   -  -   -  - 305  5
23636   -   -   -   -   -  -   -  - 310 10
23637   -   -   -   -   -  -   -  - 315 15
23638   -   -   -   -   -  -   -  - 320 20
23639   -   -   -   -   -  -   -  - 325 25
23640   -   -   -   -   -  -   -  - 335 35
23641   -   -   -   -   -  -   -  - 340 40
23642   -   -   -   -   -  -   -  - 345 45
23643   -   -   -   -   -  -   -  - 350 50
23644   -   -   -   -   -  -   -  - 355 55
23645   -   -   -   -   -  -   -  - 365 65
23646   -   -   -   -   -  -   -  - 370 70
23647   -   -   -   -   -  -   -  - 375 75
23648   -   -   -   -   -  -   -  - 380 80
23649   -   -   -   -   -  -   -  - 385 85
23650   -   -   -   -   -  -   -  - 395 95
23651}
23652do_execsql_test joinD-818 {
23653  SELECT t1.*, t2.*, t3.*, t4.*
23654  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23655  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23656  FULL JOIN t4 ON t1.d=t4.d
23657  WHERE t4.z IS NULL OR t4.z>0
23658  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23659} {
23660   6 106 206 306 106  6 206  6   -  -
23661  12 112 212 312 112 12 212 12   -  -
23662  18 118 218 318 118 18 218 18   -  -
23663  24 124 224 324 124 24 224 24   -  -
23664  30 130 230 330 130 30 230 30 330 30
23665  36 136 236 336 136 36 236 36   -  -
23666  42 142 242 342 142 42 242 42   -  -
23667  48 148 248 348 148 48 248 48   -  -
23668  54 154 254 354 154 54 254 54   -  -
23669  60 160 260 360 160 60 260 60 360 60
23670  66 166 266 366 166 66 266 66   -  -
23671  72 172 272 372 172 72 272 72   -  -
23672  78 178 278 378 178 78 278 78   -  -
23673  84 184 284 384 184 84 284 84   -  -
23674  90 190 290 390 190 90 290 90 390 90
23675   -   -   -   -   -  - 200  0   -  -
23676   -   -   -   -   -  - 203  3   -  -
23677   -   -   -   -   -  - 209  9   -  -
23678   -   -   -   -   -  - 215 15   -  -
23679   -   -   -   -   -  - 221 21   -  -
23680   -   -   -   -   -  - 227 27   -  -
23681   -   -   -   -   -  - 233 33   -  -
23682   -   -   -   -   -  - 239 39   -  -
23683   -   -   -   -   -  - 245 45   -  -
23684   -   -   -   -   -  - 251 51   -  -
23685   -   -   -   -   -  - 257 57   -  -
23686   -   -   -   -   -  - 263 63   -  -
23687   -   -   -   -   -  - 269 69   -  -
23688   -   -   -   -   -  - 275 75   -  -
23689   -   -   -   -   -  - 281 81   -  -
23690   -   -   -   -   -  - 287 87   -  -
23691   -   -   -   -   -  - 293 93   -  -
23692   -   -   -   -   -  -   -  - 305  5
23693   -   -   -   -   -  -   -  - 310 10
23694   -   -   -   -   -  -   -  - 315 15
23695   -   -   -   -   -  -   -  - 320 20
23696   -   -   -   -   -  -   -  - 325 25
23697   -   -   -   -   -  -   -  - 335 35
23698   -   -   -   -   -  -   -  - 340 40
23699   -   -   -   -   -  -   -  - 345 45
23700   -   -   -   -   -  -   -  - 350 50
23701   -   -   -   -   -  -   -  - 355 55
23702   -   -   -   -   -  -   -  - 365 65
23703   -   -   -   -   -  -   -  - 370 70
23704   -   -   -   -   -  -   -  - 375 75
23705   -   -   -   -   -  -   -  - 380 80
23706   -   -   -   -   -  -   -  - 385 85
23707   -   -   -   -   -  -   -  - 395 95
23708}
23709do_execsql_test joinD-819 {
23710  SELECT t1.*, t2.*, t3.*, t4.*
23711  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23712  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23713  FULL JOIN t4 ON t1.d=t4.d
23714  WHERE t2.x>0 AND t4.z>0
23715  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23716} {
23717  30 130 230 330 130 30 230 30 330 30
23718  60 160 260 360 160 60 260 60 360 60
23719  90 190 290 390 190 90 290 90 390 90
23720}
23721do_execsql_test joinD-820 {
23722  SELECT t1.*, t2.*, t3.*, t4.*
23723  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23724  RIGHT JOIN t3 ON t1.c=t3.c
23725  FULL JOIN t4 ON t1.d=t4.d
23726  WHERE t4.z>0 AND t3.y>0
23727  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23728} {
23729  30 130 230 330 130 30 230 30 330 30
23730  60 160 260 360 160 60 260 60 360 60
23731  90 190 290 390 190 90 290 90 390 90
23732}
23733do_execsql_test joinD-821 {
23734  SELECT t1.*, t2.*, t3.*, t4.*
23735  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23736  RIGHT JOIN t3 ON t1.c=t3.c
23737  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23738  WHERE t2.x>0 AND t3.y>0
23739  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23740} {
23741   6 106 206 306 106  6 206  6   -  -
23742  12 112 212 312 112 12 212 12   -  -
23743  18 118 218 318 118 18 218 18   -  -
23744  24 124 224 324 124 24 224 24   -  -
23745  30 130 230 330 130 30 230 30 330 30
23746  36 136 236 336 136 36 236 36   -  -
23747  42 142 242 342 142 42 242 42   -  -
23748  48 148 248 348 148 48 248 48   -  -
23749  54 154 254 354 154 54 254 54   -  -
23750  60 160 260 360 160 60 260 60 360 60
23751  66 166 266 366 166 66 266 66   -  -
23752  72 172 272 372 172 72 272 72   -  -
23753  78 178 278 378 178 78 278 78   -  -
23754  84 184 284 384 184 84 284 84   -  -
23755  90 190 290 390 190 90 290 90 390 90
23756}
23757do_execsql_test joinD-822 {
23758  SELECT t1.*, t2.*, t3.*, t4.*
23759  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23760  RIGHT JOIN t3 ON t1.c=t3.c
23761  FULL JOIN t4 ON t1.d=t4.d
23762  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
23763  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23764} {
23765  30 130 230 330 130 30 230 30 330 30
23766  60 160 260 360 160 60 260 60 360 60
23767  90 190 290 390 190 90 290 90 390 90
23768}
23769do_execsql_test joinD-823 {
23770  SELECT t1.*, t2.*, t3.*, t4.*
23771  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
23772  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23773  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
23774  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23775} {
23776   6 106 206 306 106  6 206  6   -  -
23777  12 112 212 312 112 12 212 12   -  -
23778  18 118 218 318 118 18 218 18   -  -
23779  24 124 224 324 124 24 224 24   -  -
23780  30 130 230 330 130 30 230 30 330 30
23781  36 136 236 336 136 36 236 36   -  -
23782  42 142 242 342 142 42 242 42   -  -
23783  48 148 248 348 148 48 248 48   -  -
23784  54 154 254 354 154 54 254 54   -  -
23785  60 160 260 360 160 60 260 60 360 60
23786  66 166 266 366 166 66 266 66   -  -
23787  72 172 272 372 172 72 272 72   -  -
23788  78 178 278 378 178 78 278 78   -  -
23789  84 184 284 384 184 84 284 84   -  -
23790  90 190 290 390 190 90 290 90 390 90
23791   -   -   -   -   -  - 200  0   -  -
23792   -   -   -   -   -  - 203  3   -  -
23793   -   -   -   -   -  - 209  9   -  -
23794   -   -   -   -   -  - 215 15   -  -
23795   -   -   -   -   -  - 221 21   -  -
23796   -   -   -   -   -  - 227 27   -  -
23797   -   -   -   -   -  - 233 33   -  -
23798   -   -   -   -   -  - 239 39   -  -
23799   -   -   -   -   -  - 245 45   -  -
23800   -   -   -   -   -  - 251 51   -  -
23801   -   -   -   -   -  - 257 57   -  -
23802   -   -   -   -   -  - 263 63   -  -
23803   -   -   -   -   -  - 269 69   -  -
23804   -   -   -   -   -  - 275 75   -  -
23805   -   -   -   -   -  - 281 81   -  -
23806   -   -   -   -   -  - 287 87   -  -
23807   -   -   -   -   -  - 293 93   -  -
23808   -   -   -   -   -  -   -  - 300  0
23809   -   -   -   -   -  -   -  - 305  5
23810   -   -   -   -   -  -   -  - 310 10
23811   -   -   -   -   -  -   -  - 315 15
23812   -   -   -   -   -  -   -  - 320 20
23813   -   -   -   -   -  -   -  - 325 25
23814   -   -   -   -   -  -   -  - 335 35
23815   -   -   -   -   -  -   -  - 340 40
23816   -   -   -   -   -  -   -  - 345 45
23817   -   -   -   -   -  -   -  - 350 50
23818   -   -   -   -   -  -   -  - 355 55
23819   -   -   -   -   -  -   -  - 365 65
23820   -   -   -   -   -  -   -  - 370 70
23821   -   -   -   -   -  -   -  - 375 75
23822   -   -   -   -   -  -   -  - 380 80
23823   -   -   -   -   -  -   -  - 385 85
23824   -   -   -   -   -  -   -  - 395 95
23825}
23826do_execsql_test joinD-824 {
23827  SELECT t1.*, t2.*, t3.*, t4.*
23828  FROM t1 RIGHT JOIN t2 ON t2.x>0
23829  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23830  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
23831  WHERE t1.b IS NOT DISTINCT FROM t2.b
23832  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23833} {
23834   6 106 206 306 106  6 206  6   -  -
23835  12 112 212 312 112 12 212 12   -  -
23836  18 118 218 318 118 18 218 18   -  -
23837  24 124 224 324 124 24 224 24   -  -
23838  30 130 230 330 130 30 230 30 330 30
23839  36 136 236 336 136 36 236 36   -  -
23840  42 142 242 342 142 42 242 42   -  -
23841  48 148 248 348 148 48 248 48   -  -
23842  54 154 254 354 154 54 254 54   -  -
23843  60 160 260 360 160 60 260 60 360 60
23844  66 166 266 366 166 66 266 66   -  -
23845  72 172 272 372 172 72 272 72   -  -
23846  78 178 278 378 178 78 278 78   -  -
23847  84 184 284 384 184 84 284 84   -  -
23848  90 190 290 390 190 90 290 90 390 90
23849   -   -   -   -   -  - 200  0   -  -
23850   -   -   -   -   -  -   -  - 300  0
23851   -   -   -   -   -  -   -  - 305  5
23852   -   -   -   -   -  -   -  - 310 10
23853   -   -   -   -   -  -   -  - 320 20
23854   -   -   -   -   -  -   -  - 325 25
23855   -   -   -   -   -  -   -  - 335 35
23856   -   -   -   -   -  -   -  - 340 40
23857   -   -   -   -   -  -   -  - 350 50
23858   -   -   -   -   -  -   -  - 355 55
23859   -   -   -   -   -  -   -  - 365 65
23860   -   -   -   -   -  -   -  - 370 70
23861   -   -   -   -   -  -   -  - 380 80
23862   -   -   -   -   -  -   -  - 385 85
23863   -   -   -   -   -  -   -  - 395 95
23864}
23865do_execsql_test joinD-825 {
23866  SELECT t1.*, t2.*, t3.*, t4.*
23867  FROM t1 RIGHT JOIN t2 ON t2.x>0
23868  RIGHT JOIN t3 ON t3.y>0
23869  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
23870  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
23871  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23872} {
23873   6 106 206 306 106  6 206  6   -  -
23874  12 112 212 312 112 12 212 12   -  -
23875  18 118 218 318 118 18 218 18   -  -
23876  24 124 224 324 124 24 224 24   -  -
23877  30 130 230 330 130 30 230 30 330 30
23878  36 136 236 336 136 36 236 36   -  -
23879  42 142 242 342 142 42 242 42   -  -
23880  48 148 248 348 148 48 248 48   -  -
23881  54 154 254 354 154 54 254 54   -  -
23882  60 160 260 360 160 60 260 60 360 60
23883  66 166 266 366 166 66 266 66   -  -
23884  72 172 272 372 172 72 272 72   -  -
23885  78 178 278 378 178 78 278 78   -  -
23886  84 184 284 384 184 84 284 84   -  -
23887  90 190 290 390 190 90 290 90 390 90
23888   -   -   -   -   -  -   -  - 300  0
23889}
23890do_execsql_test joinD-826 {
23891  SELECT t1.*, t2.*, t3.*, t4.*
23892  FROM t1 RIGHT JOIN t2 ON t2.x>0
23893  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23894  FULL JOIN t4 ON t4.z>0
23895  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
23896  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23897} {
23898  30 130 230 330 130 30 230 30 330 30
23899  60 160 260 360 160 60 260 60 360 60
23900  90 190 290 390 190 90 290 90 390 90
23901}
23902do_execsql_test joinD-827 {
23903  SELECT t1.*, t2.*, t3.*, t4.*
23904  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
23905  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23906  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23907  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23908} {
23909   6 106 206 306 106  6 206  6   -  -
23910  12 112 212 312 112 12 212 12   -  -
23911  18 118 218 318 118 18 218 18   -  -
23912  24 124 224 324 124 24 224 24   -  -
23913  30 130 230 330 130 30 230 30 330 30
23914  36 136 236 336 136 36 236 36   -  -
23915  42 142 242 342 142 42 242 42   -  -
23916  48 148 248 348 148 48 248 48   -  -
23917  54 154 254 354 154 54 254 54   -  -
23918  60 160 260 360 160 60 260 60 360 60
23919  66 166 266 366 166 66 266 66   -  -
23920  72 172 272 372 172 72 272 72   -  -
23921  78 178 278 378 178 78 278 78   -  -
23922  84 184 284 384 184 84 284 84   -  -
23923  90 190 290 390 190 90 290 90 390 90
23924   -   -   -   -   -  - 200  0   -  -
23925   -   -   -   -   -  - 203  3   -  -
23926   -   -   -   -   -  - 209  9   -  -
23927   -   -   -   -   -  - 215 15   -  -
23928   -   -   -   -   -  - 221 21   -  -
23929   -   -   -   -   -  - 227 27   -  -
23930   -   -   -   -   -  - 233 33   -  -
23931   -   -   -   -   -  - 239 39   -  -
23932   -   -   -   -   -  - 245 45   -  -
23933   -   -   -   -   -  - 251 51   -  -
23934   -   -   -   -   -  - 257 57   -  -
23935   -   -   -   -   -  - 263 63   -  -
23936   -   -   -   -   -  - 269 69   -  -
23937   -   -   -   -   -  - 275 75   -  -
23938   -   -   -   -   -  - 281 81   -  -
23939   -   -   -   -   -  - 287 87   -  -
23940   -   -   -   -   -  - 293 93   -  -
23941   -   -   -   -   -  -   -  - 300  0
23942   -   -   -   -   -  -   -  - 305  5
23943   -   -   -   -   -  -   -  - 310 10
23944   -   -   -   -   -  -   -  - 315 15
23945   -   -   -   -   -  -   -  - 320 20
23946   -   -   -   -   -  -   -  - 325 25
23947   -   -   -   -   -  -   -  - 335 35
23948   -   -   -   -   -  -   -  - 340 40
23949   -   -   -   -   -  -   -  - 345 45
23950   -   -   -   -   -  -   -  - 350 50
23951   -   -   -   -   -  -   -  - 355 55
23952   -   -   -   -   -  -   -  - 365 65
23953   -   -   -   -   -  -   -  - 370 70
23954   -   -   -   -   -  -   -  - 375 75
23955   -   -   -   -   -  -   -  - 380 80
23956   -   -   -   -   -  -   -  - 385 85
23957   -   -   -   -   -  -   -  - 395 95
23958}
23959do_execsql_test joinD-828 {
23960  SELECT t1.*, t2.*, t3.*, t4.*
23961  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23962  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
23963  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23964  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23965} {
23966   6 106 206 306 106  6 206  6   -  -
23967  12 112 212 312 112 12 212 12   -  -
23968  18 118 218 318 118 18 218 18   -  -
23969  24 124 224 324 124 24 224 24   -  -
23970  30 130 230 330 130 30 230 30 330 30
23971  36 136 236 336 136 36 236 36   -  -
23972  42 142 242 342 142 42 242 42   -  -
23973  48 148 248 348 148 48 248 48   -  -
23974  54 154 254 354 154 54 254 54   -  -
23975  60 160 260 360 160 60 260 60 360 60
23976  66 166 266 366 166 66 266 66   -  -
23977  72 172 272 372 172 72 272 72   -  -
23978  78 178 278 378 178 78 278 78   -  -
23979  84 184 284 384 184 84 284 84   -  -
23980  90 190 290 390 190 90 290 90 390 90
23981   -   -   -   -   -  - 200  0   -  -
23982   -   -   -   -   -  - 203  3   -  -
23983   -   -   -   -   -  - 209  9   -  -
23984   -   -   -   -   -  - 215 15   -  -
23985   -   -   -   -   -  - 221 21   -  -
23986   -   -   -   -   -  - 227 27   -  -
23987   -   -   -   -   -  - 233 33   -  -
23988   -   -   -   -   -  - 239 39   -  -
23989   -   -   -   -   -  - 245 45   -  -
23990   -   -   -   -   -  - 251 51   -  -
23991   -   -   -   -   -  - 257 57   -  -
23992   -   -   -   -   -  - 263 63   -  -
23993   -   -   -   -   -  - 269 69   -  -
23994   -   -   -   -   -  - 275 75   -  -
23995   -   -   -   -   -  - 281 81   -  -
23996   -   -   -   -   -  - 287 87   -  -
23997   -   -   -   -   -  - 293 93   -  -
23998   -   -   -   -   -  -   -  - 300  0
23999   -   -   -   -   -  -   -  - 305  5
24000   -   -   -   -   -  -   -  - 310 10
24001   -   -   -   -   -  -   -  - 315 15
24002   -   -   -   -   -  -   -  - 320 20
24003   -   -   -   -   -  -   -  - 325 25
24004   -   -   -   -   -  -   -  - 335 35
24005   -   -   -   -   -  -   -  - 340 40
24006   -   -   -   -   -  -   -  - 345 45
24007   -   -   -   -   -  -   -  - 350 50
24008   -   -   -   -   -  -   -  - 355 55
24009   -   -   -   -   -  -   -  - 365 65
24010   -   -   -   -   -  -   -  - 370 70
24011   -   -   -   -   -  -   -  - 375 75
24012   -   -   -   -   -  -   -  - 380 80
24013   -   -   -   -   -  -   -  - 385 85
24014   -   -   -   -   -  -   -  - 395 95
24015}
24016do_execsql_test joinD-829 {
24017  SELECT t1.*, t2.*, t3.*, t4.*
24018  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24019  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24020  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24022} {
24023  10 110 210 310 110 10   -  - 310 10
24024  20 120 220 320 120 20   -  - 320 20
24025  30 130 230 330 130 30 230 30 330 30
24026  40 140 240 340 140 40   -  - 340 40
24027  50 150 250 350 150 50   -  - 350 50
24028  60 160 260 360 160 60 260 60 360 60
24029  70 170 270 370 170 70   -  - 370 70
24030  80 180 280 380 180 80   -  - 380 80
24031  90 190 290 390 190 90 290 90 390 90
24032}
24033do_execsql_test joinD-830 {
24034  SELECT t1.*, t2.*, t3.*, t4.*
24035  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24036  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24037  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24038  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24039} {
24040  10 110 210 310 110 10   -  - 310 10
24041  20 120 220 320 120 20   -  - 320 20
24042  30 130 230 330 130 30 230 30 330 30
24043  40 140 240 340 140 40   -  - 340 40
24044  50 150 250 350 150 50   -  - 350 50
24045  60 160 260 360 160 60 260 60 360 60
24046  70 170 270 370 170 70   -  - 370 70
24047  80 180 280 380 180 80   -  - 380 80
24048  90 190 290 390 190 90 290 90 390 90
24049}
24050do_execsql_test joinD-831 {
24051  SELECT t1.*, t2.*, t3.*, t4.*
24052  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24053  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24054  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24055  WHERE t2.x>0
24056  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24057} {
24058  10 110 210 310 110 10   -  - 310 10
24059  20 120 220 320 120 20   -  - 320 20
24060  30 130 230 330 130 30 230 30 330 30
24061  40 140 240 340 140 40   -  - 340 40
24062  50 150 250 350 150 50   -  - 350 50
24063  60 160 260 360 160 60 260 60 360 60
24064  70 170 270 370 170 70   -  - 370 70
24065  80 180 280 380 180 80   -  - 380 80
24066  90 190 290 390 190 90 290 90 390 90
24067}
24068do_execsql_test joinD-832 {
24069  SELECT t1.*, t2.*, t3.*, t4.*
24070  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24071  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24072  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24073  WHERE (t2.x>0 OR t2.x IS NULL)
24074  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24075} {
24076  10 110 210 310 110 10   -  - 310 10
24077  20 120 220 320 120 20   -  - 320 20
24078  30 130 230 330 130 30 230 30 330 30
24079  40 140 240 340 140 40   -  - 340 40
24080  50 150 250 350 150 50   -  - 350 50
24081  60 160 260 360 160 60 260 60 360 60
24082  70 170 270 370 170 70   -  - 370 70
24083  80 180 280 380 180 80   -  - 380 80
24084  90 190 290 390 190 90 290 90 390 90
24085}
24086do_execsql_test joinD-833 {
24087  SELECT t1.*, t2.*, t3.*, t4.*
24088  FROM t1 RIGHT JOIN t2 ON true
24089  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24090  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24091  WHERE t1.b=t2.b AND t2.x>0
24092  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24093} {
24094  10 110 210 310 110 10   -  - 310 10
24095  20 120 220 320 120 20   -  - 320 20
24096  30 130 230 330 130 30 230 30 330 30
24097  40 140 240 340 140 40   -  - 340 40
24098  50 150 250 350 150 50   -  - 350 50
24099  60 160 260 360 160 60 260 60 360 60
24100  70 170 270 370 170 70   -  - 370 70
24101  80 180 280 380 180 80   -  - 380 80
24102  90 190 290 390 190 90 290 90 390 90
24103}
24104do_execsql_test joinD-834 {
24105  SELECT t1.*, t2.*, t3.*, t4.*
24106  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24107  FULL JOIN t3 ON t1.c=t3.c
24108  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24109  WHERE t3.y>0
24110  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24111} {
24112  30 130 230 330 130 30 230 30 330 30
24113  60 160 260 360 160 60 260 60 360 60
24114  90 190 290 390 190 90 290 90 390 90
24115}
24116do_execsql_test joinD-835 {
24117  SELECT t1.*, t2.*, t3.*, t4.*
24118  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24119  FULL JOIN t3 ON t1.c=t3.c
24120  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24121  WHERE t3.y>0 OR t3.y IS NULL
24122  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24123} {
24124  10 110 210 310 110 10   -  - 310 10
24125  20 120 220 320 120 20   -  - 320 20
24126  30 130 230 330 130 30 230 30 330 30
24127  40 140 240 340 140 40   -  - 340 40
24128  50 150 250 350 150 50   -  - 350 50
24129  60 160 260 360 160 60 260 60 360 60
24130  70 170 270 370 170 70   -  - 370 70
24131  80 180 280 380 180 80   -  - 380 80
24132  90 190 290 390 190 90 290 90 390 90
24133}
24134do_execsql_test joinD-836 {
24135  SELECT t1.*, t2.*, t3.*, t4.*
24136  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24137  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24138  INNER JOIN t4 ON t1.d=t4.d
24139  WHERE t4.z>0
24140  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24141} {
24142  10 110 210 310 110 10   -  - 310 10
24143  20 120 220 320 120 20   -  - 320 20
24144  30 130 230 330 130 30 230 30 330 30
24145  40 140 240 340 140 40   -  - 340 40
24146  50 150 250 350 150 50   -  - 350 50
24147  60 160 260 360 160 60 260 60 360 60
24148  70 170 270 370 170 70   -  - 370 70
24149  80 180 280 380 180 80   -  - 380 80
24150  90 190 290 390 190 90 290 90 390 90
24151}
24152do_execsql_test joinD-837 {
24153  SELECT t1.*, t2.*, t3.*, t4.*
24154  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24155  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24156  INNER JOIN t4 ON t1.d=t4.d
24157  WHERE t4.z IS NULL OR t4.z>0
24158  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24159} {
24160  10 110 210 310 110 10   -  - 310 10
24161  20 120 220 320 120 20   -  - 320 20
24162  30 130 230 330 130 30 230 30 330 30
24163  40 140 240 340 140 40   -  - 340 40
24164  50 150 250 350 150 50   -  - 350 50
24165  60 160 260 360 160 60 260 60 360 60
24166  70 170 270 370 170 70   -  - 370 70
24167  80 180 280 380 180 80   -  - 380 80
24168  90 190 290 390 190 90 290 90 390 90
24169}
24170do_execsql_test joinD-838 {
24171  SELECT t1.*, t2.*, t3.*, t4.*
24172  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24173  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24174  INNER JOIN t4 ON t1.d=t4.d
24175  WHERE t2.x>0 AND t4.z>0
24176  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24177} {
24178  10 110 210 310 110 10   -  - 310 10
24179  20 120 220 320 120 20   -  - 320 20
24180  30 130 230 330 130 30 230 30 330 30
24181  40 140 240 340 140 40   -  - 340 40
24182  50 150 250 350 150 50   -  - 350 50
24183  60 160 260 360 160 60 260 60 360 60
24184  70 170 270 370 170 70   -  - 370 70
24185  80 180 280 380 180 80   -  - 380 80
24186  90 190 290 390 190 90 290 90 390 90
24187}
24188do_execsql_test joinD-839 {
24189  SELECT t1.*, t2.*, t3.*, t4.*
24190  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24191  FULL JOIN t3 ON t1.c=t3.c
24192  INNER JOIN t4 ON t1.d=t4.d
24193  WHERE t4.z>0 AND t3.y>0
24194  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24195} {
24196  30 130 230 330 130 30 230 30 330 30
24197  60 160 260 360 160 60 260 60 360 60
24198  90 190 290 390 190 90 290 90 390 90
24199}
24200do_execsql_test joinD-840 {
24201  SELECT t1.*, t2.*, t3.*, t4.*
24202  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24203  FULL JOIN t3 ON t1.c=t3.c
24204  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24205  WHERE t2.x>0 AND t3.y>0
24206  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24207} {
24208  30 130 230 330 130 30 230 30 330 30
24209  60 160 260 360 160 60 260 60 360 60
24210  90 190 290 390 190 90 290 90 390 90
24211}
24212do_execsql_test joinD-841 {
24213  SELECT t1.*, t2.*, t3.*, t4.*
24214  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24215  FULL JOIN t3 ON t1.c=t3.c
24216  INNER JOIN t4 ON t1.d=t4.d
24217  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
24218  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24219} {
24220  30 130 230 330 130 30 230 30 330 30
24221  60 160 260 360 160 60 260 60 360 60
24222  90 190 290 390 190 90 290 90 390 90
24223}
24224do_execsql_test joinD-842 {
24225  SELECT t1.*, t2.*, t3.*, t4.*
24226  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24227  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24228  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24229  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24230} {
24231  10 110 210 310 110 10   -  - 310 10
24232  20 120 220 320 120 20   -  - 320 20
24233  30 130 230 330 130 30 230 30 330 30
24234  40 140 240 340 140 40   -  - 340 40
24235  50 150 250 350 150 50   -  - 350 50
24236  60 160 260 360 160 60 260 60 360 60
24237  70 170 270 370 170 70   -  - 370 70
24238  80 180 280 380 180 80   -  - 380 80
24239  90 190 290 390 190 90 290 90 390 90
24240}
24241do_execsql_test joinD-843 {
24242  SELECT t1.*, t2.*, t3.*, t4.*
24243  FROM t1 RIGHT JOIN t2 ON t2.x>0
24244  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24245  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24246  WHERE t1.b IS NOT DISTINCT FROM t2.b
24247  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24248} {
24249  10 110 210 310 110 10   -  - 310 10
24250  20 120 220 320 120 20   -  - 320 20
24251  30 130 230 330 130 30 230 30 330 30
24252  40 140 240 340 140 40   -  - 340 40
24253  50 150 250 350 150 50   -  - 350 50
24254  60 160 260 360 160 60 260 60 360 60
24255  70 170 270 370 170 70   -  - 370 70
24256  80 180 280 380 180 80   -  - 380 80
24257  90 190 290 390 190 90 290 90 390 90
24258}
24259do_execsql_test joinD-844 {
24260  SELECT t1.*, t2.*, t3.*, t4.*
24261  FROM t1 RIGHT JOIN t2 ON t2.x>0
24262  FULL JOIN t3 ON t3.y>0
24263  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24264  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
24265  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24266} {
24267  30 130 230 330 130 30 230 30 330 30
24268  60 160 260 360 160 60 260 60 360 60
24269  90 190 290 390 190 90 290 90 390 90
24270}
24271do_execsql_test joinD-845 {
24272  SELECT t1.*, t2.*, t3.*, t4.*
24273  FROM t1 RIGHT JOIN t2 ON t2.x>0
24274  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24275  INNER JOIN t4 ON t4.z>0
24276  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
24277  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24278} {
24279  10 110 210 310 110 10   -  - 310 10
24280  20 120 220 320 120 20   -  - 320 20
24281  30 130 230 330 130 30 230 30 330 30
24282  40 140 240 340 140 40   -  - 340 40
24283  50 150 250 350 150 50   -  - 350 50
24284  60 160 260 360 160 60 260 60 360 60
24285  70 170 270 370 170 70   -  - 370 70
24286  80 180 280 380 180 80   -  - 380 80
24287  90 190 290 390 190 90 290 90 390 90
24288}
24289do_execsql_test joinD-846 {
24290  SELECT t1.*, t2.*, t3.*, t4.*
24291  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
24292  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24293  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24294  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24295} {
24296  10 110 210 310 110 10   -  - 310 10
24297  20 120 220 320 120 20   -  - 320 20
24298  30 130 230 330 130 30 230 30 330 30
24299  40 140 240 340 140 40   -  - 340 40
24300  50 150 250 350 150 50   -  - 350 50
24301  60 160 260 360 160 60 260 60 360 60
24302  70 170 270 370 170 70   -  - 370 70
24303  80 180 280 380 180 80   -  - 380 80
24304  90 190 290 390 190 90 290 90 390 90
24305}
24306do_execsql_test joinD-847 {
24307  SELECT t1.*, t2.*, t3.*, t4.*
24308  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24309  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24310  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24311  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24312} {
24313   2 102 202 302 102  2   -  -   -  -
24314   4 104 204 304 104  4   -  -   -  -
24315   6 106 206 306 106  6 206  6   -  -
24316   8 108 208 308 108  8   -  -   -  -
24317  10 110 210 310 110 10   -  - 310 10
24318  12 112 212 312 112 12 212 12   -  -
24319  14 114 214 314 114 14   -  -   -  -
24320  16 116 216 316 116 16   -  -   -  -
24321  18 118 218 318 118 18 218 18   -  -
24322  20 120 220 320 120 20   -  - 320 20
24323  22 122 222 322 122 22   -  -   -  -
24324  24 124 224 324 124 24 224 24   -  -
24325  26 126 226 326 126 26   -  -   -  -
24326  28 128 228 328 128 28   -  -   -  -
24327  30 130 230 330 130 30 230 30 330 30
24328  32 132 232 332 132 32   -  -   -  -
24329  34 134 234 334 134 34   -  -   -  -
24330  36 136 236 336 136 36 236 36   -  -
24331  38 138 238 338 138 38   -  -   -  -
24332  40 140 240 340 140 40   -  - 340 40
24333  42 142 242 342 142 42 242 42   -  -
24334  44 144 244 344 144 44   -  -   -  -
24335  46 146 246 346 146 46   -  -   -  -
24336  48 148 248 348 148 48 248 48   -  -
24337  50 150 250 350 150 50   -  - 350 50
24338  52 152 252 352 152 52   -  -   -  -
24339  54 154 254 354 154 54 254 54   -  -
24340  56 156 256 356 156 56   -  -   -  -
24341  58 158 258 358 158 58   -  -   -  -
24342  60 160 260 360 160 60 260 60 360 60
24343  62 162 262 362 162 62   -  -   -  -
24344  64 164 264 364 164 64   -  -   -  -
24345  66 166 266 366 166 66 266 66   -  -
24346  68 168 268 368 168 68   -  -   -  -
24347  70 170 270 370 170 70   -  - 370 70
24348  72 172 272 372 172 72 272 72   -  -
24349  74 174 274 374 174 74   -  -   -  -
24350  76 176 276 376 176 76   -  -   -  -
24351  78 178 278 378 178 78 278 78   -  -
24352  80 180 280 380 180 80   -  - 380 80
24353  82 182 282 382 182 82   -  -   -  -
24354  84 184 284 384 184 84 284 84   -  -
24355  86 186 286 386 186 86   -  -   -  -
24356  88 188 288 388 188 88   -  -   -  -
24357  90 190 290 390 190 90 290 90 390 90
24358  92 192 292 392 192 92   -  -   -  -
24359  94 194 294 394 194 94   -  -   -  -
24360   -   -   -   - 100  0   -  -   -  -
24361   -   -   -   -   -  - 200  0   -  -
24362   -   -   -   -   -  - 203  3   -  -
24363   -   -   -   -   -  - 209  9   -  -
24364   -   -   -   -   -  - 215 15   -  -
24365   -   -   -   -   -  - 221 21   -  -
24366   -   -   -   -   -  - 227 27   -  -
24367   -   -   -   -   -  - 233 33   -  -
24368   -   -   -   -   -  - 239 39   -  -
24369   -   -   -   -   -  - 245 45   -  -
24370   -   -   -   -   -  - 251 51   -  -
24371   -   -   -   -   -  - 257 57   -  -
24372   -   -   -   -   -  - 263 63   -  -
24373   -   -   -   -   -  - 269 69   -  -
24374   -   -   -   -   -  - 275 75   -  -
24375   -   -   -   -   -  - 281 81   -  -
24376   -   -   -   -   -  - 287 87   -  -
24377   -   -   -   -   -  - 293 93   -  -
24378}
24379do_execsql_test joinD-848 {
24380  SELECT t1.*, t2.*, t3.*, t4.*
24381  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24382  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24383  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24384  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24385} {
24386   2 102 202 302 102  2   -  -   -  -
24387   4 104 204 304 104  4   -  -   -  -
24388   6 106 206 306 106  6 206  6   -  -
24389   8 108 208 308 108  8   -  -   -  -
24390  10 110 210 310 110 10   -  - 310 10
24391  12 112 212 312 112 12 212 12   -  -
24392  14 114 214 314 114 14   -  -   -  -
24393  16 116 216 316 116 16   -  -   -  -
24394  18 118 218 318 118 18 218 18   -  -
24395  20 120 220 320 120 20   -  - 320 20
24396  22 122 222 322 122 22   -  -   -  -
24397  24 124 224 324 124 24 224 24   -  -
24398  26 126 226 326 126 26   -  -   -  -
24399  28 128 228 328 128 28   -  -   -  -
24400  30 130 230 330 130 30 230 30 330 30
24401  32 132 232 332 132 32   -  -   -  -
24402  34 134 234 334 134 34   -  -   -  -
24403  36 136 236 336 136 36 236 36   -  -
24404  38 138 238 338 138 38   -  -   -  -
24405  40 140 240 340 140 40   -  - 340 40
24406  42 142 242 342 142 42 242 42   -  -
24407  44 144 244 344 144 44   -  -   -  -
24408  46 146 246 346 146 46   -  -   -  -
24409  48 148 248 348 148 48 248 48   -  -
24410  50 150 250 350 150 50   -  - 350 50
24411  52 152 252 352 152 52   -  -   -  -
24412  54 154 254 354 154 54 254 54   -  -
24413  56 156 256 356 156 56   -  -   -  -
24414  58 158 258 358 158 58   -  -   -  -
24415  60 160 260 360 160 60 260 60 360 60
24416  62 162 262 362 162 62   -  -   -  -
24417  64 164 264 364 164 64   -  -   -  -
24418  66 166 266 366 166 66 266 66   -  -
24419  68 168 268 368 168 68   -  -   -  -
24420  70 170 270 370 170 70   -  - 370 70
24421  72 172 272 372 172 72 272 72   -  -
24422  74 174 274 374 174 74   -  -   -  -
24423  76 176 276 376 176 76   -  -   -  -
24424  78 178 278 378 178 78 278 78   -  -
24425  80 180 280 380 180 80   -  - 380 80
24426  82 182 282 382 182 82   -  -   -  -
24427  84 184 284 384 184 84 284 84   -  -
24428  86 186 286 386 186 86   -  -   -  -
24429  88 188 288 388 188 88   -  -   -  -
24430  90 190 290 390 190 90 290 90 390 90
24431  92 192 292 392 192 92   -  -   -  -
24432  94 194 294 394 194 94   -  -   -  -
24433   -   -   -   - 100  0   -  -   -  -
24434   -   -   -   -   -  - 200  0   -  -
24435   -   -   -   -   -  - 203  3   -  -
24436   -   -   -   -   -  - 209  9   -  -
24437   -   -   -   -   -  - 215 15   -  -
24438   -   -   -   -   -  - 221 21   -  -
24439   -   -   -   -   -  - 227 27   -  -
24440   -   -   -   -   -  - 233 33   -  -
24441   -   -   -   -   -  - 239 39   -  -
24442   -   -   -   -   -  - 245 45   -  -
24443   -   -   -   -   -  - 251 51   -  -
24444   -   -   -   -   -  - 257 57   -  -
24445   -   -   -   -   -  - 263 63   -  -
24446   -   -   -   -   -  - 269 69   -  -
24447   -   -   -   -   -  - 275 75   -  -
24448   -   -   -   -   -  - 281 81   -  -
24449   -   -   -   -   -  - 287 87   -  -
24450   -   -   -   -   -  - 293 93   -  -
24451}
24452do_execsql_test joinD-849 {
24453  SELECT t1.*, t2.*, t3.*, t4.*
24454  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24455  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24456  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24457  WHERE t2.x>0
24458  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24459} {
24460   2 102 202 302 102  2   -  -   -  -
24461   4 104 204 304 104  4   -  -   -  -
24462   6 106 206 306 106  6 206  6   -  -
24463   8 108 208 308 108  8   -  -   -  -
24464  10 110 210 310 110 10   -  - 310 10
24465  12 112 212 312 112 12 212 12   -  -
24466  14 114 214 314 114 14   -  -   -  -
24467  16 116 216 316 116 16   -  -   -  -
24468  18 118 218 318 118 18 218 18   -  -
24469  20 120 220 320 120 20   -  - 320 20
24470  22 122 222 322 122 22   -  -   -  -
24471  24 124 224 324 124 24 224 24   -  -
24472  26 126 226 326 126 26   -  -   -  -
24473  28 128 228 328 128 28   -  -   -  -
24474  30 130 230 330 130 30 230 30 330 30
24475  32 132 232 332 132 32   -  -   -  -
24476  34 134 234 334 134 34   -  -   -  -
24477  36 136 236 336 136 36 236 36   -  -
24478  38 138 238 338 138 38   -  -   -  -
24479  40 140 240 340 140 40   -  - 340 40
24480  42 142 242 342 142 42 242 42   -  -
24481  44 144 244 344 144 44   -  -   -  -
24482  46 146 246 346 146 46   -  -   -  -
24483  48 148 248 348 148 48 248 48   -  -
24484  50 150 250 350 150 50   -  - 350 50
24485  52 152 252 352 152 52   -  -   -  -
24486  54 154 254 354 154 54 254 54   -  -
24487  56 156 256 356 156 56   -  -   -  -
24488  58 158 258 358 158 58   -  -   -  -
24489  60 160 260 360 160 60 260 60 360 60
24490  62 162 262 362 162 62   -  -   -  -
24491  64 164 264 364 164 64   -  -   -  -
24492  66 166 266 366 166 66 266 66   -  -
24493  68 168 268 368 168 68   -  -   -  -
24494  70 170 270 370 170 70   -  - 370 70
24495  72 172 272 372 172 72 272 72   -  -
24496  74 174 274 374 174 74   -  -   -  -
24497  76 176 276 376 176 76   -  -   -  -
24498  78 178 278 378 178 78 278 78   -  -
24499  80 180 280 380 180 80   -  - 380 80
24500  82 182 282 382 182 82   -  -   -  -
24501  84 184 284 384 184 84 284 84   -  -
24502  86 186 286 386 186 86   -  -   -  -
24503  88 188 288 388 188 88   -  -   -  -
24504  90 190 290 390 190 90 290 90 390 90
24505  92 192 292 392 192 92   -  -   -  -
24506  94 194 294 394 194 94   -  -   -  -
24507}
24508do_execsql_test joinD-850 {
24509  SELECT t1.*, t2.*, t3.*, t4.*
24510  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24511  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24512  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24513  WHERE (t2.x>0 OR t2.x IS NULL)
24514  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24515} {
24516   2 102 202 302 102  2   -  -   -  -
24517   4 104 204 304 104  4   -  -   -  -
24518   6 106 206 306 106  6 206  6   -  -
24519   8 108 208 308 108  8   -  -   -  -
24520  10 110 210 310 110 10   -  - 310 10
24521  12 112 212 312 112 12 212 12   -  -
24522  14 114 214 314 114 14   -  -   -  -
24523  16 116 216 316 116 16   -  -   -  -
24524  18 118 218 318 118 18 218 18   -  -
24525  20 120 220 320 120 20   -  - 320 20
24526  22 122 222 322 122 22   -  -   -  -
24527  24 124 224 324 124 24 224 24   -  -
24528  26 126 226 326 126 26   -  -   -  -
24529  28 128 228 328 128 28   -  -   -  -
24530  30 130 230 330 130 30 230 30 330 30
24531  32 132 232 332 132 32   -  -   -  -
24532  34 134 234 334 134 34   -  -   -  -
24533  36 136 236 336 136 36 236 36   -  -
24534  38 138 238 338 138 38   -  -   -  -
24535  40 140 240 340 140 40   -  - 340 40
24536  42 142 242 342 142 42 242 42   -  -
24537  44 144 244 344 144 44   -  -   -  -
24538  46 146 246 346 146 46   -  -   -  -
24539  48 148 248 348 148 48 248 48   -  -
24540  50 150 250 350 150 50   -  - 350 50
24541  52 152 252 352 152 52   -  -   -  -
24542  54 154 254 354 154 54 254 54   -  -
24543  56 156 256 356 156 56   -  -   -  -
24544  58 158 258 358 158 58   -  -   -  -
24545  60 160 260 360 160 60 260 60 360 60
24546  62 162 262 362 162 62   -  -   -  -
24547  64 164 264 364 164 64   -  -   -  -
24548  66 166 266 366 166 66 266 66   -  -
24549  68 168 268 368 168 68   -  -   -  -
24550  70 170 270 370 170 70   -  - 370 70
24551  72 172 272 372 172 72 272 72   -  -
24552  74 174 274 374 174 74   -  -   -  -
24553  76 176 276 376 176 76   -  -   -  -
24554  78 178 278 378 178 78 278 78   -  -
24555  80 180 280 380 180 80   -  - 380 80
24556  82 182 282 382 182 82   -  -   -  -
24557  84 184 284 384 184 84 284 84   -  -
24558  86 186 286 386 186 86   -  -   -  -
24559  88 188 288 388 188 88   -  -   -  -
24560  90 190 290 390 190 90 290 90 390 90
24561  92 192 292 392 192 92   -  -   -  -
24562  94 194 294 394 194 94   -  -   -  -
24563   -   -   -   -   -  - 200  0   -  -
24564   -   -   -   -   -  - 203  3   -  -
24565   -   -   -   -   -  - 209  9   -  -
24566   -   -   -   -   -  - 215 15   -  -
24567   -   -   -   -   -  - 221 21   -  -
24568   -   -   -   -   -  - 227 27   -  -
24569   -   -   -   -   -  - 233 33   -  -
24570   -   -   -   -   -  - 239 39   -  -
24571   -   -   -   -   -  - 245 45   -  -
24572   -   -   -   -   -  - 251 51   -  -
24573   -   -   -   -   -  - 257 57   -  -
24574   -   -   -   -   -  - 263 63   -  -
24575   -   -   -   -   -  - 269 69   -  -
24576   -   -   -   -   -  - 275 75   -  -
24577   -   -   -   -   -  - 281 81   -  -
24578   -   -   -   -   -  - 287 87   -  -
24579   -   -   -   -   -  - 293 93   -  -
24580}
24581do_execsql_test joinD-851 {
24582  SELECT t1.*, t2.*, t3.*, t4.*
24583  FROM t1 RIGHT JOIN t2 ON true
24584  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24585  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24586  WHERE t1.b=t2.b AND t2.x>0
24587  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24588} {
24589   2 102 202 302 102  2   -  -   -  -
24590   4 104 204 304 104  4   -  -   -  -
24591   6 106 206 306 106  6 206  6   -  -
24592   8 108 208 308 108  8   -  -   -  -
24593  10 110 210 310 110 10   -  - 310 10
24594  12 112 212 312 112 12 212 12   -  -
24595  14 114 214 314 114 14   -  -   -  -
24596  16 116 216 316 116 16   -  -   -  -
24597  18 118 218 318 118 18 218 18   -  -
24598  20 120 220 320 120 20   -  - 320 20
24599  22 122 222 322 122 22   -  -   -  -
24600  24 124 224 324 124 24 224 24   -  -
24601  26 126 226 326 126 26   -  -   -  -
24602  28 128 228 328 128 28   -  -   -  -
24603  30 130 230 330 130 30 230 30 330 30
24604  32 132 232 332 132 32   -  -   -  -
24605  34 134 234 334 134 34   -  -   -  -
24606  36 136 236 336 136 36 236 36   -  -
24607  38 138 238 338 138 38   -  -   -  -
24608  40 140 240 340 140 40   -  - 340 40
24609  42 142 242 342 142 42 242 42   -  -
24610  44 144 244 344 144 44   -  -   -  -
24611  46 146 246 346 146 46   -  -   -  -
24612  48 148 248 348 148 48 248 48   -  -
24613  50 150 250 350 150 50   -  - 350 50
24614  52 152 252 352 152 52   -  -   -  -
24615  54 154 254 354 154 54 254 54   -  -
24616  56 156 256 356 156 56   -  -   -  -
24617  58 158 258 358 158 58   -  -   -  -
24618  60 160 260 360 160 60 260 60 360 60
24619  62 162 262 362 162 62   -  -   -  -
24620  64 164 264 364 164 64   -  -   -  -
24621  66 166 266 366 166 66 266 66   -  -
24622  68 168 268 368 168 68   -  -   -  -
24623  70 170 270 370 170 70   -  - 370 70
24624  72 172 272 372 172 72 272 72   -  -
24625  74 174 274 374 174 74   -  -   -  -
24626  76 176 276 376 176 76   -  -   -  -
24627  78 178 278 378 178 78 278 78   -  -
24628  80 180 280 380 180 80   -  - 380 80
24629  82 182 282 382 182 82   -  -   -  -
24630  84 184 284 384 184 84 284 84   -  -
24631  86 186 286 386 186 86   -  -   -  -
24632  88 188 288 388 188 88   -  -   -  -
24633  90 190 290 390 190 90 290 90 390 90
24634  92 192 292 392 192 92   -  -   -  -
24635  94 194 294 394 194 94   -  -   -  -
24636}
24637do_execsql_test joinD-852 {
24638  SELECT t1.*, t2.*, t3.*, t4.*
24639  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24640  FULL JOIN t3 ON t1.c=t3.c
24641  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24642  WHERE t3.y>0
24643  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24644} {
24645   6 106 206 306 106  6 206  6   -  -
24646  12 112 212 312 112 12 212 12   -  -
24647  18 118 218 318 118 18 218 18   -  -
24648  24 124 224 324 124 24 224 24   -  -
24649  30 130 230 330 130 30 230 30 330 30
24650  36 136 236 336 136 36 236 36   -  -
24651  42 142 242 342 142 42 242 42   -  -
24652  48 148 248 348 148 48 248 48   -  -
24653  54 154 254 354 154 54 254 54   -  -
24654  60 160 260 360 160 60 260 60 360 60
24655  66 166 266 366 166 66 266 66   -  -
24656  72 172 272 372 172 72 272 72   -  -
24657  78 178 278 378 178 78 278 78   -  -
24658  84 184 284 384 184 84 284 84   -  -
24659  90 190 290 390 190 90 290 90 390 90
24660   -   -   -   -   -  - 203  3   -  -
24661   -   -   -   -   -  - 209  9   -  -
24662   -   -   -   -   -  - 215 15   -  -
24663   -   -   -   -   -  - 221 21   -  -
24664   -   -   -   -   -  - 227 27   -  -
24665   -   -   -   -   -  - 233 33   -  -
24666   -   -   -   -   -  - 239 39   -  -
24667   -   -   -   -   -  - 245 45   -  -
24668   -   -   -   -   -  - 251 51   -  -
24669   -   -   -   -   -  - 257 57   -  -
24670   -   -   -   -   -  - 263 63   -  -
24671   -   -   -   -   -  - 269 69   -  -
24672   -   -   -   -   -  - 275 75   -  -
24673   -   -   -   -   -  - 281 81   -  -
24674   -   -   -   -   -  - 287 87   -  -
24675   -   -   -   -   -  - 293 93   -  -
24676}
24677do_execsql_test joinD-853 {
24678  SELECT t1.*, t2.*, t3.*, t4.*
24679  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24680  FULL JOIN t3 ON t1.c=t3.c
24681  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24682  WHERE t3.y>0 OR t3.y IS NULL
24683  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24684} {
24685   2 102 202 302 102  2   -  -   -  -
24686   4 104 204 304 104  4   -  -   -  -
24687   6 106 206 306 106  6 206  6   -  -
24688   8 108 208 308 108  8   -  -   -  -
24689  10 110 210 310 110 10   -  - 310 10
24690  12 112 212 312 112 12 212 12   -  -
24691  14 114 214 314 114 14   -  -   -  -
24692  16 116 216 316 116 16   -  -   -  -
24693  18 118 218 318 118 18 218 18   -  -
24694  20 120 220 320 120 20   -  - 320 20
24695  22 122 222 322 122 22   -  -   -  -
24696  24 124 224 324 124 24 224 24   -  -
24697  26 126 226 326 126 26   -  -   -  -
24698  28 128 228 328 128 28   -  -   -  -
24699  30 130 230 330 130 30 230 30 330 30
24700  32 132 232 332 132 32   -  -   -  -
24701  34 134 234 334 134 34   -  -   -  -
24702  36 136 236 336 136 36 236 36   -  -
24703  38 138 238 338 138 38   -  -   -  -
24704  40 140 240 340 140 40   -  - 340 40
24705  42 142 242 342 142 42 242 42   -  -
24706  44 144 244 344 144 44   -  -   -  -
24707  46 146 246 346 146 46   -  -   -  -
24708  48 148 248 348 148 48 248 48   -  -
24709  50 150 250 350 150 50   -  - 350 50
24710  52 152 252 352 152 52   -  -   -  -
24711  54 154 254 354 154 54 254 54   -  -
24712  56 156 256 356 156 56   -  -   -  -
24713  58 158 258 358 158 58   -  -   -  -
24714  60 160 260 360 160 60 260 60 360 60
24715  62 162 262 362 162 62   -  -   -  -
24716  64 164 264 364 164 64   -  -   -  -
24717  66 166 266 366 166 66 266 66   -  -
24718  68 168 268 368 168 68   -  -   -  -
24719  70 170 270 370 170 70   -  - 370 70
24720  72 172 272 372 172 72 272 72   -  -
24721  74 174 274 374 174 74   -  -   -  -
24722  76 176 276 376 176 76   -  -   -  -
24723  78 178 278 378 178 78 278 78   -  -
24724  80 180 280 380 180 80   -  - 380 80
24725  82 182 282 382 182 82   -  -   -  -
24726  84 184 284 384 184 84 284 84   -  -
24727  86 186 286 386 186 86   -  -   -  -
24728  88 188 288 388 188 88   -  -   -  -
24729  90 190 290 390 190 90 290 90 390 90
24730  92 192 292 392 192 92   -  -   -  -
24731  94 194 294 394 194 94   -  -   -  -
24732   -   -   -   - 100  0   -  -   -  -
24733   -   -   -   -   -  - 203  3   -  -
24734   -   -   -   -   -  - 209  9   -  -
24735   -   -   -   -   -  - 215 15   -  -
24736   -   -   -   -   -  - 221 21   -  -
24737   -   -   -   -   -  - 227 27   -  -
24738   -   -   -   -   -  - 233 33   -  -
24739   -   -   -   -   -  - 239 39   -  -
24740   -   -   -   -   -  - 245 45   -  -
24741   -   -   -   -   -  - 251 51   -  -
24742   -   -   -   -   -  - 257 57   -  -
24743   -   -   -   -   -  - 263 63   -  -
24744   -   -   -   -   -  - 269 69   -  -
24745   -   -   -   -   -  - 275 75   -  -
24746   -   -   -   -   -  - 281 81   -  -
24747   -   -   -   -   -  - 287 87   -  -
24748   -   -   -   -   -  - 293 93   -  -
24749}
24750do_execsql_test joinD-854 {
24751  SELECT t1.*, t2.*, t3.*, t4.*
24752  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24753  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24754  LEFT JOIN t4 ON t1.d=t4.d
24755  WHERE t4.z>0
24756  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24757} {
24758  10 110 210 310 110 10   -  - 310 10
24759  20 120 220 320 120 20   -  - 320 20
24760  30 130 230 330 130 30 230 30 330 30
24761  40 140 240 340 140 40   -  - 340 40
24762  50 150 250 350 150 50   -  - 350 50
24763  60 160 260 360 160 60 260 60 360 60
24764  70 170 270 370 170 70   -  - 370 70
24765  80 180 280 380 180 80   -  - 380 80
24766  90 190 290 390 190 90 290 90 390 90
24767}
24768do_execsql_test joinD-855 {
24769  SELECT t1.*, t2.*, t3.*, t4.*
24770  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24771  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24772  LEFT JOIN t4 ON t1.d=t4.d
24773  WHERE t4.z IS NULL OR t4.z>0
24774  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24775} {
24776   2 102 202 302 102  2   -  -   -  -
24777   4 104 204 304 104  4   -  -   -  -
24778   6 106 206 306 106  6 206  6   -  -
24779   8 108 208 308 108  8   -  -   -  -
24780  10 110 210 310 110 10   -  - 310 10
24781  12 112 212 312 112 12 212 12   -  -
24782  14 114 214 314 114 14   -  -   -  -
24783  16 116 216 316 116 16   -  -   -  -
24784  18 118 218 318 118 18 218 18   -  -
24785  20 120 220 320 120 20   -  - 320 20
24786  22 122 222 322 122 22   -  -   -  -
24787  24 124 224 324 124 24 224 24   -  -
24788  26 126 226 326 126 26   -  -   -  -
24789  28 128 228 328 128 28   -  -   -  -
24790  30 130 230 330 130 30 230 30 330 30
24791  32 132 232 332 132 32   -  -   -  -
24792  34 134 234 334 134 34   -  -   -  -
24793  36 136 236 336 136 36 236 36   -  -
24794  38 138 238 338 138 38   -  -   -  -
24795  40 140 240 340 140 40   -  - 340 40
24796  42 142 242 342 142 42 242 42   -  -
24797  44 144 244 344 144 44   -  -   -  -
24798  46 146 246 346 146 46   -  -   -  -
24799  48 148 248 348 148 48 248 48   -  -
24800  50 150 250 350 150 50   -  - 350 50
24801  52 152 252 352 152 52   -  -   -  -
24802  54 154 254 354 154 54 254 54   -  -
24803  56 156 256 356 156 56   -  -   -  -
24804  58 158 258 358 158 58   -  -   -  -
24805  60 160 260 360 160 60 260 60 360 60
24806  62 162 262 362 162 62   -  -   -  -
24807  64 164 264 364 164 64   -  -   -  -
24808  66 166 266 366 166 66 266 66   -  -
24809  68 168 268 368 168 68   -  -   -  -
24810  70 170 270 370 170 70   -  - 370 70
24811  72 172 272 372 172 72 272 72   -  -
24812  74 174 274 374 174 74   -  -   -  -
24813  76 176 276 376 176 76   -  -   -  -
24814  78 178 278 378 178 78 278 78   -  -
24815  80 180 280 380 180 80   -  - 380 80
24816  82 182 282 382 182 82   -  -   -  -
24817  84 184 284 384 184 84 284 84   -  -
24818  86 186 286 386 186 86   -  -   -  -
24819  88 188 288 388 188 88   -  -   -  -
24820  90 190 290 390 190 90 290 90 390 90
24821  92 192 292 392 192 92   -  -   -  -
24822  94 194 294 394 194 94   -  -   -  -
24823   -   -   -   - 100  0   -  -   -  -
24824   -   -   -   -   -  - 200  0   -  -
24825   -   -   -   -   -  - 203  3   -  -
24826   -   -   -   -   -  - 209  9   -  -
24827   -   -   -   -   -  - 215 15   -  -
24828   -   -   -   -   -  - 221 21   -  -
24829   -   -   -   -   -  - 227 27   -  -
24830   -   -   -   -   -  - 233 33   -  -
24831   -   -   -   -   -  - 239 39   -  -
24832   -   -   -   -   -  - 245 45   -  -
24833   -   -   -   -   -  - 251 51   -  -
24834   -   -   -   -   -  - 257 57   -  -
24835   -   -   -   -   -  - 263 63   -  -
24836   -   -   -   -   -  - 269 69   -  -
24837   -   -   -   -   -  - 275 75   -  -
24838   -   -   -   -   -  - 281 81   -  -
24839   -   -   -   -   -  - 287 87   -  -
24840   -   -   -   -   -  - 293 93   -  -
24841}
24842do_execsql_test joinD-856 {
24843  SELECT t1.*, t2.*, t3.*, t4.*
24844  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24845  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24846  LEFT JOIN t4 ON t1.d=t4.d
24847  WHERE t2.x>0 AND t4.z>0
24848  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24849} {
24850  10 110 210 310 110 10   -  - 310 10
24851  20 120 220 320 120 20   -  - 320 20
24852  30 130 230 330 130 30 230 30 330 30
24853  40 140 240 340 140 40   -  - 340 40
24854  50 150 250 350 150 50   -  - 350 50
24855  60 160 260 360 160 60 260 60 360 60
24856  70 170 270 370 170 70   -  - 370 70
24857  80 180 280 380 180 80   -  - 380 80
24858  90 190 290 390 190 90 290 90 390 90
24859}
24860do_execsql_test joinD-857 {
24861  SELECT t1.*, t2.*, t3.*, t4.*
24862  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24863  FULL JOIN t3 ON t1.c=t3.c
24864  LEFT JOIN t4 ON t1.d=t4.d
24865  WHERE t4.z>0 AND t3.y>0
24866  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24867} {
24868  30 130 230 330 130 30 230 30 330 30
24869  60 160 260 360 160 60 260 60 360 60
24870  90 190 290 390 190 90 290 90 390 90
24871}
24872do_execsql_test joinD-858 {
24873  SELECT t1.*, t2.*, t3.*, t4.*
24874  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24875  FULL JOIN t3 ON t1.c=t3.c
24876  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24877  WHERE t2.x>0 AND t3.y>0
24878  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24879} {
24880   6 106 206 306 106  6 206  6   -  -
24881  12 112 212 312 112 12 212 12   -  -
24882  18 118 218 318 118 18 218 18   -  -
24883  24 124 224 324 124 24 224 24   -  -
24884  30 130 230 330 130 30 230 30 330 30
24885  36 136 236 336 136 36 236 36   -  -
24886  42 142 242 342 142 42 242 42   -  -
24887  48 148 248 348 148 48 248 48   -  -
24888  54 154 254 354 154 54 254 54   -  -
24889  60 160 260 360 160 60 260 60 360 60
24890  66 166 266 366 166 66 266 66   -  -
24891  72 172 272 372 172 72 272 72   -  -
24892  78 178 278 378 178 78 278 78   -  -
24893  84 184 284 384 184 84 284 84   -  -
24894  90 190 290 390 190 90 290 90 390 90
24895}
24896do_execsql_test joinD-859 {
24897  SELECT t1.*, t2.*, t3.*, t4.*
24898  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24899  FULL JOIN t3 ON t1.c=t3.c
24900  LEFT JOIN t4 ON t1.d=t4.d
24901  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
24902  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24903} {
24904  30 130 230 330 130 30 230 30 330 30
24905  60 160 260 360 160 60 260 60 360 60
24906  90 190 290 390 190 90 290 90 390 90
24907}
24908do_execsql_test joinD-860 {
24909  SELECT t1.*, t2.*, t3.*, t4.*
24910  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24911  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24912  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24914} {
24915   2 102 202 302 102  2   -  -   -  -
24916   4 104 204 304 104  4   -  -   -  -
24917   6 106 206 306 106  6 206  6   -  -
24918   8 108 208 308 108  8   -  -   -  -
24919  10 110 210 310 110 10   -  - 310 10
24920  12 112 212 312 112 12 212 12   -  -
24921  14 114 214 314 114 14   -  -   -  -
24922  16 116 216 316 116 16   -  -   -  -
24923  18 118 218 318 118 18 218 18   -  -
24924  20 120 220 320 120 20   -  - 320 20
24925  22 122 222 322 122 22   -  -   -  -
24926  24 124 224 324 124 24 224 24   -  -
24927  26 126 226 326 126 26   -  -   -  -
24928  28 128 228 328 128 28   -  -   -  -
24929  30 130 230 330 130 30 230 30 330 30
24930  32 132 232 332 132 32   -  -   -  -
24931  34 134 234 334 134 34   -  -   -  -
24932  36 136 236 336 136 36 236 36   -  -
24933  38 138 238 338 138 38   -  -   -  -
24934  40 140 240 340 140 40   -  - 340 40
24935  42 142 242 342 142 42 242 42   -  -
24936  44 144 244 344 144 44   -  -   -  -
24937  46 146 246 346 146 46   -  -   -  -
24938  48 148 248 348 148 48 248 48   -  -
24939  50 150 250 350 150 50   -  - 350 50
24940  52 152 252 352 152 52   -  -   -  -
24941  54 154 254 354 154 54 254 54   -  -
24942  56 156 256 356 156 56   -  -   -  -
24943  58 158 258 358 158 58   -  -   -  -
24944  60 160 260 360 160 60 260 60 360 60
24945  62 162 262 362 162 62   -  -   -  -
24946  64 164 264 364 164 64   -  -   -  -
24947  66 166 266 366 166 66 266 66   -  -
24948  68 168 268 368 168 68   -  -   -  -
24949  70 170 270 370 170 70   -  - 370 70
24950  72 172 272 372 172 72 272 72   -  -
24951  74 174 274 374 174 74   -  -   -  -
24952  76 176 276 376 176 76   -  -   -  -
24953  78 178 278 378 178 78 278 78   -  -
24954  80 180 280 380 180 80   -  - 380 80
24955  82 182 282 382 182 82   -  -   -  -
24956  84 184 284 384 184 84 284 84   -  -
24957  86 186 286 386 186 86   -  -   -  -
24958  88 188 288 388 188 88   -  -   -  -
24959  90 190 290 390 190 90 290 90 390 90
24960  92 192 292 392 192 92   -  -   -  -
24961  94 194 294 394 194 94   -  -   -  -
24962   -   -   -   - 100  0   -  -   -  -
24963   -   -   -   -   -  - 200  0   -  -
24964   -   -   -   -   -  - 203  3   -  -
24965   -   -   -   -   -  - 209  9   -  -
24966   -   -   -   -   -  - 215 15   -  -
24967   -   -   -   -   -  - 221 21   -  -
24968   -   -   -   -   -  - 227 27   -  -
24969   -   -   -   -   -  - 233 33   -  -
24970   -   -   -   -   -  - 239 39   -  -
24971   -   -   -   -   -  - 245 45   -  -
24972   -   -   -   -   -  - 251 51   -  -
24973   -   -   -   -   -  - 257 57   -  -
24974   -   -   -   -   -  - 263 63   -  -
24975   -   -   -   -   -  - 269 69   -  -
24976   -   -   -   -   -  - 275 75   -  -
24977   -   -   -   -   -  - 281 81   -  -
24978   -   -   -   -   -  - 287 87   -  -
24979   -   -   -   -   -  - 293 93   -  -
24980}
24981do_execsql_test joinD-861 {
24982  SELECT t1.*, t2.*, t3.*, t4.*
24983  FROM t1 RIGHT JOIN t2 ON t2.x>0
24984  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24985  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24986  WHERE t1.b IS NOT DISTINCT FROM t2.b
24987  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24988} {
24989   2 102 202 302 102  2   -  -   -  -
24990   4 104 204 304 104  4   -  -   -  -
24991   6 106 206 306 106  6 206  6   -  -
24992   8 108 208 308 108  8   -  -   -  -
24993  10 110 210 310 110 10   -  - 310 10
24994  12 112 212 312 112 12 212 12   -  -
24995  14 114 214 314 114 14   -  -   -  -
24996  16 116 216 316 116 16   -  -   -  -
24997  18 118 218 318 118 18 218 18   -  -
24998  20 120 220 320 120 20   -  - 320 20
24999  22 122 222 322 122 22   -  -   -  -
25000  24 124 224 324 124 24 224 24   -  -
25001  26 126 226 326 126 26   -  -   -  -
25002  28 128 228 328 128 28   -  -   -  -
25003  30 130 230 330 130 30 230 30 330 30
25004  32 132 232 332 132 32   -  -   -  -
25005  34 134 234 334 134 34   -  -   -  -
25006  36 136 236 336 136 36 236 36   -  -
25007  38 138 238 338 138 38   -  -   -  -
25008  40 140 240 340 140 40   -  - 340 40
25009  42 142 242 342 142 42 242 42   -  -
25010  44 144 244 344 144 44   -  -   -  -
25011  46 146 246 346 146 46   -  -   -  -
25012  48 148 248 348 148 48 248 48   -  -
25013  50 150 250 350 150 50   -  - 350 50
25014  52 152 252 352 152 52   -  -   -  -
25015  54 154 254 354 154 54 254 54   -  -
25016  56 156 256 356 156 56   -  -   -  -
25017  58 158 258 358 158 58   -  -   -  -
25018  60 160 260 360 160 60 260 60 360 60
25019  62 162 262 362 162 62   -  -   -  -
25020  64 164 264 364 164 64   -  -   -  -
25021  66 166 266 366 166 66 266 66   -  -
25022  68 168 268 368 168 68   -  -   -  -
25023  70 170 270 370 170 70   -  - 370 70
25024  72 172 272 372 172 72 272 72   -  -
25025  74 174 274 374 174 74   -  -   -  -
25026  76 176 276 376 176 76   -  -   -  -
25027  78 178 278 378 178 78 278 78   -  -
25028  80 180 280 380 180 80   -  - 380 80
25029  82 182 282 382 182 82   -  -   -  -
25030  84 184 284 384 184 84 284 84   -  -
25031  86 186 286 386 186 86   -  -   -  -
25032  88 188 288 388 188 88   -  -   -  -
25033  90 190 290 390 190 90 290 90 390 90
25034  92 192 292 392 192 92   -  -   -  -
25035  94 194 294 394 194 94   -  -   -  -
25036   -   -   -   -   -  - 200  0   -  -
25037}
25038do_execsql_test joinD-862 {
25039  SELECT t1.*, t2.*, t3.*, t4.*
25040  FROM t1 RIGHT JOIN t2 ON t2.x>0
25041  FULL JOIN t3 ON t3.y>0
25042  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25043  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
25044  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25045} {
25046   6 106 206 306 106  6 206  6   -  -
25047  12 112 212 312 112 12 212 12   -  -
25048  18 118 218 318 118 18 218 18   -  -
25049  24 124 224 324 124 24 224 24   -  -
25050  30 130 230 330 130 30 230 30 330 30
25051  36 136 236 336 136 36 236 36   -  -
25052  42 142 242 342 142 42 242 42   -  -
25053  48 148 248 348 148 48 248 48   -  -
25054  54 154 254 354 154 54 254 54   -  -
25055  60 160 260 360 160 60 260 60 360 60
25056  66 166 266 366 166 66 266 66   -  -
25057  72 172 272 372 172 72 272 72   -  -
25058  78 178 278 378 178 78 278 78   -  -
25059  84 184 284 384 184 84 284 84   -  -
25060  90 190 290 390 190 90 290 90 390 90
25061}
25062do_execsql_test joinD-863 {
25063  SELECT t1.*, t2.*, t3.*, t4.*
25064  FROM t1 RIGHT JOIN t2 ON t2.x>0
25065  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25066  LEFT JOIN t4 ON t4.z>0
25067  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
25068  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25069} {
25070  10 110 210 310 110 10   -  - 310 10
25071  20 120 220 320 120 20   -  - 320 20
25072  30 130 230 330 130 30 230 30 330 30
25073  40 140 240 340 140 40   -  - 340 40
25074  50 150 250 350 150 50   -  - 350 50
25075  60 160 260 360 160 60 260 60 360 60
25076  70 170 270 370 170 70   -  - 370 70
25077  80 180 280 380 180 80   -  - 380 80
25078  90 190 290 390 190 90 290 90 390 90
25079}
25080do_execsql_test joinD-864 {
25081  SELECT t1.*, t2.*, t3.*, t4.*
25082  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
25083  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25084  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
25085  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25086} {
25087   2 102 202 302 102  2   -  -   -  -
25088   4 104 204 304 104  4   -  -   -  -
25089   6 106 206 306 106  6 206  6   -  -
25090   8 108 208 308 108  8   -  -   -  -
25091  10 110 210 310 110 10   -  - 310 10
25092  12 112 212 312 112 12 212 12   -  -
25093  14 114 214 314 114 14   -  -   -  -
25094  16 116 216 316 116 16   -  -   -  -
25095  18 118 218 318 118 18 218 18   -  -
25096  20 120 220 320 120 20   -  - 320 20
25097  22 122 222 322 122 22   -  -   -  -
25098  24 124 224 324 124 24 224 24   -  -
25099  26 126 226 326 126 26   -  -   -  -
25100  28 128 228 328 128 28   -  -   -  -
25101  30 130 230 330 130 30 230 30 330 30
25102  32 132 232 332 132 32   -  -   -  -
25103  34 134 234 334 134 34   -  -   -  -
25104  36 136 236 336 136 36 236 36   -  -
25105  38 138 238 338 138 38   -  -   -  -
25106  40 140 240 340 140 40   -  - 340 40
25107  42 142 242 342 142 42 242 42   -  -
25108  44 144 244 344 144 44   -  -   -  -
25109  46 146 246 346 146 46   -  -   -  -
25110  48 148 248 348 148 48 248 48   -  -
25111  50 150 250 350 150 50   -  - 350 50
25112  52 152 252 352 152 52   -  -   -  -
25113  54 154 254 354 154 54 254 54   -  -
25114  56 156 256 356 156 56   -  -   -  -
25115  58 158 258 358 158 58   -  -   -  -
25116  60 160 260 360 160 60 260 60 360 60
25117  62 162 262 362 162 62   -  -   -  -
25118  64 164 264 364 164 64   -  -   -  -
25119  66 166 266 366 166 66 266 66   -  -
25120  68 168 268 368 168 68   -  -   -  -
25121  70 170 270 370 170 70   -  - 370 70
25122  72 172 272 372 172 72 272 72   -  -
25123  74 174 274 374 174 74   -  -   -  -
25124  76 176 276 376 176 76   -  -   -  -
25125  78 178 278 378 178 78 278 78   -  -
25126  80 180 280 380 180 80   -  - 380 80
25127  82 182 282 382 182 82   -  -   -  -
25128  84 184 284 384 184 84 284 84   -  -
25129  86 186 286 386 186 86   -  -   -  -
25130  88 188 288 388 188 88   -  -   -  -
25131  90 190 290 390 190 90 290 90 390 90
25132  92 192 292 392 192 92   -  -   -  -
25133  94 194 294 394 194 94   -  -   -  -
25134   -   -   -   - 100  0   -  -   -  -
25135   -   -   -   -   -  - 200  0   -  -
25136   -   -   -   -   -  - 203  3   -  -
25137   -   -   -   -   -  - 209  9   -  -
25138   -   -   -   -   -  - 215 15   -  -
25139   -   -   -   -   -  - 221 21   -  -
25140   -   -   -   -   -  - 227 27   -  -
25141   -   -   -   -   -  - 233 33   -  -
25142   -   -   -   -   -  - 239 39   -  -
25143   -   -   -   -   -  - 245 45   -  -
25144   -   -   -   -   -  - 251 51   -  -
25145   -   -   -   -   -  - 257 57   -  -
25146   -   -   -   -   -  - 263 63   -  -
25147   -   -   -   -   -  - 269 69   -  -
25148   -   -   -   -   -  - 275 75   -  -
25149   -   -   -   -   -  - 281 81   -  -
25150   -   -   -   -   -  - 287 87   -  -
25151   -   -   -   -   -  - 293 93   -  -
25152}
25153do_execsql_test joinD-865 {
25154  SELECT t1.*, t2.*, t3.*, t4.*
25155  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25156  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25157  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25158  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25159} {
25160  10 110 210 310 110 10   -  - 310 10
25161  20 120 220 320 120 20   -  - 320 20
25162  30 130 230 330 130 30 230 30 330 30
25163  40 140 240 340 140 40   -  - 340 40
25164  50 150 250 350 150 50   -  - 350 50
25165  60 160 260 360 160 60 260 60 360 60
25166  70 170 270 370 170 70   -  - 370 70
25167  80 180 280 380 180 80   -  - 380 80
25168  90 190 290 390 190 90 290 90 390 90
25169   -   -   -   -   -  -   -  - 300  0
25170   -   -   -   -   -  -   -  - 305  5
25171   -   -   -   -   -  -   -  - 315 15
25172   -   -   -   -   -  -   -  - 325 25
25173   -   -   -   -   -  -   -  - 335 35
25174   -   -   -   -   -  -   -  - 345 45
25175   -   -   -   -   -  -   -  - 355 55
25176   -   -   -   -   -  -   -  - 365 65
25177   -   -   -   -   -  -   -  - 375 75
25178   -   -   -   -   -  -   -  - 385 85
25179   -   -   -   -   -  -   -  - 395 95
25180}
25181do_execsql_test joinD-866 {
25182  SELECT t1.*, t2.*, t3.*, t4.*
25183  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
25184  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25185  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25186  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25187} {
25188  10 110 210 310 110 10   -  - 310 10
25189  20 120 220 320 120 20   -  - 320 20
25190  30 130 230 330 130 30 230 30 330 30
25191  40 140 240 340 140 40   -  - 340 40
25192  50 150 250 350 150 50   -  - 350 50
25193  60 160 260 360 160 60 260 60 360 60
25194  70 170 270 370 170 70   -  - 370 70
25195  80 180 280 380 180 80   -  - 380 80
25196  90 190 290 390 190 90 290 90 390 90
25197   -   -   -   -   -  -   -  - 300  0
25198   -   -   -   -   -  -   -  - 305  5
25199   -   -   -   -   -  -   -  - 315 15
25200   -   -   -   -   -  -   -  - 325 25
25201   -   -   -   -   -  -   -  - 335 35
25202   -   -   -   -   -  -   -  - 345 45
25203   -   -   -   -   -  -   -  - 355 55
25204   -   -   -   -   -  -   -  - 365 65
25205   -   -   -   -   -  -   -  - 375 75
25206   -   -   -   -   -  -   -  - 385 85
25207   -   -   -   -   -  -   -  - 395 95
25208}
25209do_execsql_test joinD-867 {
25210  SELECT t1.*, t2.*, t3.*, t4.*
25211  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25212  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25213  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25214  WHERE t2.x>0
25215  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25216} {
25217  10 110 210 310 110 10   -  - 310 10
25218  20 120 220 320 120 20   -  - 320 20
25219  30 130 230 330 130 30 230 30 330 30
25220  40 140 240 340 140 40   -  - 340 40
25221  50 150 250 350 150 50   -  - 350 50
25222  60 160 260 360 160 60 260 60 360 60
25223  70 170 270 370 170 70   -  - 370 70
25224  80 180 280 380 180 80   -  - 380 80
25225  90 190 290 390 190 90 290 90 390 90
25226}
25227do_execsql_test joinD-868 {
25228  SELECT t1.*, t2.*, t3.*, t4.*
25229  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25230  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25231  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25232  WHERE (t2.x>0 OR t2.x IS NULL)
25233  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25234} {
25235  10 110 210 310 110 10   -  - 310 10
25236  20 120 220 320 120 20   -  - 320 20
25237  30 130 230 330 130 30 230 30 330 30
25238  40 140 240 340 140 40   -  - 340 40
25239  50 150 250 350 150 50   -  - 350 50
25240  60 160 260 360 160 60 260 60 360 60
25241  70 170 270 370 170 70   -  - 370 70
25242  80 180 280 380 180 80   -  - 380 80
25243  90 190 290 390 190 90 290 90 390 90
25244   -   -   -   -   -  -   -  - 300  0
25245   -   -   -   -   -  -   -  - 305  5
25246   -   -   -   -   -  -   -  - 315 15
25247   -   -   -   -   -  -   -  - 325 25
25248   -   -   -   -   -  -   -  - 335 35
25249   -   -   -   -   -  -   -  - 345 45
25250   -   -   -   -   -  -   -  - 355 55
25251   -   -   -   -   -  -   -  - 365 65
25252   -   -   -   -   -  -   -  - 375 75
25253   -   -   -   -   -  -   -  - 385 85
25254   -   -   -   -   -  -   -  - 395 95
25255}
25256do_execsql_test joinD-869 {
25257  SELECT t1.*, t2.*, t3.*, t4.*
25258  FROM t1 RIGHT JOIN t2 ON true
25259  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25260  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25261  WHERE t1.b=t2.b AND t2.x>0
25262  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25263} {
25264  10 110 210 310 110 10   -  - 310 10
25265  20 120 220 320 120 20   -  - 320 20
25266  30 130 230 330 130 30 230 30 330 30
25267  40 140 240 340 140 40   -  - 340 40
25268  50 150 250 350 150 50   -  - 350 50
25269  60 160 260 360 160 60 260 60 360 60
25270  70 170 270 370 170 70   -  - 370 70
25271  80 180 280 380 180 80   -  - 380 80
25272  90 190 290 390 190 90 290 90 390 90
25273}
25274do_execsql_test joinD-870 {
25275  SELECT t1.*, t2.*, t3.*, t4.*
25276  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25277  FULL JOIN t3 ON t1.c=t3.c
25278  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25279  WHERE t3.y>0
25280  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25281} {
25282  30 130 230 330 130 30 230 30 330 30
25283  60 160 260 360 160 60 260 60 360 60
25284  90 190 290 390 190 90 290 90 390 90
25285}
25286do_execsql_test joinD-871 {
25287  SELECT t1.*, t2.*, t3.*, t4.*
25288  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25289  FULL JOIN t3 ON t1.c=t3.c
25290  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25291  WHERE t3.y>0 OR t3.y IS NULL
25292  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25293} {
25294  10 110 210 310 110 10   -  - 310 10
25295  20 120 220 320 120 20   -  - 320 20
25296  30 130 230 330 130 30 230 30 330 30
25297  40 140 240 340 140 40   -  - 340 40
25298  50 150 250 350 150 50   -  - 350 50
25299  60 160 260 360 160 60 260 60 360 60
25300  70 170 270 370 170 70   -  - 370 70
25301  80 180 280 380 180 80   -  - 380 80
25302  90 190 290 390 190 90 290 90 390 90
25303   -   -   -   -   -  -   -  - 300  0
25304   -   -   -   -   -  -   -  - 305  5
25305   -   -   -   -   -  -   -  - 315 15
25306   -   -   -   -   -  -   -  - 325 25
25307   -   -   -   -   -  -   -  - 335 35
25308   -   -   -   -   -  -   -  - 345 45
25309   -   -   -   -   -  -   -  - 355 55
25310   -   -   -   -   -  -   -  - 365 65
25311   -   -   -   -   -  -   -  - 375 75
25312   -   -   -   -   -  -   -  - 385 85
25313   -   -   -   -   -  -   -  - 395 95
25314}
25315do_execsql_test joinD-872 {
25316  SELECT t1.*, t2.*, t3.*, t4.*
25317  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25318  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25319  RIGHT JOIN t4 ON t1.d=t4.d
25320  WHERE t4.z>0
25321  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25322} {
25323  10 110 210 310 110 10   -  - 310 10
25324  20 120 220 320 120 20   -  - 320 20
25325  30 130 230 330 130 30 230 30 330 30
25326  40 140 240 340 140 40   -  - 340 40
25327  50 150 250 350 150 50   -  - 350 50
25328  60 160 260 360 160 60 260 60 360 60
25329  70 170 270 370 170 70   -  - 370 70
25330  80 180 280 380 180 80   -  - 380 80
25331  90 190 290 390 190 90 290 90 390 90
25332   -   -   -   -   -  -   -  - 305  5
25333   -   -   -   -   -  -   -  - 315 15
25334   -   -   -   -   -  -   -  - 325 25
25335   -   -   -   -   -  -   -  - 335 35
25336   -   -   -   -   -  -   -  - 345 45
25337   -   -   -   -   -  -   -  - 355 55
25338   -   -   -   -   -  -   -  - 365 65
25339   -   -   -   -   -  -   -  - 375 75
25340   -   -   -   -   -  -   -  - 385 85
25341   -   -   -   -   -  -   -  - 395 95
25342}
25343do_execsql_test joinD-873 {
25344  SELECT t1.*, t2.*, t3.*, t4.*
25345  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25346  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25347  RIGHT JOIN t4 ON t1.d=t4.d
25348  WHERE t4.z IS NULL OR t4.z>0
25349  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25350} {
25351  10 110 210 310 110 10   -  - 310 10
25352  20 120 220 320 120 20   -  - 320 20
25353  30 130 230 330 130 30 230 30 330 30
25354  40 140 240 340 140 40   -  - 340 40
25355  50 150 250 350 150 50   -  - 350 50
25356  60 160 260 360 160 60 260 60 360 60
25357  70 170 270 370 170 70   -  - 370 70
25358  80 180 280 380 180 80   -  - 380 80
25359  90 190 290 390 190 90 290 90 390 90
25360   -   -   -   -   -  -   -  - 305  5
25361   -   -   -   -   -  -   -  - 315 15
25362   -   -   -   -   -  -   -  - 325 25
25363   -   -   -   -   -  -   -  - 335 35
25364   -   -   -   -   -  -   -  - 345 45
25365   -   -   -   -   -  -   -  - 355 55
25366   -   -   -   -   -  -   -  - 365 65
25367   -   -   -   -   -  -   -  - 375 75
25368   -   -   -   -   -  -   -  - 385 85
25369   -   -   -   -   -  -   -  - 395 95
25370}
25371do_execsql_test joinD-874 {
25372  SELECT t1.*, t2.*, t3.*, t4.*
25373  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25374  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25375  RIGHT JOIN t4 ON t1.d=t4.d
25376  WHERE t2.x>0 AND t4.z>0
25377  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25378} {
25379  10 110 210 310 110 10   -  - 310 10
25380  20 120 220 320 120 20   -  - 320 20
25381  30 130 230 330 130 30 230 30 330 30
25382  40 140 240 340 140 40   -  - 340 40
25383  50 150 250 350 150 50   -  - 350 50
25384  60 160 260 360 160 60 260 60 360 60
25385  70 170 270 370 170 70   -  - 370 70
25386  80 180 280 380 180 80   -  - 380 80
25387  90 190 290 390 190 90 290 90 390 90
25388}
25389do_execsql_test joinD-875 {
25390  SELECT t1.*, t2.*, t3.*, t4.*
25391  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25392  FULL JOIN t3 ON t1.c=t3.c
25393  RIGHT JOIN t4 ON t1.d=t4.d
25394  WHERE t4.z>0 AND t3.y>0
25395  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25396} {
25397  30 130 230 330 130 30 230 30 330 30
25398  60 160 260 360 160 60 260 60 360 60
25399  90 190 290 390 190 90 290 90 390 90
25400}
25401do_execsql_test joinD-876 {
25402  SELECT t1.*, t2.*, t3.*, t4.*
25403  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25404  FULL JOIN t3 ON t1.c=t3.c
25405  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25406  WHERE t2.x>0 AND t3.y>0
25407  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25408} {
25409  30 130 230 330 130 30 230 30 330 30
25410  60 160 260 360 160 60 260 60 360 60
25411  90 190 290 390 190 90 290 90 390 90
25412}
25413do_execsql_test joinD-877 {
25414  SELECT t1.*, t2.*, t3.*, t4.*
25415  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25416  FULL JOIN t3 ON t1.c=t3.c
25417  RIGHT JOIN t4 ON t1.d=t4.d
25418  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
25419  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25420} {
25421  30 130 230 330 130 30 230 30 330 30
25422  60 160 260 360 160 60 260 60 360 60
25423  90 190 290 390 190 90 290 90 390 90
25424}
25425do_execsql_test joinD-878 {
25426  SELECT t1.*, t2.*, t3.*, t4.*
25427  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
25428  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25429  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25430  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25431} {
25432  10 110 210 310 110 10   -  - 310 10
25433  20 120 220 320 120 20   -  - 320 20
25434  30 130 230 330 130 30 230 30 330 30
25435  40 140 240 340 140 40   -  - 340 40
25436  50 150 250 350 150 50   -  - 350 50
25437  60 160 260 360 160 60 260 60 360 60
25438  70 170 270 370 170 70   -  - 370 70
25439  80 180 280 380 180 80   -  - 380 80
25440  90 190 290 390 190 90 290 90 390 90
25441   -   -   -   -   -  -   -  - 300  0
25442   -   -   -   -   -  -   -  - 305  5
25443   -   -   -   -   -  -   -  - 315 15
25444   -   -   -   -   -  -   -  - 325 25
25445   -   -   -   -   -  -   -  - 335 35
25446   -   -   -   -   -  -   -  - 345 45
25447   -   -   -   -   -  -   -  - 355 55
25448   -   -   -   -   -  -   -  - 365 65
25449   -   -   -   -   -  -   -  - 375 75
25450   -   -   -   -   -  -   -  - 385 85
25451   -   -   -   -   -  -   -  - 395 95
25452}
25453do_execsql_test joinD-879 {
25454  SELECT t1.*, t2.*, t3.*, t4.*
25455  FROM t1 RIGHT JOIN t2 ON t2.x>0
25456  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25457  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25458  WHERE t1.b IS NOT DISTINCT FROM t2.b
25459  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25460} {
25461  10 110 210 310 110 10   -  - 310 10
25462  20 120 220 320 120 20   -  - 320 20
25463  30 130 230 330 130 30 230 30 330 30
25464  40 140 240 340 140 40   -  - 340 40
25465  50 150 250 350 150 50   -  - 350 50
25466  60 160 260 360 160 60 260 60 360 60
25467  70 170 270 370 170 70   -  - 370 70
25468  80 180 280 380 180 80   -  - 380 80
25469  90 190 290 390 190 90 290 90 390 90
25470   -   -   -   -   -  -   -  - 300  0
25471}
25472do_execsql_test joinD-880 {
25473  SELECT t1.*, t2.*, t3.*, t4.*
25474  FROM t1 RIGHT JOIN t2 ON t2.x>0
25475  FULL JOIN t3 ON t3.y>0
25476  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25477  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
25478  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25479} {
25480  30 130 230 330 130 30 230 30 330 30
25481  60 160 260 360 160 60 260 60 360 60
25482  90 190 290 390 190 90 290 90 390 90
25483}
25484do_execsql_test joinD-881 {
25485  SELECT t1.*, t2.*, t3.*, t4.*
25486  FROM t1 RIGHT JOIN t2 ON t2.x>0
25487  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25488  RIGHT JOIN t4 ON t4.z>0
25489  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
25490  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25491} {
25492  10 110 210 310 110 10   -  - 310 10
25493  20 120 220 320 120 20   -  - 320 20
25494  30 130 230 330 130 30 230 30 330 30
25495  40 140 240 340 140 40   -  - 340 40
25496  50 150 250 350 150 50   -  - 350 50
25497  60 160 260 360 160 60 260 60 360 60
25498  70 170 270 370 170 70   -  - 370 70
25499  80 180 280 380 180 80   -  - 380 80
25500  90 190 290 390 190 90 290 90 390 90
25501}
25502do_execsql_test joinD-882 {
25503  SELECT t1.*, t2.*, t3.*, t4.*
25504  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
25505  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25506  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25507  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25508} {
25509  10 110 210 310 110 10   -  - 310 10
25510  20 120 220 320 120 20   -  - 320 20
25511  30 130 230 330 130 30 230 30 330 30
25512  40 140 240 340 140 40   -  - 340 40
25513  50 150 250 350 150 50   -  - 350 50
25514  60 160 260 360 160 60 260 60 360 60
25515  70 170 270 370 170 70   -  - 370 70
25516  80 180 280 380 180 80   -  - 380 80
25517  90 190 290 390 190 90 290 90 390 90
25518   -   -   -   -   -  -   -  - 300  0
25519   -   -   -   -   -  -   -  - 305  5
25520   -   -   -   -   -  -   -  - 315 15
25521   -   -   -   -   -  -   -  - 325 25
25522   -   -   -   -   -  -   -  - 335 35
25523   -   -   -   -   -  -   -  - 345 45
25524   -   -   -   -   -  -   -  - 355 55
25525   -   -   -   -   -  -   -  - 365 65
25526   -   -   -   -   -  -   -  - 375 75
25527   -   -   -   -   -  -   -  - 385 85
25528   -   -   -   -   -  -   -  - 395 95
25529}
25530do_execsql_test joinD-883 {
25531  SELECT t1.*, t2.*, t3.*, t4.*
25532  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25533  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25534  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25535  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25536} {
25537   2 102 202 302 102  2   -  -   -  -
25538   4 104 204 304 104  4   -  -   -  -
25539   6 106 206 306 106  6 206  6   -  -
25540   8 108 208 308 108  8   -  -   -  -
25541  10 110 210 310 110 10   -  - 310 10
25542  12 112 212 312 112 12 212 12   -  -
25543  14 114 214 314 114 14   -  -   -  -
25544  16 116 216 316 116 16   -  -   -  -
25545  18 118 218 318 118 18 218 18   -  -
25546  20 120 220 320 120 20   -  - 320 20
25547  22 122 222 322 122 22   -  -   -  -
25548  24 124 224 324 124 24 224 24   -  -
25549  26 126 226 326 126 26   -  -   -  -
25550  28 128 228 328 128 28   -  -   -  -
25551  30 130 230 330 130 30 230 30 330 30
25552  32 132 232 332 132 32   -  -   -  -
25553  34 134 234 334 134 34   -  -   -  -
25554  36 136 236 336 136 36 236 36   -  -
25555  38 138 238 338 138 38   -  -   -  -
25556  40 140 240 340 140 40   -  - 340 40
25557  42 142 242 342 142 42 242 42   -  -
25558  44 144 244 344 144 44   -  -   -  -
25559  46 146 246 346 146 46   -  -   -  -
25560  48 148 248 348 148 48 248 48   -  -
25561  50 150 250 350 150 50   -  - 350 50
25562  52 152 252 352 152 52   -  -   -  -
25563  54 154 254 354 154 54 254 54   -  -
25564  56 156 256 356 156 56   -  -   -  -
25565  58 158 258 358 158 58   -  -   -  -
25566  60 160 260 360 160 60 260 60 360 60
25567  62 162 262 362 162 62   -  -   -  -
25568  64 164 264 364 164 64   -  -   -  -
25569  66 166 266 366 166 66 266 66   -  -
25570  68 168 268 368 168 68   -  -   -  -
25571  70 170 270 370 170 70   -  - 370 70
25572  72 172 272 372 172 72 272 72   -  -
25573  74 174 274 374 174 74   -  -   -  -
25574  76 176 276 376 176 76   -  -   -  -
25575  78 178 278 378 178 78 278 78   -  -
25576  80 180 280 380 180 80   -  - 380 80
25577  82 182 282 382 182 82   -  -   -  -
25578  84 184 284 384 184 84 284 84   -  -
25579  86 186 286 386 186 86   -  -   -  -
25580  88 188 288 388 188 88   -  -   -  -
25581  90 190 290 390 190 90 290 90 390 90
25582  92 192 292 392 192 92   -  -   -  -
25583  94 194 294 394 194 94   -  -   -  -
25584   -   -   -   - 100  0   -  -   -  -
25585   -   -   -   -   -  - 200  0   -  -
25586   -   -   -   -   -  - 203  3   -  -
25587   -   -   -   -   -  - 209  9   -  -
25588   -   -   -   -   -  - 215 15   -  -
25589   -   -   -   -   -  - 221 21   -  -
25590   -   -   -   -   -  - 227 27   -  -
25591   -   -   -   -   -  - 233 33   -  -
25592   -   -   -   -   -  - 239 39   -  -
25593   -   -   -   -   -  - 245 45   -  -
25594   -   -   -   -   -  - 251 51   -  -
25595   -   -   -   -   -  - 257 57   -  -
25596   -   -   -   -   -  - 263 63   -  -
25597   -   -   -   -   -  - 269 69   -  -
25598   -   -   -   -   -  - 275 75   -  -
25599   -   -   -   -   -  - 281 81   -  -
25600   -   -   -   -   -  - 287 87   -  -
25601   -   -   -   -   -  - 293 93   -  -
25602   -   -   -   -   -  -   -  - 300  0
25603   -   -   -   -   -  -   -  - 305  5
25604   -   -   -   -   -  -   -  - 315 15
25605   -   -   -   -   -  -   -  - 325 25
25606   -   -   -   -   -  -   -  - 335 35
25607   -   -   -   -   -  -   -  - 345 45
25608   -   -   -   -   -  -   -  - 355 55
25609   -   -   -   -   -  -   -  - 365 65
25610   -   -   -   -   -  -   -  - 375 75
25611   -   -   -   -   -  -   -  - 385 85
25612   -   -   -   -   -  -   -  - 395 95
25613}
25614do_execsql_test joinD-884 {
25615  SELECT t1.*, t2.*, t3.*, t4.*
25616  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
25617  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25618  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25619  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25620} {
25621   2 102 202 302 102  2   -  -   -  -
25622   4 104 204 304 104  4   -  -   -  -
25623   6 106 206 306 106  6 206  6   -  -
25624   8 108 208 308 108  8   -  -   -  -
25625  10 110 210 310 110 10   -  - 310 10
25626  12 112 212 312 112 12 212 12   -  -
25627  14 114 214 314 114 14   -  -   -  -
25628  16 116 216 316 116 16   -  -   -  -
25629  18 118 218 318 118 18 218 18   -  -
25630  20 120 220 320 120 20   -  - 320 20
25631  22 122 222 322 122 22   -  -   -  -
25632  24 124 224 324 124 24 224 24   -  -
25633  26 126 226 326 126 26   -  -   -  -
25634  28 128 228 328 128 28   -  -   -  -
25635  30 130 230 330 130 30 230 30 330 30
25636  32 132 232 332 132 32   -  -   -  -
25637  34 134 234 334 134 34   -  -   -  -
25638  36 136 236 336 136 36 236 36   -  -
25639  38 138 238 338 138 38   -  -   -  -
25640  40 140 240 340 140 40   -  - 340 40
25641  42 142 242 342 142 42 242 42   -  -
25642  44 144 244 344 144 44   -  -   -  -
25643  46 146 246 346 146 46   -  -   -  -
25644  48 148 248 348 148 48 248 48   -  -
25645  50 150 250 350 150 50   -  - 350 50
25646  52 152 252 352 152 52   -  -   -  -
25647  54 154 254 354 154 54 254 54   -  -
25648  56 156 256 356 156 56   -  -   -  -
25649  58 158 258 358 158 58   -  -   -  -
25650  60 160 260 360 160 60 260 60 360 60
25651  62 162 262 362 162 62   -  -   -  -
25652  64 164 264 364 164 64   -  -   -  -
25653  66 166 266 366 166 66 266 66   -  -
25654  68 168 268 368 168 68   -  -   -  -
25655  70 170 270 370 170 70   -  - 370 70
25656  72 172 272 372 172 72 272 72   -  -
25657  74 174 274 374 174 74   -  -   -  -
25658  76 176 276 376 176 76   -  -   -  -
25659  78 178 278 378 178 78 278 78   -  -
25660  80 180 280 380 180 80   -  - 380 80
25661  82 182 282 382 182 82   -  -   -  -
25662  84 184 284 384 184 84 284 84   -  -
25663  86 186 286 386 186 86   -  -   -  -
25664  88 188 288 388 188 88   -  -   -  -
25665  90 190 290 390 190 90 290 90 390 90
25666  92 192 292 392 192 92   -  -   -  -
25667  94 194 294 394 194 94   -  -   -  -
25668   -   -   -   - 100  0   -  -   -  -
25669   -   -   -   -   -  - 200  0   -  -
25670   -   -   -   -   -  - 203  3   -  -
25671   -   -   -   -   -  - 209  9   -  -
25672   -   -   -   -   -  - 215 15   -  -
25673   -   -   -   -   -  - 221 21   -  -
25674   -   -   -   -   -  - 227 27   -  -
25675   -   -   -   -   -  - 233 33   -  -
25676   -   -   -   -   -  - 239 39   -  -
25677   -   -   -   -   -  - 245 45   -  -
25678   -   -   -   -   -  - 251 51   -  -
25679   -   -   -   -   -  - 257 57   -  -
25680   -   -   -   -   -  - 263 63   -  -
25681   -   -   -   -   -  - 269 69   -  -
25682   -   -   -   -   -  - 275 75   -  -
25683   -   -   -   -   -  - 281 81   -  -
25684   -   -   -   -   -  - 287 87   -  -
25685   -   -   -   -   -  - 293 93   -  -
25686   -   -   -   -   -  -   -  - 300  0
25687   -   -   -   -   -  -   -  - 305  5
25688   -   -   -   -   -  -   -  - 315 15
25689   -   -   -   -   -  -   -  - 325 25
25690   -   -   -   -   -  -   -  - 335 35
25691   -   -   -   -   -  -   -  - 345 45
25692   -   -   -   -   -  -   -  - 355 55
25693   -   -   -   -   -  -   -  - 365 65
25694   -   -   -   -   -  -   -  - 375 75
25695   -   -   -   -   -  -   -  - 385 85
25696   -   -   -   -   -  -   -  - 395 95
25697}
25698do_execsql_test joinD-885 {
25699  SELECT t1.*, t2.*, t3.*, t4.*
25700  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25701  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25702  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25703  WHERE t2.x>0
25704  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25705} {
25706   2 102 202 302 102  2   -  -   -  -
25707   4 104 204 304 104  4   -  -   -  -
25708   6 106 206 306 106  6 206  6   -  -
25709   8 108 208 308 108  8   -  -   -  -
25710  10 110 210 310 110 10   -  - 310 10
25711  12 112 212 312 112 12 212 12   -  -
25712  14 114 214 314 114 14   -  -   -  -
25713  16 116 216 316 116 16   -  -   -  -
25714  18 118 218 318 118 18 218 18   -  -
25715  20 120 220 320 120 20   -  - 320 20
25716  22 122 222 322 122 22   -  -   -  -
25717  24 124 224 324 124 24 224 24   -  -
25718  26 126 226 326 126 26   -  -   -  -
25719  28 128 228 328 128 28   -  -   -  -
25720  30 130 230 330 130 30 230 30 330 30
25721  32 132 232 332 132 32   -  -   -  -
25722  34 134 234 334 134 34   -  -   -  -
25723  36 136 236 336 136 36 236 36   -  -
25724  38 138 238 338 138 38   -  -   -  -
25725  40 140 240 340 140 40   -  - 340 40
25726  42 142 242 342 142 42 242 42   -  -
25727  44 144 244 344 144 44   -  -   -  -
25728  46 146 246 346 146 46   -  -   -  -
25729  48 148 248 348 148 48 248 48   -  -
25730  50 150 250 350 150 50   -  - 350 50
25731  52 152 252 352 152 52   -  -   -  -
25732  54 154 254 354 154 54 254 54   -  -
25733  56 156 256 356 156 56   -  -   -  -
25734  58 158 258 358 158 58   -  -   -  -
25735  60 160 260 360 160 60 260 60 360 60
25736  62 162 262 362 162 62   -  -   -  -
25737  64 164 264 364 164 64   -  -   -  -
25738  66 166 266 366 166 66 266 66   -  -
25739  68 168 268 368 168 68   -  -   -  -
25740  70 170 270 370 170 70   -  - 370 70
25741  72 172 272 372 172 72 272 72   -  -
25742  74 174 274 374 174 74   -  -   -  -
25743  76 176 276 376 176 76   -  -   -  -
25744  78 178 278 378 178 78 278 78   -  -
25745  80 180 280 380 180 80   -  - 380 80
25746  82 182 282 382 182 82   -  -   -  -
25747  84 184 284 384 184 84 284 84   -  -
25748  86 186 286 386 186 86   -  -   -  -
25749  88 188 288 388 188 88   -  -   -  -
25750  90 190 290 390 190 90 290 90 390 90
25751  92 192 292 392 192 92   -  -   -  -
25752  94 194 294 394 194 94   -  -   -  -
25753}
25754do_execsql_test joinD-886 {
25755  SELECT t1.*, t2.*, t3.*, t4.*
25756  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25757  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25758  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25759  WHERE (t2.x>0 OR t2.x IS NULL)
25760  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25761} {
25762   2 102 202 302 102  2   -  -   -  -
25763   4 104 204 304 104  4   -  -   -  -
25764   6 106 206 306 106  6 206  6   -  -
25765   8 108 208 308 108  8   -  -   -  -
25766  10 110 210 310 110 10   -  - 310 10
25767  12 112 212 312 112 12 212 12   -  -
25768  14 114 214 314 114 14   -  -   -  -
25769  16 116 216 316 116 16   -  -   -  -
25770  18 118 218 318 118 18 218 18   -  -
25771  20 120 220 320 120 20   -  - 320 20
25772  22 122 222 322 122 22   -  -   -  -
25773  24 124 224 324 124 24 224 24   -  -
25774  26 126 226 326 126 26   -  -   -  -
25775  28 128 228 328 128 28   -  -   -  -
25776  30 130 230 330 130 30 230 30 330 30
25777  32 132 232 332 132 32   -  -   -  -
25778  34 134 234 334 134 34   -  -   -  -
25779  36 136 236 336 136 36 236 36   -  -
25780  38 138 238 338 138 38   -  -   -  -
25781  40 140 240 340 140 40   -  - 340 40
25782  42 142 242 342 142 42 242 42   -  -
25783  44 144 244 344 144 44   -  -   -  -
25784  46 146 246 346 146 46   -  -   -  -
25785  48 148 248 348 148 48 248 48   -  -
25786  50 150 250 350 150 50   -  - 350 50
25787  52 152 252 352 152 52   -  -   -  -
25788  54 154 254 354 154 54 254 54   -  -
25789  56 156 256 356 156 56   -  -   -  -
25790  58 158 258 358 158 58   -  -   -  -
25791  60 160 260 360 160 60 260 60 360 60
25792  62 162 262 362 162 62   -  -   -  -
25793  64 164 264 364 164 64   -  -   -  -
25794  66 166 266 366 166 66 266 66   -  -
25795  68 168 268 368 168 68   -  -   -  -
25796  70 170 270 370 170 70   -  - 370 70
25797  72 172 272 372 172 72 272 72   -  -
25798  74 174 274 374 174 74   -  -   -  -
25799  76 176 276 376 176 76   -  -   -  -
25800  78 178 278 378 178 78 278 78   -  -
25801  80 180 280 380 180 80   -  - 380 80
25802  82 182 282 382 182 82   -  -   -  -
25803  84 184 284 384 184 84 284 84   -  -
25804  86 186 286 386 186 86   -  -   -  -
25805  88 188 288 388 188 88   -  -   -  -
25806  90 190 290 390 190 90 290 90 390 90
25807  92 192 292 392 192 92   -  -   -  -
25808  94 194 294 394 194 94   -  -   -  -
25809   -   -   -   -   -  - 200  0   -  -
25810   -   -   -   -   -  - 203  3   -  -
25811   -   -   -   -   -  - 209  9   -  -
25812   -   -   -   -   -  - 215 15   -  -
25813   -   -   -   -   -  - 221 21   -  -
25814   -   -   -   -   -  - 227 27   -  -
25815   -   -   -   -   -  - 233 33   -  -
25816   -   -   -   -   -  - 239 39   -  -
25817   -   -   -   -   -  - 245 45   -  -
25818   -   -   -   -   -  - 251 51   -  -
25819   -   -   -   -   -  - 257 57   -  -
25820   -   -   -   -   -  - 263 63   -  -
25821   -   -   -   -   -  - 269 69   -  -
25822   -   -   -   -   -  - 275 75   -  -
25823   -   -   -   -   -  - 281 81   -  -
25824   -   -   -   -   -  - 287 87   -  -
25825   -   -   -   -   -  - 293 93   -  -
25826   -   -   -   -   -  -   -  - 300  0
25827   -   -   -   -   -  -   -  - 305  5
25828   -   -   -   -   -  -   -  - 315 15
25829   -   -   -   -   -  -   -  - 325 25
25830   -   -   -   -   -  -   -  - 335 35
25831   -   -   -   -   -  -   -  - 345 45
25832   -   -   -   -   -  -   -  - 355 55
25833   -   -   -   -   -  -   -  - 365 65
25834   -   -   -   -   -  -   -  - 375 75
25835   -   -   -   -   -  -   -  - 385 85
25836   -   -   -   -   -  -   -  - 395 95
25837}
25838do_execsql_test joinD-887 {
25839  SELECT t1.*, t2.*, t3.*, t4.*
25840  FROM t1 RIGHT JOIN t2 ON true
25841  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25842  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25843  WHERE t1.b=t2.b AND t2.x>0
25844  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25845} {
25846   2 102 202 302 102  2   -  -   -  -
25847   4 104 204 304 104  4   -  -   -  -
25848   6 106 206 306 106  6 206  6   -  -
25849   8 108 208 308 108  8   -  -   -  -
25850  10 110 210 310 110 10   -  - 310 10
25851  12 112 212 312 112 12 212 12   -  -
25852  14 114 214 314 114 14   -  -   -  -
25853  16 116 216 316 116 16   -  -   -  -
25854  18 118 218 318 118 18 218 18   -  -
25855  20 120 220 320 120 20   -  - 320 20
25856  22 122 222 322 122 22   -  -   -  -
25857  24 124 224 324 124 24 224 24   -  -
25858  26 126 226 326 126 26   -  -   -  -
25859  28 128 228 328 128 28   -  -   -  -
25860  30 130 230 330 130 30 230 30 330 30
25861  32 132 232 332 132 32   -  -   -  -
25862  34 134 234 334 134 34   -  -   -  -
25863  36 136 236 336 136 36 236 36   -  -
25864  38 138 238 338 138 38   -  -   -  -
25865  40 140 240 340 140 40   -  - 340 40
25866  42 142 242 342 142 42 242 42   -  -
25867  44 144 244 344 144 44   -  -   -  -
25868  46 146 246 346 146 46   -  -   -  -
25869  48 148 248 348 148 48 248 48   -  -
25870  50 150 250 350 150 50   -  - 350 50
25871  52 152 252 352 152 52   -  -   -  -
25872  54 154 254 354 154 54 254 54   -  -
25873  56 156 256 356 156 56   -  -   -  -
25874  58 158 258 358 158 58   -  -   -  -
25875  60 160 260 360 160 60 260 60 360 60
25876  62 162 262 362 162 62   -  -   -  -
25877  64 164 264 364 164 64   -  -   -  -
25878  66 166 266 366 166 66 266 66   -  -
25879  68 168 268 368 168 68   -  -   -  -
25880  70 170 270 370 170 70   -  - 370 70
25881  72 172 272 372 172 72 272 72   -  -
25882  74 174 274 374 174 74   -  -   -  -
25883  76 176 276 376 176 76   -  -   -  -
25884  78 178 278 378 178 78 278 78   -  -
25885  80 180 280 380 180 80   -  - 380 80
25886  82 182 282 382 182 82   -  -   -  -
25887  84 184 284 384 184 84 284 84   -  -
25888  86 186 286 386 186 86   -  -   -  -
25889  88 188 288 388 188 88   -  -   -  -
25890  90 190 290 390 190 90 290 90 390 90
25891  92 192 292 392 192 92   -  -   -  -
25892  94 194 294 394 194 94   -  -   -  -
25893}
25894do_execsql_test joinD-888 {
25895  SELECT t1.*, t2.*, t3.*, t4.*
25896  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25897  FULL JOIN t3 ON t1.c=t3.c
25898  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25899  WHERE t3.y>0
25900  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25901} {
25902   6 106 206 306 106  6 206  6   -  -
25903  12 112 212 312 112 12 212 12   -  -
25904  18 118 218 318 118 18 218 18   -  -
25905  24 124 224 324 124 24 224 24   -  -
25906  30 130 230 330 130 30 230 30 330 30
25907  36 136 236 336 136 36 236 36   -  -
25908  42 142 242 342 142 42 242 42   -  -
25909  48 148 248 348 148 48 248 48   -  -
25910  54 154 254 354 154 54 254 54   -  -
25911  60 160 260 360 160 60 260 60 360 60
25912  66 166 266 366 166 66 266 66   -  -
25913  72 172 272 372 172 72 272 72   -  -
25914  78 178 278 378 178 78 278 78   -  -
25915  84 184 284 384 184 84 284 84   -  -
25916  90 190 290 390 190 90 290 90 390 90
25917   -   -   -   -   -  - 203  3   -  -
25918   -   -   -   -   -  - 209  9   -  -
25919   -   -   -   -   -  - 215 15   -  -
25920   -   -   -   -   -  - 221 21   -  -
25921   -   -   -   -   -  - 227 27   -  -
25922   -   -   -   -   -  - 233 33   -  -
25923   -   -   -   -   -  - 239 39   -  -
25924   -   -   -   -   -  - 245 45   -  -
25925   -   -   -   -   -  - 251 51   -  -
25926   -   -   -   -   -  - 257 57   -  -
25927   -   -   -   -   -  - 263 63   -  -
25928   -   -   -   -   -  - 269 69   -  -
25929   -   -   -   -   -  - 275 75   -  -
25930   -   -   -   -   -  - 281 81   -  -
25931   -   -   -   -   -  - 287 87   -  -
25932   -   -   -   -   -  - 293 93   -  -
25933}
25934do_execsql_test joinD-889 {
25935  SELECT t1.*, t2.*, t3.*, t4.*
25936  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25937  FULL JOIN t3 ON t1.c=t3.c
25938  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25939  WHERE t3.y>0 OR t3.y IS NULL
25940  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25941} {
25942   2 102 202 302 102  2   -  -   -  -
25943   4 104 204 304 104  4   -  -   -  -
25944   6 106 206 306 106  6 206  6   -  -
25945   8 108 208 308 108  8   -  -   -  -
25946  10 110 210 310 110 10   -  - 310 10
25947  12 112 212 312 112 12 212 12   -  -
25948  14 114 214 314 114 14   -  -   -  -
25949  16 116 216 316 116 16   -  -   -  -
25950  18 118 218 318 118 18 218 18   -  -
25951  20 120 220 320 120 20   -  - 320 20
25952  22 122 222 322 122 22   -  -   -  -
25953  24 124 224 324 124 24 224 24   -  -
25954  26 126 226 326 126 26   -  -   -  -
25955  28 128 228 328 128 28   -  -   -  -
25956  30 130 230 330 130 30 230 30 330 30
25957  32 132 232 332 132 32   -  -   -  -
25958  34 134 234 334 134 34   -  -   -  -
25959  36 136 236 336 136 36 236 36   -  -
25960  38 138 238 338 138 38   -  -   -  -
25961  40 140 240 340 140 40   -  - 340 40
25962  42 142 242 342 142 42 242 42   -  -
25963  44 144 244 344 144 44   -  -   -  -
25964  46 146 246 346 146 46   -  -   -  -
25965  48 148 248 348 148 48 248 48   -  -
25966  50 150 250 350 150 50   -  - 350 50
25967  52 152 252 352 152 52   -  -   -  -
25968  54 154 254 354 154 54 254 54   -  -
25969  56 156 256 356 156 56   -  -   -  -
25970  58 158 258 358 158 58   -  -   -  -
25971  60 160 260 360 160 60 260 60 360 60
25972  62 162 262 362 162 62   -  -   -  -
25973  64 164 264 364 164 64   -  -   -  -
25974  66 166 266 366 166 66 266 66   -  -
25975  68 168 268 368 168 68   -  -   -  -
25976  70 170 270 370 170 70   -  - 370 70
25977  72 172 272 372 172 72 272 72   -  -
25978  74 174 274 374 174 74   -  -   -  -
25979  76 176 276 376 176 76   -  -   -  -
25980  78 178 278 378 178 78 278 78   -  -
25981  80 180 280 380 180 80   -  - 380 80
25982  82 182 282 382 182 82   -  -   -  -
25983  84 184 284 384 184 84 284 84   -  -
25984  86 186 286 386 186 86   -  -   -  -
25985  88 188 288 388 188 88   -  -   -  -
25986  90 190 290 390 190 90 290 90 390 90
25987  92 192 292 392 192 92   -  -   -  -
25988  94 194 294 394 194 94   -  -   -  -
25989   -   -   -   - 100  0   -  -   -  -
25990   -   -   -   -   -  - 203  3   -  -
25991   -   -   -   -   -  - 209  9   -  -
25992   -   -   -   -   -  - 215 15   -  -
25993   -   -   -   -   -  - 221 21   -  -
25994   -   -   -   -   -  - 227 27   -  -
25995   -   -   -   -   -  - 233 33   -  -
25996   -   -   -   -   -  - 239 39   -  -
25997   -   -   -   -   -  - 245 45   -  -
25998   -   -   -   -   -  - 251 51   -  -
25999   -   -   -   -   -  - 257 57   -  -
26000   -   -   -   -   -  - 263 63   -  -
26001   -   -   -   -   -  - 269 69   -  -
26002   -   -   -   -   -  - 275 75   -  -
26003   -   -   -   -   -  - 281 81   -  -
26004   -   -   -   -   -  - 287 87   -  -
26005   -   -   -   -   -  - 293 93   -  -
26006   -   -   -   -   -  -   -  - 300  0
26007   -   -   -   -   -  -   -  - 305  5
26008   -   -   -   -   -  -   -  - 315 15
26009   -   -   -   -   -  -   -  - 325 25
26010   -   -   -   -   -  -   -  - 335 35
26011   -   -   -   -   -  -   -  - 345 45
26012   -   -   -   -   -  -   -  - 355 55
26013   -   -   -   -   -  -   -  - 365 65
26014   -   -   -   -   -  -   -  - 375 75
26015   -   -   -   -   -  -   -  - 385 85
26016   -   -   -   -   -  -   -  - 395 95
26017}
26018do_execsql_test joinD-890 {
26019  SELECT t1.*, t2.*, t3.*, t4.*
26020  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
26021  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26022  FULL JOIN t4 ON t1.d=t4.d
26023  WHERE t4.z>0
26024  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26025} {
26026  10 110 210 310 110 10   -  - 310 10
26027  20 120 220 320 120 20   -  - 320 20
26028  30 130 230 330 130 30 230 30 330 30
26029  40 140 240 340 140 40   -  - 340 40
26030  50 150 250 350 150 50   -  - 350 50
26031  60 160 260 360 160 60 260 60 360 60
26032  70 170 270 370 170 70   -  - 370 70
26033  80 180 280 380 180 80   -  - 380 80
26034  90 190 290 390 190 90 290 90 390 90
26035   -   -   -   -   -  -   -  - 305  5
26036   -   -   -   -   -  -   -  - 315 15
26037   -   -   -   -   -  -   -  - 325 25
26038   -   -   -   -   -  -   -  - 335 35
26039   -   -   -   -   -  -   -  - 345 45
26040   -   -   -   -   -  -   -  - 355 55
26041   -   -   -   -   -  -   -  - 365 65
26042   -   -   -   -   -  -   -  - 375 75
26043   -   -   -   -   -  -   -  - 385 85
26044   -   -   -   -   -  -   -  - 395 95
26045}
26046do_execsql_test joinD-891 {
26047  SELECT t1.*, t2.*, t3.*, t4.*
26048  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
26049  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26050  FULL JOIN t4 ON t1.d=t4.d
26051  WHERE t4.z IS NULL OR t4.z>0
26052  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26053} {
26054   2 102 202 302 102  2   -  -   -  -
26055   4 104 204 304 104  4   -  -   -  -
26056   6 106 206 306 106  6 206  6   -  -
26057   8 108 208 308 108  8   -  -   -  -
26058  10 110 210 310 110 10   -  - 310 10
26059  12 112 212 312 112 12 212 12   -  -
26060  14 114 214 314 114 14   -  -   -  -
26061  16 116 216 316 116 16   -  -   -  -
26062  18 118 218 318 118 18 218 18   -  -
26063  20 120 220 320 120 20   -  - 320 20
26064  22 122 222 322 122 22   -  -   -  -
26065  24 124 224 324 124 24 224 24   -  -
26066  26 126 226 326 126 26   -  -   -  -
26067  28 128 228 328 128 28   -  -   -  -
26068  30 130 230 330 130 30 230 30 330 30
26069  32 132 232 332 132 32   -  -   -  -
26070  34 134 234 334 134 34   -  -   -  -
26071  36 136 236 336 136 36 236 36   -  -
26072  38 138 238 338 138 38   -  -   -  -
26073  40 140 240 340 140 40   -  - 340 40
26074  42 142 242 342 142 42 242 42   -  -
26075  44 144 244 344 144 44   -  -   -  -
26076  46 146 246 346 146 46   -  -   -  -
26077  48 148 248 348 148 48 248 48   -  -
26078  50 150 250 350 150 50   -  - 350 50
26079  52 152 252 352 152 52   -  -   -  -
26080  54 154 254 354 154 54 254 54   -  -
26081  56 156 256 356 156 56   -  -   -  -
26082  58 158 258 358 158 58   -  -   -  -
26083  60 160 260 360 160 60 260 60 360 60
26084  62 162 262 362 162 62   -  -   -  -
26085  64 164 264 364 164 64   -  -   -  -
26086  66 166 266 366 166 66 266 66   -  -
26087  68 168 268 368 168 68   -  -   -  -
26088  70 170 270 370 170 70   -  - 370 70
26089  72 172 272 372 172 72 272 72   -  -
26090  74 174 274 374 174 74   -  -   -  -
26091  76 176 276 376 176 76   -  -   -  -
26092  78 178 278 378 178 78 278 78   -  -
26093  80 180 280 380 180 80   -  - 380 80
26094  82 182 282 382 182 82   -  -   -  -
26095  84 184 284 384 184 84 284 84   -  -
26096  86 186 286 386 186 86   -  -   -  -
26097  88 188 288 388 188 88   -  -   -  -
26098  90 190 290 390 190 90 290 90 390 90
26099  92 192 292 392 192 92   -  -   -  -
26100  94 194 294 394 194 94   -  -   -  -
26101   -   -   -   - 100  0   -  -   -  -
26102   -   -   -   -   -  - 200  0   -  -
26103   -   -   -   -   -  - 203  3   -  -
26104   -   -   -   -   -  - 209  9   -  -
26105   -   -   -   -   -  - 215 15   -  -
26106   -   -   -   -   -  - 221 21   -  -
26107   -   -   -   -   -  - 227 27   -  -
26108   -   -   -   -   -  - 233 33   -  -
26109   -   -   -   -   -  - 239 39   -  -
26110   -   -   -   -   -  - 245 45   -  -
26111   -   -   -   -   -  - 251 51   -  -
26112   -   -   -   -   -  - 257 57   -  -
26113   -   -   -   -   -  - 263 63   -  -
26114   -   -   -   -   -  - 269 69   -  -
26115   -   -   -   -   -  - 275 75   -  -
26116   -   -   -   -   -  - 281 81   -  -
26117   -   -   -   -   -  - 287 87   -  -
26118   -   -   -   -   -  - 293 93   -  -
26119   -   -   -   -   -  -   -  - 305  5
26120   -   -   -   -   -  -   -  - 315 15
26121   -   -   -   -   -  -   -  - 325 25
26122   -   -   -   -   -  -   -  - 335 35
26123   -   -   -   -   -  -   -  - 345 45
26124   -   -   -   -   -  -   -  - 355 55
26125   -   -   -   -   -  -   -  - 365 65
26126   -   -   -   -   -  -   -  - 375 75
26127   -   -   -   -   -  -   -  - 385 85
26128   -   -   -   -   -  -   -  - 395 95
26129}
26130do_execsql_test joinD-892 {
26131  SELECT t1.*, t2.*, t3.*, t4.*
26132  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
26133  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26134  FULL JOIN t4 ON t1.d=t4.d
26135  WHERE t2.x>0 AND t4.z>0
26136  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26137} {
26138  10 110 210 310 110 10   -  - 310 10
26139  20 120 220 320 120 20   -  - 320 20
26140  30 130 230 330 130 30 230 30 330 30
26141  40 140 240 340 140 40   -  - 340 40
26142  50 150 250 350 150 50   -  - 350 50
26143  60 160 260 360 160 60 260 60 360 60
26144  70 170 270 370 170 70   -  - 370 70
26145  80 180 280 380 180 80   -  - 380 80
26146  90 190 290 390 190 90 290 90 390 90
26147}
26148do_execsql_test joinD-893 {
26149  SELECT t1.*, t2.*, t3.*, t4.*
26150  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
26151  FULL JOIN t3 ON t1.c=t3.c
26152  FULL JOIN t4 ON t1.d=t4.d
26153  WHERE t4.z>0 AND t3.y>0
26154  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26155} {
26156  30 130 230 330 130 30 230 30 330 30
26157  60 160 260 360 160 60 260 60 360 60
26158  90 190 290 390 190 90 290 90 390 90
26159}
26160do_execsql_test joinD-894 {
26161  SELECT t1.*, t2.*, t3.*, t4.*
26162  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
26163  FULL JOIN t3 ON t1.c=t3.c
26164  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
26165  WHERE t2.x>0 AND t3.y>0
26166  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26167} {
26168   6 106 206 306 106  6 206  6   -  -
26169  12 112 212 312 112 12 212 12   -  -
26170  18 118 218 318 118 18 218 18   -  -
26171  24 124 224 324 124 24 224 24   -  -
26172  30 130 230 330 130 30 230 30 330 30
26173  36 136 236 336 136 36 236 36   -  -
26174  42 142 242 342 142 42 242 42   -  -
26175  48 148 248 348 148 48 248 48   -  -
26176  54 154 254 354 154 54 254 54   -  -
26177  60 160 260 360 160 60 260 60 360 60
26178  66 166 266 366 166 66 266 66   -  -
26179  72 172 272 372 172 72 272 72   -  -
26180  78 178 278 378 178 78 278 78   -  -
26181  84 184 284 384 184 84 284 84   -  -
26182  90 190 290 390 190 90 290 90 390 90
26183}
26184do_execsql_test joinD-895 {
26185  SELECT t1.*, t2.*, t3.*, t4.*
26186  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
26187  FULL JOIN t3 ON t1.c=t3.c
26188  FULL JOIN t4 ON t1.d=t4.d
26189  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
26190  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26191} {
26192  30 130 230 330 130 30 230 30 330 30
26193  60 160 260 360 160 60 260 60 360 60
26194  90 190 290 390 190 90 290 90 390 90
26195}
26196do_execsql_test joinD-896 {
26197  SELECT t1.*, t2.*, t3.*, t4.*
26198  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
26199  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
26200  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
26201  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26202} {
26203   2 102 202 302 102  2   -  -   -  -
26204   4 104 204 304 104  4   -  -   -  -
26205   6 106 206 306 106  6 206  6   -  -
26206   8 108 208 308 108  8   -  -   -  -
26207  10 110 210 310 110 10   -  - 310 10
26208  12 112 212 312 112 12 212 12   -  -
26209  14 114 214 314 114 14   -  -   -  -
26210  16 116 216 316 116 16   -  -   -  -
26211  18 118 218 318 118 18 218 18   -  -
26212  20 120 220 320 120 20   -  - 320 20
26213  22 122 222 322 122 22   -  -   -  -
26214  24 124 224 324 124 24 224 24   -  -
26215  26 126 226 326 126 26   -  -   -  -
26216  28 128 228 328 128 28   -  -   -  -
26217  30 130 230 330 130 30 230 30 330 30
26218  32 132 232 332 132 32   -  -   -  -
26219  34 134 234 334 134 34   -  -   -  -
26220  36 136 236 336 136 36 236 36   -  -
26221  38 138 238 338 138 38   -  -   -  -
26222  40 140 240 340 140 40   -  - 340 40
26223  42 142 242 342 142 42 242 42   -  -
26224  44 144 244 344 144 44   -  -   -  -
26225  46 146 246 346 146 46   -  -   -  -
26226  48 148 248 348 148 48 248 48   -  -
26227  50 150 250 350 150 50   -  - 350 50
26228  52 152 252 352 152 52   -  -   -  -
26229  54 154 254 354 154 54 254 54   -  -
26230  56 156 256 356 156 56   -  -   -  -
26231  58 158 258 358 158 58   -  -   -  -
26232  60 160 260 360 160 60 260 60 360 60
26233  62 162 262 362 162 62   -  -   -  -
26234  64 164 264 364 164 64   -  -   -  -
26235  66 166 266 366 166 66 266 66   -  -
26236  68 168 268 368 168 68   -  -   -  -
26237  70 170 270 370 170 70   -  - 370 70
26238  72 172 272 372 172 72 272 72   -  -
26239  74 174 274 374 174 74   -  -   -  -
26240  76 176 276 376 176 76   -  -   -  -
26241  78 178 278 378 178 78 278 78   -  -
26242  80 180 280 380 180 80   -  - 380 80
26243  82 182 282 382 182 82   -  -   -  -
26244  84 184 284 384 184 84 284 84   -  -
26245  86 186 286 386 186 86   -  -   -  -
26246  88 188 288 388 188 88   -  -   -  -
26247  90 190 290 390 190 90 290 90 390 90
26248  92 192 292 392 192 92   -  -   -  -
26249  94 194 294 394 194 94   -  -   -  -
26250   -   -   -   - 100  0   -  -   -  -
26251   -   -   -   -   -  - 200  0   -  -
26252   -   -   -   -   -  - 203  3   -  -
26253   -   -   -   -   -  - 209  9   -  -
26254   -   -   -   -   -  - 215 15   -  -
26255   -   -   -   -   -  - 221 21   -  -
26256   -   -   -   -   -  - 227 27   -  -
26257   -   -   -   -   -  - 233 33   -  -
26258   -   -   -   -   -  - 239 39   -  -
26259   -   -   -   -   -  - 245 45   -  -
26260   -   -   -   -   -  - 251 51   -  -
26261   -   -   -   -   -  - 257 57   -  -
26262   -   -   -   -   -  - 263 63   -  -
26263   -   -   -   -   -  - 269 69   -  -
26264   -   -   -   -   -  - 275 75   -  -
26265   -   -   -   -   -  - 281 81   -  -
26266   -   -   -   -   -  - 287 87   -  -
26267   -   -   -   -   -  - 293 93   -  -
26268   -   -   -   -   -  -   -  - 300  0
26269   -   -   -   -   -  -   -  - 305  5
26270   -   -   -   -   -  -   -  - 315 15
26271   -   -   -   -   -  -   -  - 325 25
26272   -   -   -   -   -  -   -  - 335 35
26273   -   -   -   -   -  -   -  - 345 45
26274   -   -   -   -   -  -   -  - 355 55
26275   -   -   -   -   -  -   -  - 365 65
26276   -   -   -   -   -  -   -  - 375 75
26277   -   -   -   -   -  -   -  - 385 85
26278   -   -   -   -   -  -   -  - 395 95
26279}
26280do_execsql_test joinD-897 {
26281  SELECT t1.*, t2.*, t3.*, t4.*
26282  FROM t1 RIGHT JOIN t2 ON t2.x>0
26283  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
26284  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
26285  WHERE t1.b IS NOT DISTINCT FROM t2.b
26286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26287} {
26288   2 102 202 302 102  2   -  -   -  -
26289   4 104 204 304 104  4   -  -   -  -
26290   6 106 206 306 106  6 206  6   -  -
26291   8 108 208 308 108  8   -  -   -  -
26292  10 110 210 310 110 10   -  - 310 10
26293  12 112 212 312 112 12 212 12   -  -
26294  14 114 214 314 114 14   -  -   -  -
26295  16 116 216 316 116 16   -  -   -  -
26296  18 118 218 318 118 18 218 18   -  -
26297  20 120 220 320 120 20   -  - 320 20
26298  22 122 222 322 122 22   -  -   -  -
26299  24 124 224 324 124 24 224 24   -  -
26300  26 126 226 326 126 26   -  -   -  -
26301  28 128 228 328 128 28   -  -   -  -
26302  30 130 230 330 130 30 230 30 330 30
26303  32 132 232 332 132 32   -  -   -  -
26304  34 134 234 334 134 34   -  -   -  -
26305  36 136 236 336 136 36 236 36   -  -
26306  38 138 238 338 138 38   -  -   -  -
26307  40 140 240 340 140 40   -  - 340 40
26308  42 142 242 342 142 42 242 42   -  -
26309  44 144 244 344 144 44   -  -   -  -
26310  46 146 246 346 146 46   -  -   -  -
26311  48 148 248 348 148 48 248 48   -  -
26312  50 150 250 350 150 50   -  - 350 50
26313  52 152 252 352 152 52   -  -   -  -
26314  54 154 254 354 154 54 254 54   -  -
26315  56 156 256 356 156 56   -  -   -  -
26316  58 158 258 358 158 58   -  -   -  -
26317  60 160 260 360 160 60 260 60 360 60
26318  62 162 262 362 162 62   -  -   -  -
26319  64 164 264 364 164 64   -  -   -  -
26320  66 166 266 366 166 66 266 66   -  -
26321  68 168 268 368 168 68   -  -   -  -
26322  70 170 270 370 170 70   -  - 370 70
26323  72 172 272 372 172 72 272 72   -  -
26324  74 174 274 374 174 74   -  -   -  -
26325  76 176 276 376 176 76   -  -   -  -
26326  78 178 278 378 178 78 278 78   -  -
26327  80 180 280 380 180 80   -  - 380 80
26328  82 182 282 382 182 82   -  -   -  -
26329  84 184 284 384 184 84 284 84   -  -
26330  86 186 286 386 186 86   -  -   -  -
26331  88 188 288 388 188 88   -  -   -  -
26332  90 190 290 390 190 90 290 90 390 90
26333  92 192 292 392 192 92   -  -   -  -
26334  94 194 294 394 194 94   -  -   -  -
26335   -   -   -   -   -  - 200  0   -  -
26336   -   -   -   -   -  -   -  - 300  0
26337}
26338do_execsql_test joinD-898 {
26339  SELECT t1.*, t2.*, t3.*, t4.*
26340  FROM t1 RIGHT JOIN t2 ON t2.x>0
26341  FULL JOIN t3 ON t3.y>0
26342  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
26343  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
26344  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26345} {
26346   6 106 206 306 106  6 206  6   -  -
26347  12 112 212 312 112 12 212 12   -  -
26348  18 118 218 318 118 18 218 18   -  -
26349  24 124 224 324 124 24 224 24   -  -
26350  30 130 230 330 130 30 230 30 330 30
26351  36 136 236 336 136 36 236 36   -  -
26352  42 142 242 342 142 42 242 42   -  -
26353  48 148 248 348 148 48 248 48   -  -
26354  54 154 254 354 154 54 254 54   -  -
26355  60 160 260 360 160 60 260 60 360 60
26356  66 166 266 366 166 66 266 66   -  -
26357  72 172 272 372 172 72 272 72   -  -
26358  78 178 278 378 178 78 278 78   -  -
26359  84 184 284 384 184 84 284 84   -  -
26360  90 190 290 390 190 90 290 90 390 90
26361}
26362do_execsql_test joinD-899 {
26363  SELECT t1.*, t2.*, t3.*, t4.*
26364  FROM t1 RIGHT JOIN t2 ON t2.x>0
26365  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
26366  FULL JOIN t4 ON t4.z>0
26367  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
26368  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26369} {
26370  10 110 210 310 110 10   -  - 310 10
26371  20 120 220 320 120 20   -  - 320 20
26372  30 130 230 330 130 30 230 30 330 30
26373  40 140 240 340 140 40   -  - 340 40
26374  50 150 250 350 150 50   -  - 350 50
26375  60 160 260 360 160 60 260 60 360 60
26376  70 170 270 370 170 70   -  - 370 70
26377  80 180 280 380 180 80   -  - 380 80
26378  90 190 290 390 190 90 290 90 390 90
26379}
26380do_execsql_test joinD-900 {
26381  SELECT t1.*, t2.*, t3.*, t4.*
26382  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
26383  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26384  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
26385  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26386} {
26387   2 102 202 302 102  2   -  -   -  -
26388   4 104 204 304 104  4   -  -   -  -
26389   6 106 206 306 106  6 206  6   -  -
26390   8 108 208 308 108  8   -  -   -  -
26391  10 110 210 310 110 10   -  - 310 10
26392  12 112 212 312 112 12 212 12   -  -
26393  14 114 214 314 114 14   -  -   -  -
26394  16 116 216 316 116 16   -  -   -  -
26395  18 118 218 318 118 18 218 18   -  -
26396  20 120 220 320 120 20   -  - 320 20
26397  22 122 222 322 122 22   -  -   -  -
26398  24 124 224 324 124 24 224 24   -  -
26399  26 126 226 326 126 26   -  -   -  -
26400  28 128 228 328 128 28   -  -   -  -
26401  30 130 230 330 130 30 230 30 330 30
26402  32 132 232 332 132 32   -  -   -  -
26403  34 134 234 334 134 34   -  -   -  -
26404  36 136 236 336 136 36 236 36   -  -
26405  38 138 238 338 138 38   -  -   -  -
26406  40 140 240 340 140 40   -  - 340 40
26407  42 142 242 342 142 42 242 42   -  -
26408  44 144 244 344 144 44   -  -   -  -
26409  46 146 246 346 146 46   -  -   -  -
26410  48 148 248 348 148 48 248 48   -  -
26411  50 150 250 350 150 50   -  - 350 50
26412  52 152 252 352 152 52   -  -   -  -
26413  54 154 254 354 154 54 254 54   -  -
26414  56 156 256 356 156 56   -  -   -  -
26415  58 158 258 358 158 58   -  -   -  -
26416  60 160 260 360 160 60 260 60 360 60
26417  62 162 262 362 162 62   -  -   -  -
26418  64 164 264 364 164 64   -  -   -  -
26419  66 166 266 366 166 66 266 66   -  -
26420  68 168 268 368 168 68   -  -   -  -
26421  70 170 270 370 170 70   -  - 370 70
26422  72 172 272 372 172 72 272 72   -  -
26423  74 174 274 374 174 74   -  -   -  -
26424  76 176 276 376 176 76   -  -   -  -
26425  78 178 278 378 178 78 278 78   -  -
26426  80 180 280 380 180 80   -  - 380 80
26427  82 182 282 382 182 82   -  -   -  -
26428  84 184 284 384 184 84 284 84   -  -
26429  86 186 286 386 186 86   -  -   -  -
26430  88 188 288 388 188 88   -  -   -  -
26431  90 190 290 390 190 90 290 90 390 90
26432  92 192 292 392 192 92   -  -   -  -
26433  94 194 294 394 194 94   -  -   -  -
26434   -   -   -   - 100  0   -  -   -  -
26435   -   -   -   -   -  - 200  0   -  -
26436   -   -   -   -   -  - 203  3   -  -
26437   -   -   -   -   -  - 209  9   -  -
26438   -   -   -   -   -  - 215 15   -  -
26439   -   -   -   -   -  - 221 21   -  -
26440   -   -   -   -   -  - 227 27   -  -
26441   -   -   -   -   -  - 233 33   -  -
26442   -   -   -   -   -  - 239 39   -  -
26443   -   -   -   -   -  - 245 45   -  -
26444   -   -   -   -   -  - 251 51   -  -
26445   -   -   -   -   -  - 257 57   -  -
26446   -   -   -   -   -  - 263 63   -  -
26447   -   -   -   -   -  - 269 69   -  -
26448   -   -   -   -   -  - 275 75   -  -
26449   -   -   -   -   -  - 281 81   -  -
26450   -   -   -   -   -  - 287 87   -  -
26451   -   -   -   -   -  - 293 93   -  -
26452   -   -   -   -   -  -   -  - 300  0
26453   -   -   -   -   -  -   -  - 305  5
26454   -   -   -   -   -  -   -  - 315 15
26455   -   -   -   -   -  -   -  - 325 25
26456   -   -   -   -   -  -   -  - 335 35
26457   -   -   -   -   -  -   -  - 345 45
26458   -   -   -   -   -  -   -  - 355 55
26459   -   -   -   -   -  -   -  - 365 65
26460   -   -   -   -   -  -   -  - 375 75
26461   -   -   -   -   -  -   -  - 385 85
26462   -   -   -   -   -  -   -  - 395 95
26463}
26464do_execsql_test joinD-901 {
26465  SELECT t1.*, t2.*, t3.*, t4.*
26466  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26467  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26468  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26469  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26470} {
26471  15 115 215 315   -  - 215 15 315 15
26472  30 130 230 330 130 30 230 30 330 30
26473  45 145 245 345   -  - 245 45 345 45
26474  60 160 260 360 160 60 260 60 360 60
26475  75 175 275 375   -  - 275 75 375 75
26476  90 190 290 390 190 90 290 90 390 90
26477}
26478do_execsql_test joinD-902 {
26479  SELECT t1.*, t2.*, t3.*, t4.*
26480  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26481  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26482  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26483  WHERE t2.x>0
26484  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26485} {
26486  30 130 230 330 130 30 230 30 330 30
26487  60 160 260 360 160 60 260 60 360 60
26488  90 190 290 390 190 90 290 90 390 90
26489}
26490do_execsql_test joinD-903 {
26491  SELECT t1.*, t2.*, t3.*, t4.*
26492  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26493  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26494  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26495  WHERE (t2.x>0 OR t2.x IS NULL)
26496  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26497} {
26498  15 115 215 315   -  - 215 15 315 15
26499  30 130 230 330 130 30 230 30 330 30
26500  45 145 245 345   -  - 245 45 345 45
26501  60 160 260 360 160 60 260 60 360 60
26502  75 175 275 375   -  - 275 75 375 75
26503  90 190 290 390 190 90 290 90 390 90
26504}
26505do_execsql_test joinD-904 {
26506  SELECT t1.*, t2.*, t3.*, t4.*
26507  FROM t1 FULL JOIN t2 ON true
26508  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26509  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26510  WHERE t1.b=t2.b AND t2.x>0
26511  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26512} {
26513  30 130 230 330 130 30 230 30 330 30
26514  60 160 260 360 160 60 260 60 360 60
26515  90 190 290 390 190 90 290 90 390 90
26516}
26517do_execsql_test joinD-905 {
26518  SELECT t1.*, t2.*, t3.*, t4.*
26519  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26520  INNER JOIN t3 ON t1.c=t3.c
26521  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26522  WHERE t3.y>0
26523  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26524} {
26525  15 115 215 315   -  - 215 15 315 15
26526  30 130 230 330 130 30 230 30 330 30
26527  45 145 245 345   -  - 245 45 345 45
26528  60 160 260 360 160 60 260 60 360 60
26529  75 175 275 375   -  - 275 75 375 75
26530  90 190 290 390 190 90 290 90 390 90
26531}
26532do_execsql_test joinD-906 {
26533  SELECT t1.*, t2.*, t3.*, t4.*
26534  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26535  INNER JOIN t3 ON t1.c=t3.c
26536  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26537  WHERE t3.y>0 OR t3.y IS NULL
26538  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26539} {
26540  15 115 215 315   -  - 215 15 315 15
26541  30 130 230 330 130 30 230 30 330 30
26542  45 145 245 345   -  - 245 45 345 45
26543  60 160 260 360 160 60 260 60 360 60
26544  75 175 275 375   -  - 275 75 375 75
26545  90 190 290 390 190 90 290 90 390 90
26546}
26547do_execsql_test joinD-907 {
26548  SELECT t1.*, t2.*, t3.*, t4.*
26549  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26550  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26551  INNER JOIN t4 ON t1.d=t4.d
26552  WHERE t4.z>0
26553  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26554} {
26555  15 115 215 315   -  - 215 15 315 15
26556  30 130 230 330 130 30 230 30 330 30
26557  45 145 245 345   -  - 245 45 345 45
26558  60 160 260 360 160 60 260 60 360 60
26559  75 175 275 375   -  - 275 75 375 75
26560  90 190 290 390 190 90 290 90 390 90
26561}
26562do_execsql_test joinD-908 {
26563  SELECT t1.*, t2.*, t3.*, t4.*
26564  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26565  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26566  INNER JOIN t4 ON t1.d=t4.d
26567  WHERE t4.z IS NULL OR t4.z>0
26568  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26569} {
26570  15 115 215 315   -  - 215 15 315 15
26571  30 130 230 330 130 30 230 30 330 30
26572  45 145 245 345   -  - 245 45 345 45
26573  60 160 260 360 160 60 260 60 360 60
26574  75 175 275 375   -  - 275 75 375 75
26575  90 190 290 390 190 90 290 90 390 90
26576}
26577do_execsql_test joinD-909 {
26578  SELECT t1.*, t2.*, t3.*, t4.*
26579  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26580  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26581  INNER JOIN t4 ON t1.d=t4.d
26582  WHERE t2.x>0 AND t4.z>0
26583  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26584} {
26585  30 130 230 330 130 30 230 30 330 30
26586  60 160 260 360 160 60 260 60 360 60
26587  90 190 290 390 190 90 290 90 390 90
26588}
26589do_execsql_test joinD-910 {
26590  SELECT t1.*, t2.*, t3.*, t4.*
26591  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26592  INNER JOIN t3 ON t1.c=t3.c
26593  INNER JOIN t4 ON t1.d=t4.d
26594  WHERE t4.z>0 AND t3.y>0
26595  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26596} {
26597  15 115 215 315   -  - 215 15 315 15
26598  30 130 230 330 130 30 230 30 330 30
26599  45 145 245 345   -  - 245 45 345 45
26600  60 160 260 360 160 60 260 60 360 60
26601  75 175 275 375   -  - 275 75 375 75
26602  90 190 290 390 190 90 290 90 390 90
26603}
26604do_execsql_test joinD-911 {
26605  SELECT t1.*, t2.*, t3.*, t4.*
26606  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26607  INNER JOIN t3 ON t1.c=t3.c
26608  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26609  WHERE t2.x>0 AND t3.y>0
26610  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26611} {
26612  30 130 230 330 130 30 230 30 330 30
26613  60 160 260 360 160 60 260 60 360 60
26614  90 190 290 390 190 90 290 90 390 90
26615}
26616do_execsql_test joinD-912 {
26617  SELECT t1.*, t2.*, t3.*, t4.*
26618  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26619  INNER JOIN t3 ON t1.c=t3.c
26620  INNER JOIN t4 ON t1.d=t4.d
26621  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
26622  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26623} {
26624  30 130 230 330 130 30 230 30 330 30
26625  60 160 260 360 160 60 260 60 360 60
26626  90 190 290 390 190 90 290 90 390 90
26627}
26628do_execsql_test joinD-913 {
26629  SELECT t1.*, t2.*, t3.*, t4.*
26630  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
26631  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
26632  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
26633  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26634} {
26635  15 115 215 315   -  - 215 15 315 15
26636  30 130 230 330 130 30 230 30 330 30
26637  45 145 245 345   -  - 245 45 345 45
26638  60 160 260 360 160 60 260 60 360 60
26639  75 175 275 375   -  - 275 75 375 75
26640  90 190 290 390 190 90 290 90 390 90
26641}
26642do_execsql_test joinD-914 {
26643  SELECT t1.*, t2.*, t3.*, t4.*
26644  FROM t1 FULL JOIN t2 ON t2.x>0
26645  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
26646  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
26647  WHERE t1.b = t2.b
26648  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26649} {
26650  30 130 230 330 130 30 230 30 330 30
26651  60 160 260 360 160 60 260 60 360 60
26652  90 190 290 390 190 90 290 90 390 90
26653}
26654do_execsql_test joinD-915 {
26655  SELECT t1.*, t2.*, t3.*, t4.*
26656  FROM t1 FULL JOIN t2 ON t2.x>0
26657  INNER JOIN t3 ON t3.y>0
26658  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
26659  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
26660  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26661} {
26662  30 130 230 330 130 30 230 30 330 30
26663  60 160 260 360 160 60 260 60 360 60
26664  90 190 290 390 190 90 290 90 390 90
26665}
26666do_execsql_test joinD-916 {
26667  SELECT t1.*, t2.*, t3.*, t4.*
26668  FROM t1 FULL JOIN t2 ON t2.x>0
26669  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
26670  INNER JOIN t4 ON t4.z>0
26671  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
26672  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26673} {
26674  30 130 230 330 130 30 230 30 330 30
26675  60 160 260 360 160 60 260 60 360 60
26676  90 190 290 390 190 90 290 90 390 90
26677}
26678do_execsql_test joinD-917 {
26679  SELECT t1.*, t2.*, t3.*, t4.*
26680  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26681  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
26682  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26683  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26684} {
26685  15 115 215 315   -  - 215 15 315 15
26686  30 130 230 330 130 30 230 30 330 30
26687  45 145 245 345   -  - 245 45 345 45
26688  60 160 260 360 160 60 260 60 360 60
26689  75 175 275 375   -  - 275 75 375 75
26690  90 190 290 390 190 90 290 90 390 90
26691}
26692do_execsql_test joinD-918 {
26693  SELECT t1.*, t2.*, t3.*, t4.*
26694  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26695  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26696  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26697  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26698} {
26699   3 103 203 303   -  - 203  3   -  -
26700   6 106 206 306 106  6 206  6   -  -
26701   9 109 209 309   -  - 209  9   -  -
26702  12 112 212 312 112 12 212 12   -  -
26703  15 115 215 315   -  - 215 15 315 15
26704  18 118 218 318 118 18 218 18   -  -
26705  21 121 221 321   -  - 221 21   -  -
26706  24 124 224 324 124 24 224 24   -  -
26707  27 127 227 327   -  - 227 27   -  -
26708  30 130 230 330 130 30 230 30 330 30
26709  33 133 233 333   -  - 233 33   -  -
26710  36 136 236 336 136 36 236 36   -  -
26711  39 139 239 339   -  - 239 39   -  -
26712  42 142 242 342 142 42 242 42   -  -
26713  45 145 245 345   -  - 245 45 345 45
26714  48 148 248 348 148 48 248 48   -  -
26715  51 151 251 351   -  - 251 51   -  -
26716  54 154 254 354 154 54 254 54   -  -
26717  57 157 257 357   -  - 257 57   -  -
26718  60 160 260 360 160 60 260 60 360 60
26719  63 163 263 363   -  - 263 63   -  -
26720  66 166 266 366 166 66 266 66   -  -
26721  69 169 269 369   -  - 269 69   -  -
26722  72 172 272 372 172 72 272 72   -  -
26723  75 175 275 375   -  - 275 75 375 75
26724  78 178 278 378 178 78 278 78   -  -
26725  81 181 281 381   -  - 281 81   -  -
26726  84 184 284 384 184 84 284 84   -  -
26727  87 187 287 387   -  - 287 87   -  -
26728  90 190 290 390 190 90 290 90 390 90
26729  93 193 293 393   -  - 293 93   -  -
26730}
26731do_execsql_test joinD-919 {
26732  SELECT t1.*, t2.*, t3.*, t4.*
26733  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26734  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26735  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26736  WHERE t2.x>0
26737  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26738} {
26739   6 106 206 306 106  6 206  6   -  -
26740  12 112 212 312 112 12 212 12   -  -
26741  18 118 218 318 118 18 218 18   -  -
26742  24 124 224 324 124 24 224 24   -  -
26743  30 130 230 330 130 30 230 30 330 30
26744  36 136 236 336 136 36 236 36   -  -
26745  42 142 242 342 142 42 242 42   -  -
26746  48 148 248 348 148 48 248 48   -  -
26747  54 154 254 354 154 54 254 54   -  -
26748  60 160 260 360 160 60 260 60 360 60
26749  66 166 266 366 166 66 266 66   -  -
26750  72 172 272 372 172 72 272 72   -  -
26751  78 178 278 378 178 78 278 78   -  -
26752  84 184 284 384 184 84 284 84   -  -
26753  90 190 290 390 190 90 290 90 390 90
26754}
26755do_execsql_test joinD-920 {
26756  SELECT t1.*, t2.*, t3.*, t4.*
26757  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26758  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26759  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26760  WHERE (t2.x>0 OR t2.x IS NULL)
26761  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26762} {
26763   3 103 203 303   -  - 203  3   -  -
26764   6 106 206 306 106  6 206  6   -  -
26765   9 109 209 309   -  - 209  9   -  -
26766  12 112 212 312 112 12 212 12   -  -
26767  15 115 215 315   -  - 215 15 315 15
26768  18 118 218 318 118 18 218 18   -  -
26769  21 121 221 321   -  - 221 21   -  -
26770  24 124 224 324 124 24 224 24   -  -
26771  27 127 227 327   -  - 227 27   -  -
26772  30 130 230 330 130 30 230 30 330 30
26773  33 133 233 333   -  - 233 33   -  -
26774  36 136 236 336 136 36 236 36   -  -
26775  39 139 239 339   -  - 239 39   -  -
26776  42 142 242 342 142 42 242 42   -  -
26777  45 145 245 345   -  - 245 45 345 45
26778  48 148 248 348 148 48 248 48   -  -
26779  51 151 251 351   -  - 251 51   -  -
26780  54 154 254 354 154 54 254 54   -  -
26781  57 157 257 357   -  - 257 57   -  -
26782  60 160 260 360 160 60 260 60 360 60
26783  63 163 263 363   -  - 263 63   -  -
26784  66 166 266 366 166 66 266 66   -  -
26785  69 169 269 369   -  - 269 69   -  -
26786  72 172 272 372 172 72 272 72   -  -
26787  75 175 275 375   -  - 275 75 375 75
26788  78 178 278 378 178 78 278 78   -  -
26789  81 181 281 381   -  - 281 81   -  -
26790  84 184 284 384 184 84 284 84   -  -
26791  87 187 287 387   -  - 287 87   -  -
26792  90 190 290 390 190 90 290 90 390 90
26793  93 193 293 393   -  - 293 93   -  -
26794}
26795do_execsql_test joinD-921 {
26796  SELECT t1.*, t2.*, t3.*, t4.*
26797  FROM t1 FULL JOIN t2 ON true
26798  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26799  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26800  WHERE t1.b=t2.b AND t2.x>0
26801  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26802} {
26803   6 106 206 306 106  6 206  6   -  -
26804  12 112 212 312 112 12 212 12   -  -
26805  18 118 218 318 118 18 218 18   -  -
26806  24 124 224 324 124 24 224 24   -  -
26807  30 130 230 330 130 30 230 30 330 30
26808  36 136 236 336 136 36 236 36   -  -
26809  42 142 242 342 142 42 242 42   -  -
26810  48 148 248 348 148 48 248 48   -  -
26811  54 154 254 354 154 54 254 54   -  -
26812  60 160 260 360 160 60 260 60 360 60
26813  66 166 266 366 166 66 266 66   -  -
26814  72 172 272 372 172 72 272 72   -  -
26815  78 178 278 378 178 78 278 78   -  -
26816  84 184 284 384 184 84 284 84   -  -
26817  90 190 290 390 190 90 290 90 390 90
26818}
26819do_execsql_test joinD-922 {
26820  SELECT t1.*, t2.*, t3.*, t4.*
26821  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26822  INNER JOIN t3 ON t1.c=t3.c
26823  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26824  WHERE t3.y>0
26825  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26826} {
26827   3 103 203 303   -  - 203  3   -  -
26828   6 106 206 306 106  6 206  6   -  -
26829   9 109 209 309   -  - 209  9   -  -
26830  12 112 212 312 112 12 212 12   -  -
26831  15 115 215 315   -  - 215 15 315 15
26832  18 118 218 318 118 18 218 18   -  -
26833  21 121 221 321   -  - 221 21   -  -
26834  24 124 224 324 124 24 224 24   -  -
26835  27 127 227 327   -  - 227 27   -  -
26836  30 130 230 330 130 30 230 30 330 30
26837  33 133 233 333   -  - 233 33   -  -
26838  36 136 236 336 136 36 236 36   -  -
26839  39 139 239 339   -  - 239 39   -  -
26840  42 142 242 342 142 42 242 42   -  -
26841  45 145 245 345   -  - 245 45 345 45
26842  48 148 248 348 148 48 248 48   -  -
26843  51 151 251 351   -  - 251 51   -  -
26844  54 154 254 354 154 54 254 54   -  -
26845  57 157 257 357   -  - 257 57   -  -
26846  60 160 260 360 160 60 260 60 360 60
26847  63 163 263 363   -  - 263 63   -  -
26848  66 166 266 366 166 66 266 66   -  -
26849  69 169 269 369   -  - 269 69   -  -
26850  72 172 272 372 172 72 272 72   -  -
26851  75 175 275 375   -  - 275 75 375 75
26852  78 178 278 378 178 78 278 78   -  -
26853  81 181 281 381   -  - 281 81   -  -
26854  84 184 284 384 184 84 284 84   -  -
26855  87 187 287 387   -  - 287 87   -  -
26856  90 190 290 390 190 90 290 90 390 90
26857  93 193 293 393   -  - 293 93   -  -
26858}
26859do_execsql_test joinD-923 {
26860  SELECT t1.*, t2.*, t3.*, t4.*
26861  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26862  INNER JOIN t3 ON t1.c=t3.c
26863  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26864  WHERE t3.y>0 OR t3.y IS NULL
26865  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26866} {
26867   3 103 203 303   -  - 203  3   -  -
26868   6 106 206 306 106  6 206  6   -  -
26869   9 109 209 309   -  - 209  9   -  -
26870  12 112 212 312 112 12 212 12   -  -
26871  15 115 215 315   -  - 215 15 315 15
26872  18 118 218 318 118 18 218 18   -  -
26873  21 121 221 321   -  - 221 21   -  -
26874  24 124 224 324 124 24 224 24   -  -
26875  27 127 227 327   -  - 227 27   -  -
26876  30 130 230 330 130 30 230 30 330 30
26877  33 133 233 333   -  - 233 33   -  -
26878  36 136 236 336 136 36 236 36   -  -
26879  39 139 239 339   -  - 239 39   -  -
26880  42 142 242 342 142 42 242 42   -  -
26881  45 145 245 345   -  - 245 45 345 45
26882  48 148 248 348 148 48 248 48   -  -
26883  51 151 251 351   -  - 251 51   -  -
26884  54 154 254 354 154 54 254 54   -  -
26885  57 157 257 357   -  - 257 57   -  -
26886  60 160 260 360 160 60 260 60 360 60
26887  63 163 263 363   -  - 263 63   -  -
26888  66 166 266 366 166 66 266 66   -  -
26889  69 169 269 369   -  - 269 69   -  -
26890  72 172 272 372 172 72 272 72   -  -
26891  75 175 275 375   -  - 275 75 375 75
26892  78 178 278 378 178 78 278 78   -  -
26893  81 181 281 381   -  - 281 81   -  -
26894  84 184 284 384 184 84 284 84   -  -
26895  87 187 287 387   -  - 287 87   -  -
26896  90 190 290 390 190 90 290 90 390 90
26897  93 193 293 393   -  - 293 93   -  -
26898}
26899do_execsql_test joinD-924 {
26900  SELECT t1.*, t2.*, t3.*, t4.*
26901  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26902  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26903  LEFT JOIN t4 ON t1.d=t4.d
26904  WHERE t4.z>0
26905  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26906} {
26907  15 115 215 315   -  - 215 15 315 15
26908  30 130 230 330 130 30 230 30 330 30
26909  45 145 245 345   -  - 245 45 345 45
26910  60 160 260 360 160 60 260 60 360 60
26911  75 175 275 375   -  - 275 75 375 75
26912  90 190 290 390 190 90 290 90 390 90
26913}
26914do_execsql_test joinD-925 {
26915  SELECT t1.*, t2.*, t3.*, t4.*
26916  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26917  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26918  LEFT JOIN t4 ON t1.d=t4.d
26919  WHERE t4.z IS NULL OR t4.z>0
26920  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26921} {
26922   3 103 203 303   -  - 203  3   -  -
26923   6 106 206 306 106  6 206  6   -  -
26924   9 109 209 309   -  - 209  9   -  -
26925  12 112 212 312 112 12 212 12   -  -
26926  15 115 215 315   -  - 215 15 315 15
26927  18 118 218 318 118 18 218 18   -  -
26928  21 121 221 321   -  - 221 21   -  -
26929  24 124 224 324 124 24 224 24   -  -
26930  27 127 227 327   -  - 227 27   -  -
26931  30 130 230 330 130 30 230 30 330 30
26932  33 133 233 333   -  - 233 33   -  -
26933  36 136 236 336 136 36 236 36   -  -
26934  39 139 239 339   -  - 239 39   -  -
26935  42 142 242 342 142 42 242 42   -  -
26936  45 145 245 345   -  - 245 45 345 45
26937  48 148 248 348 148 48 248 48   -  -
26938  51 151 251 351   -  - 251 51   -  -
26939  54 154 254 354 154 54 254 54   -  -
26940  57 157 257 357   -  - 257 57   -  -
26941  60 160 260 360 160 60 260 60 360 60
26942  63 163 263 363   -  - 263 63   -  -
26943  66 166 266 366 166 66 266 66   -  -
26944  69 169 269 369   -  - 269 69   -  -
26945  72 172 272 372 172 72 272 72   -  -
26946  75 175 275 375   -  - 275 75 375 75
26947  78 178 278 378 178 78 278 78   -  -
26948  81 181 281 381   -  - 281 81   -  -
26949  84 184 284 384 184 84 284 84   -  -
26950  87 187 287 387   -  - 287 87   -  -
26951  90 190 290 390 190 90 290 90 390 90
26952  93 193 293 393   -  - 293 93   -  -
26953}
26954do_execsql_test joinD-926 {
26955  SELECT t1.*, t2.*, t3.*, t4.*
26956  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26957  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26958  LEFT JOIN t4 ON t1.d=t4.d
26959  WHERE t2.x>0 AND t4.z>0
26960  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26961} {
26962  30 130 230 330 130 30 230 30 330 30
26963  60 160 260 360 160 60 260 60 360 60
26964  90 190 290 390 190 90 290 90 390 90
26965}
26966do_execsql_test joinD-927 {
26967  SELECT t1.*, t2.*, t3.*, t4.*
26968  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26969  INNER JOIN t3 ON t1.c=t3.c
26970  LEFT JOIN t4 ON t1.d=t4.d
26971  WHERE t4.z>0 AND t3.y>0
26972  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26973} {
26974  15 115 215 315   -  - 215 15 315 15
26975  30 130 230 330 130 30 230 30 330 30
26976  45 145 245 345   -  - 245 45 345 45
26977  60 160 260 360 160 60 260 60 360 60
26978  75 175 275 375   -  - 275 75 375 75
26979  90 190 290 390 190 90 290 90 390 90
26980}
26981do_execsql_test joinD-928 {
26982  SELECT t1.*, t2.*, t3.*, t4.*
26983  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26984  INNER JOIN t3 ON t1.c=t3.c
26985  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26986  WHERE t2.x>0 AND t3.y>0
26987  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26988} {
26989   6 106 206 306 106  6 206  6   -  -
26990  12 112 212 312 112 12 212 12   -  -
26991  18 118 218 318 118 18 218 18   -  -
26992  24 124 224 324 124 24 224 24   -  -
26993  30 130 230 330 130 30 230 30 330 30
26994  36 136 236 336 136 36 236 36   -  -
26995  42 142 242 342 142 42 242 42   -  -
26996  48 148 248 348 148 48 248 48   -  -
26997  54 154 254 354 154 54 254 54   -  -
26998  60 160 260 360 160 60 260 60 360 60
26999  66 166 266 366 166 66 266 66   -  -
27000  72 172 272 372 172 72 272 72   -  -
27001  78 178 278 378 178 78 278 78   -  -
27002  84 184 284 384 184 84 284 84   -  -
27003  90 190 290 390 190 90 290 90 390 90
27004}
27005do_execsql_test joinD-929 {
27006  SELECT t1.*, t2.*, t3.*, t4.*
27007  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27008  INNER JOIN t3 ON t1.c=t3.c
27009  LEFT JOIN t4 ON t1.d=t4.d
27010  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
27011  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27012} {
27013  30 130 230 330 130 30 230 30 330 30
27014  60 160 260 360 160 60 260 60 360 60
27015  90 190 290 390 190 90 290 90 390 90
27016}
27017do_execsql_test joinD-930 {
27018  SELECT t1.*, t2.*, t3.*, t4.*
27019  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
27020  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27021  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27022  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27023} {
27024   3 103 203 303   -  - 203  3   -  -
27025   6 106 206 306 106  6 206  6   -  -
27026   9 109 209 309   -  - 209  9   -  -
27027  12 112 212 312 112 12 212 12   -  -
27028  15 115 215 315   -  - 215 15 315 15
27029  18 118 218 318 118 18 218 18   -  -
27030  21 121 221 321   -  - 221 21   -  -
27031  24 124 224 324 124 24 224 24   -  -
27032  27 127 227 327   -  - 227 27   -  -
27033  30 130 230 330 130 30 230 30 330 30
27034  33 133 233 333   -  - 233 33   -  -
27035  36 136 236 336 136 36 236 36   -  -
27036  39 139 239 339   -  - 239 39   -  -
27037  42 142 242 342 142 42 242 42   -  -
27038  45 145 245 345   -  - 245 45 345 45
27039  48 148 248 348 148 48 248 48   -  -
27040  51 151 251 351   -  - 251 51   -  -
27041  54 154 254 354 154 54 254 54   -  -
27042  57 157 257 357   -  - 257 57   -  -
27043  60 160 260 360 160 60 260 60 360 60
27044  63 163 263 363   -  - 263 63   -  -
27045  66 166 266 366 166 66 266 66   -  -
27046  69 169 269 369   -  - 269 69   -  -
27047  72 172 272 372 172 72 272 72   -  -
27048  75 175 275 375   -  - 275 75 375 75
27049  78 178 278 378 178 78 278 78   -  -
27050  81 181 281 381   -  - 281 81   -  -
27051  84 184 284 384 184 84 284 84   -  -
27052  87 187 287 387   -  - 287 87   -  -
27053  90 190 290 390 190 90 290 90 390 90
27054  93 193 293 393   -  - 293 93   -  -
27055}
27056do_execsql_test joinD-931 {
27057  SELECT t1.*, t2.*, t3.*, t4.*
27058  FROM t1 FULL JOIN t2 ON t2.x>0
27059  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27060  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27061  WHERE t1.b = t2.b
27062  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27063} {
27064   6 106 206 306 106  6 206  6   -  -
27065  12 112 212 312 112 12 212 12   -  -
27066  18 118 218 318 118 18 218 18   -  -
27067  24 124 224 324 124 24 224 24   -  -
27068  30 130 230 330 130 30 230 30 330 30
27069  36 136 236 336 136 36 236 36   -  -
27070  42 142 242 342 142 42 242 42   -  -
27071  48 148 248 348 148 48 248 48   -  -
27072  54 154 254 354 154 54 254 54   -  -
27073  60 160 260 360 160 60 260 60 360 60
27074  66 166 266 366 166 66 266 66   -  -
27075  72 172 272 372 172 72 272 72   -  -
27076  78 178 278 378 178 78 278 78   -  -
27077  84 184 284 384 184 84 284 84   -  -
27078  90 190 290 390 190 90 290 90 390 90
27079}
27080do_execsql_test joinD-932 {
27081  SELECT t1.*, t2.*, t3.*, t4.*
27082  FROM t1 FULL JOIN t2 ON t2.x>0
27083  INNER JOIN t3 ON t3.y>0
27084  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27085  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
27086  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27087} {
27088   6 106 206 306 106  6 206  6   -  -
27089  12 112 212 312 112 12 212 12   -  -
27090  18 118 218 318 118 18 218 18   -  -
27091  24 124 224 324 124 24 224 24   -  -
27092  30 130 230 330 130 30 230 30 330 30
27093  36 136 236 336 136 36 236 36   -  -
27094  42 142 242 342 142 42 242 42   -  -
27095  48 148 248 348 148 48 248 48   -  -
27096  54 154 254 354 154 54 254 54   -  -
27097  60 160 260 360 160 60 260 60 360 60
27098  66 166 266 366 166 66 266 66   -  -
27099  72 172 272 372 172 72 272 72   -  -
27100  78 178 278 378 178 78 278 78   -  -
27101  84 184 284 384 184 84 284 84   -  -
27102  90 190 290 390 190 90 290 90 390 90
27103}
27104do_execsql_test joinD-933 {
27105  SELECT t1.*, t2.*, t3.*, t4.*
27106  FROM t1 FULL JOIN t2 ON t2.x>0
27107  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27108  LEFT JOIN t4 ON t4.z>0
27109  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
27110  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27111} {
27112  30 130 230 330 130 30 230 30 330 30
27113  60 160 260 360 160 60 260 60 360 60
27114  90 190 290 390 190 90 290 90 390 90
27115}
27116do_execsql_test joinD-934 {
27117  SELECT t1.*, t2.*, t3.*, t4.*
27118  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27119  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
27120  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
27121  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27122} {
27123   3 103 203 303   -  - 203  3   -  -
27124   6 106 206 306 106  6 206  6   -  -
27125   9 109 209 309   -  - 209  9   -  -
27126  12 112 212 312 112 12 212 12   -  -
27127  15 115 215 315   -  - 215 15 315 15
27128  18 118 218 318 118 18 218 18   -  -
27129  21 121 221 321   -  - 221 21   -  -
27130  24 124 224 324 124 24 224 24   -  -
27131  27 127 227 327   -  - 227 27   -  -
27132  30 130 230 330 130 30 230 30 330 30
27133  33 133 233 333   -  - 233 33   -  -
27134  36 136 236 336 136 36 236 36   -  -
27135  39 139 239 339   -  - 239 39   -  -
27136  42 142 242 342 142 42 242 42   -  -
27137  45 145 245 345   -  - 245 45 345 45
27138  48 148 248 348 148 48 248 48   -  -
27139  51 151 251 351   -  - 251 51   -  -
27140  54 154 254 354 154 54 254 54   -  -
27141  57 157 257 357   -  - 257 57   -  -
27142  60 160 260 360 160 60 260 60 360 60
27143  63 163 263 363   -  - 263 63   -  -
27144  66 166 266 366 166 66 266 66   -  -
27145  69 169 269 369   -  - 269 69   -  -
27146  72 172 272 372 172 72 272 72   -  -
27147  75 175 275 375   -  - 275 75 375 75
27148  78 178 278 378 178 78 278 78   -  -
27149  81 181 281 381   -  - 281 81   -  -
27150  84 184 284 384 184 84 284 84   -  -
27151  87 187 287 387   -  - 287 87   -  -
27152  90 190 290 390 190 90 290 90 390 90
27153  93 193 293 393   -  - 293 93   -  -
27154}
27155do_execsql_test joinD-935 {
27156  SELECT t1.*, t2.*, t3.*, t4.*
27157  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27158  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27159  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27160  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27161} {
27162  15 115 215 315   -  - 215 15 315 15
27163  30 130 230 330 130 30 230 30 330 30
27164  45 145 245 345   -  - 245 45 345 45
27165  60 160 260 360 160 60 260 60 360 60
27166  75 175 275 375   -  - 275 75 375 75
27167  90 190 290 390 190 90 290 90 390 90
27168   -   -   -   -   -  -   -  - 300  0
27169   -   -   -   -   -  -   -  - 305  5
27170   -   -   -   -   -  -   -  - 310 10
27171   -   -   -   -   -  -   -  - 320 20
27172   -   -   -   -   -  -   -  - 325 25
27173   -   -   -   -   -  -   -  - 335 35
27174   -   -   -   -   -  -   -  - 340 40
27175   -   -   -   -   -  -   -  - 350 50
27176   -   -   -   -   -  -   -  - 355 55
27177   -   -   -   -   -  -   -  - 365 65
27178   -   -   -   -   -  -   -  - 370 70
27179   -   -   -   -   -  -   -  - 380 80
27180   -   -   -   -   -  -   -  - 385 85
27181   -   -   -   -   -  -   -  - 395 95
27182}
27183do_execsql_test joinD-936 {
27184  SELECT t1.*, t2.*, t3.*, t4.*
27185  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27186  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27187  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27188  WHERE t2.x>0
27189  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27190} {
27191  30 130 230 330 130 30 230 30 330 30
27192  60 160 260 360 160 60 260 60 360 60
27193  90 190 290 390 190 90 290 90 390 90
27194}
27195do_execsql_test joinD-937 {
27196  SELECT t1.*, t2.*, t3.*, t4.*
27197  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27198  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27199  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27200  WHERE (t2.x>0 OR t2.x IS NULL)
27201  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27202} {
27203  15 115 215 315   -  - 215 15 315 15
27204  30 130 230 330 130 30 230 30 330 30
27205  45 145 245 345   -  - 245 45 345 45
27206  60 160 260 360 160 60 260 60 360 60
27207  75 175 275 375   -  - 275 75 375 75
27208  90 190 290 390 190 90 290 90 390 90
27209   -   -   -   -   -  -   -  - 300  0
27210   -   -   -   -   -  -   -  - 305  5
27211   -   -   -   -   -  -   -  - 310 10
27212   -   -   -   -   -  -   -  - 320 20
27213   -   -   -   -   -  -   -  - 325 25
27214   -   -   -   -   -  -   -  - 335 35
27215   -   -   -   -   -  -   -  - 340 40
27216   -   -   -   -   -  -   -  - 350 50
27217   -   -   -   -   -  -   -  - 355 55
27218   -   -   -   -   -  -   -  - 365 65
27219   -   -   -   -   -  -   -  - 370 70
27220   -   -   -   -   -  -   -  - 380 80
27221   -   -   -   -   -  -   -  - 385 85
27222   -   -   -   -   -  -   -  - 395 95
27223}
27224do_execsql_test joinD-938 {
27225  SELECT t1.*, t2.*, t3.*, t4.*
27226  FROM t1 FULL JOIN t2 ON true
27227  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27228  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27229  WHERE t1.b=t2.b AND t2.x>0
27230  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27231} {
27232  30 130 230 330 130 30 230 30 330 30
27233  60 160 260 360 160 60 260 60 360 60
27234  90 190 290 390 190 90 290 90 390 90
27235}
27236do_execsql_test joinD-939 {
27237  SELECT t1.*, t2.*, t3.*, t4.*
27238  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27239  INNER JOIN t3 ON t1.c=t3.c
27240  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27241  WHERE t3.y>0
27242  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27243} {
27244  15 115 215 315   -  - 215 15 315 15
27245  30 130 230 330 130 30 230 30 330 30
27246  45 145 245 345   -  - 245 45 345 45
27247  60 160 260 360 160 60 260 60 360 60
27248  75 175 275 375   -  - 275 75 375 75
27249  90 190 290 390 190 90 290 90 390 90
27250}
27251do_execsql_test joinD-940 {
27252  SELECT t1.*, t2.*, t3.*, t4.*
27253  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27254  INNER JOIN t3 ON t1.c=t3.c
27255  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27256  WHERE t3.y>0 OR t3.y IS NULL
27257  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27258} {
27259  15 115 215 315   -  - 215 15 315 15
27260  30 130 230 330 130 30 230 30 330 30
27261  45 145 245 345   -  - 245 45 345 45
27262  60 160 260 360 160 60 260 60 360 60
27263  75 175 275 375   -  - 275 75 375 75
27264  90 190 290 390 190 90 290 90 390 90
27265   -   -   -   -   -  -   -  - 300  0
27266   -   -   -   -   -  -   -  - 305  5
27267   -   -   -   -   -  -   -  - 310 10
27268   -   -   -   -   -  -   -  - 320 20
27269   -   -   -   -   -  -   -  - 325 25
27270   -   -   -   -   -  -   -  - 335 35
27271   -   -   -   -   -  -   -  - 340 40
27272   -   -   -   -   -  -   -  - 350 50
27273   -   -   -   -   -  -   -  - 355 55
27274   -   -   -   -   -  -   -  - 365 65
27275   -   -   -   -   -  -   -  - 370 70
27276   -   -   -   -   -  -   -  - 380 80
27277   -   -   -   -   -  -   -  - 385 85
27278   -   -   -   -   -  -   -  - 395 95
27279}
27280do_execsql_test joinD-941 {
27281  SELECT t1.*, t2.*, t3.*, t4.*
27282  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27283  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27284  RIGHT JOIN t4 ON t1.d=t4.d
27285  WHERE t4.z>0
27286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27287} {
27288  15 115 215 315   -  - 215 15 315 15
27289  30 130 230 330 130 30 230 30 330 30
27290  45 145 245 345   -  - 245 45 345 45
27291  60 160 260 360 160 60 260 60 360 60
27292  75 175 275 375   -  - 275 75 375 75
27293  90 190 290 390 190 90 290 90 390 90
27294   -   -   -   -   -  -   -  - 305  5
27295   -   -   -   -   -  -   -  - 310 10
27296   -   -   -   -   -  -   -  - 320 20
27297   -   -   -   -   -  -   -  - 325 25
27298   -   -   -   -   -  -   -  - 335 35
27299   -   -   -   -   -  -   -  - 340 40
27300   -   -   -   -   -  -   -  - 350 50
27301   -   -   -   -   -  -   -  - 355 55
27302   -   -   -   -   -  -   -  - 365 65
27303   -   -   -   -   -  -   -  - 370 70
27304   -   -   -   -   -  -   -  - 380 80
27305   -   -   -   -   -  -   -  - 385 85
27306   -   -   -   -   -  -   -  - 395 95
27307}
27308do_execsql_test joinD-942 {
27309  SELECT t1.*, t2.*, t3.*, t4.*
27310  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27311  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27312  RIGHT JOIN t4 ON t1.d=t4.d
27313  WHERE t4.z IS NULL OR t4.z>0
27314  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27315} {
27316  15 115 215 315   -  - 215 15 315 15
27317  30 130 230 330 130 30 230 30 330 30
27318  45 145 245 345   -  - 245 45 345 45
27319  60 160 260 360 160 60 260 60 360 60
27320  75 175 275 375   -  - 275 75 375 75
27321  90 190 290 390 190 90 290 90 390 90
27322   -   -   -   -   -  -   -  - 305  5
27323   -   -   -   -   -  -   -  - 310 10
27324   -   -   -   -   -  -   -  - 320 20
27325   -   -   -   -   -  -   -  - 325 25
27326   -   -   -   -   -  -   -  - 335 35
27327   -   -   -   -   -  -   -  - 340 40
27328   -   -   -   -   -  -   -  - 350 50
27329   -   -   -   -   -  -   -  - 355 55
27330   -   -   -   -   -  -   -  - 365 65
27331   -   -   -   -   -  -   -  - 370 70
27332   -   -   -   -   -  -   -  - 380 80
27333   -   -   -   -   -  -   -  - 385 85
27334   -   -   -   -   -  -   -  - 395 95
27335}
27336do_execsql_test joinD-943 {
27337  SELECT t1.*, t2.*, t3.*, t4.*
27338  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27339  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27340  RIGHT JOIN t4 ON t1.d=t4.d
27341  WHERE t2.x>0 AND t4.z>0
27342  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27343} {
27344  30 130 230 330 130 30 230 30 330 30
27345  60 160 260 360 160 60 260 60 360 60
27346  90 190 290 390 190 90 290 90 390 90
27347}
27348do_execsql_test joinD-944 {
27349  SELECT t1.*, t2.*, t3.*, t4.*
27350  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27351  INNER JOIN t3 ON t1.c=t3.c
27352  RIGHT JOIN t4 ON t1.d=t4.d
27353  WHERE t4.z>0 AND t3.y>0
27354  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27355} {
27356  15 115 215 315   -  - 215 15 315 15
27357  30 130 230 330 130 30 230 30 330 30
27358  45 145 245 345   -  - 245 45 345 45
27359  60 160 260 360 160 60 260 60 360 60
27360  75 175 275 375   -  - 275 75 375 75
27361  90 190 290 390 190 90 290 90 390 90
27362}
27363do_execsql_test joinD-945 {
27364  SELECT t1.*, t2.*, t3.*, t4.*
27365  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27366  INNER JOIN t3 ON t1.c=t3.c
27367  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27368  WHERE t2.x>0 AND t3.y>0
27369  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27370} {
27371  30 130 230 330 130 30 230 30 330 30
27372  60 160 260 360 160 60 260 60 360 60
27373  90 190 290 390 190 90 290 90 390 90
27374}
27375do_execsql_test joinD-946 {
27376  SELECT t1.*, t2.*, t3.*, t4.*
27377  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27378  INNER JOIN t3 ON t1.c=t3.c
27379  RIGHT JOIN t4 ON t1.d=t4.d
27380  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
27381  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27382} {
27383  30 130 230 330 130 30 230 30 330 30
27384  60 160 260 360 160 60 260 60 360 60
27385  90 190 290 390 190 90 290 90 390 90
27386}
27387do_execsql_test joinD-947 {
27388  SELECT t1.*, t2.*, t3.*, t4.*
27389  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
27390  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27391  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27392  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27393} {
27394  15 115 215 315   -  - 215 15 315 15
27395  30 130 230 330 130 30 230 30 330 30
27396  45 145 245 345   -  - 245 45 345 45
27397  60 160 260 360 160 60 260 60 360 60
27398  75 175 275 375   -  - 275 75 375 75
27399  90 190 290 390 190 90 290 90 390 90
27400   -   -   -   -   -  -   -  - 300  0
27401   -   -   -   -   -  -   -  - 305  5
27402   -   -   -   -   -  -   -  - 310 10
27403   -   -   -   -   -  -   -  - 320 20
27404   -   -   -   -   -  -   -  - 325 25
27405   -   -   -   -   -  -   -  - 335 35
27406   -   -   -   -   -  -   -  - 340 40
27407   -   -   -   -   -  -   -  - 350 50
27408   -   -   -   -   -  -   -  - 355 55
27409   -   -   -   -   -  -   -  - 365 65
27410   -   -   -   -   -  -   -  - 370 70
27411   -   -   -   -   -  -   -  - 380 80
27412   -   -   -   -   -  -   -  - 385 85
27413   -   -   -   -   -  -   -  - 395 95
27414}
27415do_execsql_test joinD-948 {
27416  SELECT t1.*, t2.*, t3.*, t4.*
27417  FROM t1 FULL JOIN t2 ON t2.x>0
27418  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27419  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27420  WHERE t1.b = t2.b
27421  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27422} {
27423  30 130 230 330 130 30 230 30 330 30
27424  60 160 260 360 160 60 260 60 360 60
27425  90 190 290 390 190 90 290 90 390 90
27426}
27427do_execsql_test joinD-949 {
27428  SELECT t1.*, t2.*, t3.*, t4.*
27429  FROM t1 FULL JOIN t2 ON t2.x>0
27430  INNER JOIN t3 ON t3.y>0
27431  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27432  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
27433  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27434} {
27435  30 130 230 330 130 30 230 30 330 30
27436  60 160 260 360 160 60 260 60 360 60
27437  90 190 290 390 190 90 290 90 390 90
27438}
27439do_execsql_test joinD-950 {
27440  SELECT t1.*, t2.*, t3.*, t4.*
27441  FROM t1 FULL JOIN t2 ON t2.x>0
27442  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27443  RIGHT JOIN t4 ON t4.z>0
27444  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
27445  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27446} {
27447  30 130 230 330 130 30 230 30 330 30
27448  60 160 260 360 160 60 260 60 360 60
27449  90 190 290 390 190 90 290 90 390 90
27450}
27451do_execsql_test joinD-951 {
27452  SELECT t1.*, t2.*, t3.*, t4.*
27453  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27454  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
27455  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27456  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27457} {
27458  15 115 215 315   -  - 215 15 315 15
27459  30 130 230 330 130 30 230 30 330 30
27460  45 145 245 345   -  - 245 45 345 45
27461  60 160 260 360 160 60 260 60 360 60
27462  75 175 275 375   -  - 275 75 375 75
27463  90 190 290 390 190 90 290 90 390 90
27464   -   -   -   -   -  -   -  - 300  0
27465   -   -   -   -   -  -   -  - 305  5
27466   -   -   -   -   -  -   -  - 310 10
27467   -   -   -   -   -  -   -  - 320 20
27468   -   -   -   -   -  -   -  - 325 25
27469   -   -   -   -   -  -   -  - 335 35
27470   -   -   -   -   -  -   -  - 340 40
27471   -   -   -   -   -  -   -  - 350 50
27472   -   -   -   -   -  -   -  - 355 55
27473   -   -   -   -   -  -   -  - 365 65
27474   -   -   -   -   -  -   -  - 370 70
27475   -   -   -   -   -  -   -  - 380 80
27476   -   -   -   -   -  -   -  - 385 85
27477   -   -   -   -   -  -   -  - 395 95
27478}
27479do_execsql_test joinD-952 {
27480  SELECT t1.*, t2.*, t3.*, t4.*
27481  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27482  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27483  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27484  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27485} {
27486   3 103 203 303   -  - 203  3   -  -
27487   6 106 206 306 106  6 206  6   -  -
27488   9 109 209 309   -  - 209  9   -  -
27489  12 112 212 312 112 12 212 12   -  -
27490  15 115 215 315   -  - 215 15 315 15
27491  18 118 218 318 118 18 218 18   -  -
27492  21 121 221 321   -  - 221 21   -  -
27493  24 124 224 324 124 24 224 24   -  -
27494  27 127 227 327   -  - 227 27   -  -
27495  30 130 230 330 130 30 230 30 330 30
27496  33 133 233 333   -  - 233 33   -  -
27497  36 136 236 336 136 36 236 36   -  -
27498  39 139 239 339   -  - 239 39   -  -
27499  42 142 242 342 142 42 242 42   -  -
27500  45 145 245 345   -  - 245 45 345 45
27501  48 148 248 348 148 48 248 48   -  -
27502  51 151 251 351   -  - 251 51   -  -
27503  54 154 254 354 154 54 254 54   -  -
27504  57 157 257 357   -  - 257 57   -  -
27505  60 160 260 360 160 60 260 60 360 60
27506  63 163 263 363   -  - 263 63   -  -
27507  66 166 266 366 166 66 266 66   -  -
27508  69 169 269 369   -  - 269 69   -  -
27509  72 172 272 372 172 72 272 72   -  -
27510  75 175 275 375   -  - 275 75 375 75
27511  78 178 278 378 178 78 278 78   -  -
27512  81 181 281 381   -  - 281 81   -  -
27513  84 184 284 384 184 84 284 84   -  -
27514  87 187 287 387   -  - 287 87   -  -
27515  90 190 290 390 190 90 290 90 390 90
27516  93 193 293 393   -  - 293 93   -  -
27517   -   -   -   -   -  -   -  - 300  0
27518   -   -   -   -   -  -   -  - 305  5
27519   -   -   -   -   -  -   -  - 310 10
27520   -   -   -   -   -  -   -  - 320 20
27521   -   -   -   -   -  -   -  - 325 25
27522   -   -   -   -   -  -   -  - 335 35
27523   -   -   -   -   -  -   -  - 340 40
27524   -   -   -   -   -  -   -  - 350 50
27525   -   -   -   -   -  -   -  - 355 55
27526   -   -   -   -   -  -   -  - 365 65
27527   -   -   -   -   -  -   -  - 370 70
27528   -   -   -   -   -  -   -  - 380 80
27529   -   -   -   -   -  -   -  - 385 85
27530   -   -   -   -   -  -   -  - 395 95
27531}
27532do_execsql_test joinD-953 {
27533  SELECT t1.*, t2.*, t3.*, t4.*
27534  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27535  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27536  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27537  WHERE t2.x>0
27538  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27539} {
27540   6 106 206 306 106  6 206  6   -  -
27541  12 112 212 312 112 12 212 12   -  -
27542  18 118 218 318 118 18 218 18   -  -
27543  24 124 224 324 124 24 224 24   -  -
27544  30 130 230 330 130 30 230 30 330 30
27545  36 136 236 336 136 36 236 36   -  -
27546  42 142 242 342 142 42 242 42   -  -
27547  48 148 248 348 148 48 248 48   -  -
27548  54 154 254 354 154 54 254 54   -  -
27549  60 160 260 360 160 60 260 60 360 60
27550  66 166 266 366 166 66 266 66   -  -
27551  72 172 272 372 172 72 272 72   -  -
27552  78 178 278 378 178 78 278 78   -  -
27553  84 184 284 384 184 84 284 84   -  -
27554  90 190 290 390 190 90 290 90 390 90
27555}
27556do_execsql_test joinD-954 {
27557  SELECT t1.*, t2.*, t3.*, t4.*
27558  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27559  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27560  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27561  WHERE (t2.x>0 OR t2.x IS NULL)
27562  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27563} {
27564   3 103 203 303   -  - 203  3   -  -
27565   6 106 206 306 106  6 206  6   -  -
27566   9 109 209 309   -  - 209  9   -  -
27567  12 112 212 312 112 12 212 12   -  -
27568  15 115 215 315   -  - 215 15 315 15
27569  18 118 218 318 118 18 218 18   -  -
27570  21 121 221 321   -  - 221 21   -  -
27571  24 124 224 324 124 24 224 24   -  -
27572  27 127 227 327   -  - 227 27   -  -
27573  30 130 230 330 130 30 230 30 330 30
27574  33 133 233 333   -  - 233 33   -  -
27575  36 136 236 336 136 36 236 36   -  -
27576  39 139 239 339   -  - 239 39   -  -
27577  42 142 242 342 142 42 242 42   -  -
27578  45 145 245 345   -  - 245 45 345 45
27579  48 148 248 348 148 48 248 48   -  -
27580  51 151 251 351   -  - 251 51   -  -
27581  54 154 254 354 154 54 254 54   -  -
27582  57 157 257 357   -  - 257 57   -  -
27583  60 160 260 360 160 60 260 60 360 60
27584  63 163 263 363   -  - 263 63   -  -
27585  66 166 266 366 166 66 266 66   -  -
27586  69 169 269 369   -  - 269 69   -  -
27587  72 172 272 372 172 72 272 72   -  -
27588  75 175 275 375   -  - 275 75 375 75
27589  78 178 278 378 178 78 278 78   -  -
27590  81 181 281 381   -  - 281 81   -  -
27591  84 184 284 384 184 84 284 84   -  -
27592  87 187 287 387   -  - 287 87   -  -
27593  90 190 290 390 190 90 290 90 390 90
27594  93 193 293 393   -  - 293 93   -  -
27595   -   -   -   -   -  -   -  - 300  0
27596   -   -   -   -   -  -   -  - 305  5
27597   -   -   -   -   -  -   -  - 310 10
27598   -   -   -   -   -  -   -  - 320 20
27599   -   -   -   -   -  -   -  - 325 25
27600   -   -   -   -   -  -   -  - 335 35
27601   -   -   -   -   -  -   -  - 340 40
27602   -   -   -   -   -  -   -  - 350 50
27603   -   -   -   -   -  -   -  - 355 55
27604   -   -   -   -   -  -   -  - 365 65
27605   -   -   -   -   -  -   -  - 370 70
27606   -   -   -   -   -  -   -  - 380 80
27607   -   -   -   -   -  -   -  - 385 85
27608   -   -   -   -   -  -   -  - 395 95
27609}
27610do_execsql_test joinD-955 {
27611  SELECT t1.*, t2.*, t3.*, t4.*
27612  FROM t1 FULL JOIN t2 ON true
27613  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27614  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27615  WHERE t1.b=t2.b AND t2.x>0
27616  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27617} {
27618   6 106 206 306 106  6 206  6   -  -
27619  12 112 212 312 112 12 212 12   -  -
27620  18 118 218 318 118 18 218 18   -  -
27621  24 124 224 324 124 24 224 24   -  -
27622  30 130 230 330 130 30 230 30 330 30
27623  36 136 236 336 136 36 236 36   -  -
27624  42 142 242 342 142 42 242 42   -  -
27625  48 148 248 348 148 48 248 48   -  -
27626  54 154 254 354 154 54 254 54   -  -
27627  60 160 260 360 160 60 260 60 360 60
27628  66 166 266 366 166 66 266 66   -  -
27629  72 172 272 372 172 72 272 72   -  -
27630  78 178 278 378 178 78 278 78   -  -
27631  84 184 284 384 184 84 284 84   -  -
27632  90 190 290 390 190 90 290 90 390 90
27633}
27634do_execsql_test joinD-956 {
27635  SELECT t1.*, t2.*, t3.*, t4.*
27636  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27637  INNER JOIN t3 ON t1.c=t3.c
27638  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27639  WHERE t3.y>0
27640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27641} {
27642   3 103 203 303   -  - 203  3   -  -
27643   6 106 206 306 106  6 206  6   -  -
27644   9 109 209 309   -  - 209  9   -  -
27645  12 112 212 312 112 12 212 12   -  -
27646  15 115 215 315   -  - 215 15 315 15
27647  18 118 218 318 118 18 218 18   -  -
27648  21 121 221 321   -  - 221 21   -  -
27649  24 124 224 324 124 24 224 24   -  -
27650  27 127 227 327   -  - 227 27   -  -
27651  30 130 230 330 130 30 230 30 330 30
27652  33 133 233 333   -  - 233 33   -  -
27653  36 136 236 336 136 36 236 36   -  -
27654  39 139 239 339   -  - 239 39   -  -
27655  42 142 242 342 142 42 242 42   -  -
27656  45 145 245 345   -  - 245 45 345 45
27657  48 148 248 348 148 48 248 48   -  -
27658  51 151 251 351   -  - 251 51   -  -
27659  54 154 254 354 154 54 254 54   -  -
27660  57 157 257 357   -  - 257 57   -  -
27661  60 160 260 360 160 60 260 60 360 60
27662  63 163 263 363   -  - 263 63   -  -
27663  66 166 266 366 166 66 266 66   -  -
27664  69 169 269 369   -  - 269 69   -  -
27665  72 172 272 372 172 72 272 72   -  -
27666  75 175 275 375   -  - 275 75 375 75
27667  78 178 278 378 178 78 278 78   -  -
27668  81 181 281 381   -  - 281 81   -  -
27669  84 184 284 384 184 84 284 84   -  -
27670  87 187 287 387   -  - 287 87   -  -
27671  90 190 290 390 190 90 290 90 390 90
27672  93 193 293 393   -  - 293 93   -  -
27673}
27674do_execsql_test joinD-957 {
27675  SELECT t1.*, t2.*, t3.*, t4.*
27676  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27677  INNER JOIN t3 ON t1.c=t3.c
27678  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27679  WHERE t3.y>0 OR t3.y IS NULL
27680  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27681} {
27682   3 103 203 303   -  - 203  3   -  -
27683   6 106 206 306 106  6 206  6   -  -
27684   9 109 209 309   -  - 209  9   -  -
27685  12 112 212 312 112 12 212 12   -  -
27686  15 115 215 315   -  - 215 15 315 15
27687  18 118 218 318 118 18 218 18   -  -
27688  21 121 221 321   -  - 221 21   -  -
27689  24 124 224 324 124 24 224 24   -  -
27690  27 127 227 327   -  - 227 27   -  -
27691  30 130 230 330 130 30 230 30 330 30
27692  33 133 233 333   -  - 233 33   -  -
27693  36 136 236 336 136 36 236 36   -  -
27694  39 139 239 339   -  - 239 39   -  -
27695  42 142 242 342 142 42 242 42   -  -
27696  45 145 245 345   -  - 245 45 345 45
27697  48 148 248 348 148 48 248 48   -  -
27698  51 151 251 351   -  - 251 51   -  -
27699  54 154 254 354 154 54 254 54   -  -
27700  57 157 257 357   -  - 257 57   -  -
27701  60 160 260 360 160 60 260 60 360 60
27702  63 163 263 363   -  - 263 63   -  -
27703  66 166 266 366 166 66 266 66   -  -
27704  69 169 269 369   -  - 269 69   -  -
27705  72 172 272 372 172 72 272 72   -  -
27706  75 175 275 375   -  - 275 75 375 75
27707  78 178 278 378 178 78 278 78   -  -
27708  81 181 281 381   -  - 281 81   -  -
27709  84 184 284 384 184 84 284 84   -  -
27710  87 187 287 387   -  - 287 87   -  -
27711  90 190 290 390 190 90 290 90 390 90
27712  93 193 293 393   -  - 293 93   -  -
27713   -   -   -   -   -  -   -  - 300  0
27714   -   -   -   -   -  -   -  - 305  5
27715   -   -   -   -   -  -   -  - 310 10
27716   -   -   -   -   -  -   -  - 320 20
27717   -   -   -   -   -  -   -  - 325 25
27718   -   -   -   -   -  -   -  - 335 35
27719   -   -   -   -   -  -   -  - 340 40
27720   -   -   -   -   -  -   -  - 350 50
27721   -   -   -   -   -  -   -  - 355 55
27722   -   -   -   -   -  -   -  - 365 65
27723   -   -   -   -   -  -   -  - 370 70
27724   -   -   -   -   -  -   -  - 380 80
27725   -   -   -   -   -  -   -  - 385 85
27726   -   -   -   -   -  -   -  - 395 95
27727}
27728do_execsql_test joinD-958 {
27729  SELECT t1.*, t2.*, t3.*, t4.*
27730  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27731  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27732  FULL JOIN t4 ON t1.d=t4.d
27733  WHERE t4.z>0
27734  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27735} {
27736  15 115 215 315   -  - 215 15 315 15
27737  30 130 230 330 130 30 230 30 330 30
27738  45 145 245 345   -  - 245 45 345 45
27739  60 160 260 360 160 60 260 60 360 60
27740  75 175 275 375   -  - 275 75 375 75
27741  90 190 290 390 190 90 290 90 390 90
27742   -   -   -   -   -  -   -  - 305  5
27743   -   -   -   -   -  -   -  - 310 10
27744   -   -   -   -   -  -   -  - 320 20
27745   -   -   -   -   -  -   -  - 325 25
27746   -   -   -   -   -  -   -  - 335 35
27747   -   -   -   -   -  -   -  - 340 40
27748   -   -   -   -   -  -   -  - 350 50
27749   -   -   -   -   -  -   -  - 355 55
27750   -   -   -   -   -  -   -  - 365 65
27751   -   -   -   -   -  -   -  - 370 70
27752   -   -   -   -   -  -   -  - 380 80
27753   -   -   -   -   -  -   -  - 385 85
27754   -   -   -   -   -  -   -  - 395 95
27755}
27756do_execsql_test joinD-959 {
27757  SELECT t1.*, t2.*, t3.*, t4.*
27758  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27759  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27760  FULL JOIN t4 ON t1.d=t4.d
27761  WHERE t4.z IS NULL OR t4.z>0
27762  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27763} {
27764   3 103 203 303   -  - 203  3   -  -
27765   6 106 206 306 106  6 206  6   -  -
27766   9 109 209 309   -  - 209  9   -  -
27767  12 112 212 312 112 12 212 12   -  -
27768  15 115 215 315   -  - 215 15 315 15
27769  18 118 218 318 118 18 218 18   -  -
27770  21 121 221 321   -  - 221 21   -  -
27771  24 124 224 324 124 24 224 24   -  -
27772  27 127 227 327   -  - 227 27   -  -
27773  30 130 230 330 130 30 230 30 330 30
27774  33 133 233 333   -  - 233 33   -  -
27775  36 136 236 336 136 36 236 36   -  -
27776  39 139 239 339   -  - 239 39   -  -
27777  42 142 242 342 142 42 242 42   -  -
27778  45 145 245 345   -  - 245 45 345 45
27779  48 148 248 348 148 48 248 48   -  -
27780  51 151 251 351   -  - 251 51   -  -
27781  54 154 254 354 154 54 254 54   -  -
27782  57 157 257 357   -  - 257 57   -  -
27783  60 160 260 360 160 60 260 60 360 60
27784  63 163 263 363   -  - 263 63   -  -
27785  66 166 266 366 166 66 266 66   -  -
27786  69 169 269 369   -  - 269 69   -  -
27787  72 172 272 372 172 72 272 72   -  -
27788  75 175 275 375   -  - 275 75 375 75
27789  78 178 278 378 178 78 278 78   -  -
27790  81 181 281 381   -  - 281 81   -  -
27791  84 184 284 384 184 84 284 84   -  -
27792  87 187 287 387   -  - 287 87   -  -
27793  90 190 290 390 190 90 290 90 390 90
27794  93 193 293 393   -  - 293 93   -  -
27795   -   -   -   -   -  -   -  - 305  5
27796   -   -   -   -   -  -   -  - 310 10
27797   -   -   -   -   -  -   -  - 320 20
27798   -   -   -   -   -  -   -  - 325 25
27799   -   -   -   -   -  -   -  - 335 35
27800   -   -   -   -   -  -   -  - 340 40
27801   -   -   -   -   -  -   -  - 350 50
27802   -   -   -   -   -  -   -  - 355 55
27803   -   -   -   -   -  -   -  - 365 65
27804   -   -   -   -   -  -   -  - 370 70
27805   -   -   -   -   -  -   -  - 380 80
27806   -   -   -   -   -  -   -  - 385 85
27807   -   -   -   -   -  -   -  - 395 95
27808}
27809do_execsql_test joinD-960 {
27810  SELECT t1.*, t2.*, t3.*, t4.*
27811  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27812  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27813  FULL JOIN t4 ON t1.d=t4.d
27814  WHERE t2.x>0 AND t4.z>0
27815  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27816} {
27817  30 130 230 330 130 30 230 30 330 30
27818  60 160 260 360 160 60 260 60 360 60
27819  90 190 290 390 190 90 290 90 390 90
27820}
27821do_execsql_test joinD-961 {
27822  SELECT t1.*, t2.*, t3.*, t4.*
27823  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27824  INNER JOIN t3 ON t1.c=t3.c
27825  FULL JOIN t4 ON t1.d=t4.d
27826  WHERE t4.z>0 AND t3.y>0
27827  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27828} {
27829  15 115 215 315   -  - 215 15 315 15
27830  30 130 230 330 130 30 230 30 330 30
27831  45 145 245 345   -  - 245 45 345 45
27832  60 160 260 360 160 60 260 60 360 60
27833  75 175 275 375   -  - 275 75 375 75
27834  90 190 290 390 190 90 290 90 390 90
27835}
27836do_execsql_test joinD-962 {
27837  SELECT t1.*, t2.*, t3.*, t4.*
27838  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27839  INNER JOIN t3 ON t1.c=t3.c
27840  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27841  WHERE t2.x>0 AND t3.y>0
27842  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27843} {
27844   6 106 206 306 106  6 206  6   -  -
27845  12 112 212 312 112 12 212 12   -  -
27846  18 118 218 318 118 18 218 18   -  -
27847  24 124 224 324 124 24 224 24   -  -
27848  30 130 230 330 130 30 230 30 330 30
27849  36 136 236 336 136 36 236 36   -  -
27850  42 142 242 342 142 42 242 42   -  -
27851  48 148 248 348 148 48 248 48   -  -
27852  54 154 254 354 154 54 254 54   -  -
27853  60 160 260 360 160 60 260 60 360 60
27854  66 166 266 366 166 66 266 66   -  -
27855  72 172 272 372 172 72 272 72   -  -
27856  78 178 278 378 178 78 278 78   -  -
27857  84 184 284 384 184 84 284 84   -  -
27858  90 190 290 390 190 90 290 90 390 90
27859}
27860do_execsql_test joinD-963 {
27861  SELECT t1.*, t2.*, t3.*, t4.*
27862  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27863  INNER JOIN t3 ON t1.c=t3.c
27864  FULL JOIN t4 ON t1.d=t4.d
27865  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
27866  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27867} {
27868  30 130 230 330 130 30 230 30 330 30
27869  60 160 260 360 160 60 260 60 360 60
27870  90 190 290 390 190 90 290 90 390 90
27871}
27872do_execsql_test joinD-964 {
27873  SELECT t1.*, t2.*, t3.*, t4.*
27874  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
27875  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27876  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
27877  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27878} {
27879   3 103 203 303   -  - 203  3   -  -
27880   6 106 206 306 106  6 206  6   -  -
27881   9 109 209 309   -  - 209  9   -  -
27882  12 112 212 312 112 12 212 12   -  -
27883  15 115 215 315   -  - 215 15 315 15
27884  18 118 218 318 118 18 218 18   -  -
27885  21 121 221 321   -  - 221 21   -  -
27886  24 124 224 324 124 24 224 24   -  -
27887  27 127 227 327   -  - 227 27   -  -
27888  30 130 230 330 130 30 230 30 330 30
27889  33 133 233 333   -  - 233 33   -  -
27890  36 136 236 336 136 36 236 36   -  -
27891  39 139 239 339   -  - 239 39   -  -
27892  42 142 242 342 142 42 242 42   -  -
27893  45 145 245 345   -  - 245 45 345 45
27894  48 148 248 348 148 48 248 48   -  -
27895  51 151 251 351   -  - 251 51   -  -
27896  54 154 254 354 154 54 254 54   -  -
27897  57 157 257 357   -  - 257 57   -  -
27898  60 160 260 360 160 60 260 60 360 60
27899  63 163 263 363   -  - 263 63   -  -
27900  66 166 266 366 166 66 266 66   -  -
27901  69 169 269 369   -  - 269 69   -  -
27902  72 172 272 372 172 72 272 72   -  -
27903  75 175 275 375   -  - 275 75 375 75
27904  78 178 278 378 178 78 278 78   -  -
27905  81 181 281 381   -  - 281 81   -  -
27906  84 184 284 384 184 84 284 84   -  -
27907  87 187 287 387   -  - 287 87   -  -
27908  90 190 290 390 190 90 290 90 390 90
27909  93 193 293 393   -  - 293 93   -  -
27910   -   -   -   -   -  -   -  - 300  0
27911   -   -   -   -   -  -   -  - 305  5
27912   -   -   -   -   -  -   -  - 310 10
27913   -   -   -   -   -  -   -  - 320 20
27914   -   -   -   -   -  -   -  - 325 25
27915   -   -   -   -   -  -   -  - 335 35
27916   -   -   -   -   -  -   -  - 340 40
27917   -   -   -   -   -  -   -  - 350 50
27918   -   -   -   -   -  -   -  - 355 55
27919   -   -   -   -   -  -   -  - 365 65
27920   -   -   -   -   -  -   -  - 370 70
27921   -   -   -   -   -  -   -  - 380 80
27922   -   -   -   -   -  -   -  - 385 85
27923   -   -   -   -   -  -   -  - 395 95
27924}
27925do_execsql_test joinD-965 {
27926  SELECT t1.*, t2.*, t3.*, t4.*
27927  FROM t1 FULL JOIN t2 ON t2.x>0
27928  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27929  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
27930  WHERE t1.b = t2.b
27931  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27932} {
27933   6 106 206 306 106  6 206  6   -  -
27934  12 112 212 312 112 12 212 12   -  -
27935  18 118 218 318 118 18 218 18   -  -
27936  24 124 224 324 124 24 224 24   -  -
27937  30 130 230 330 130 30 230 30 330 30
27938  36 136 236 336 136 36 236 36   -  -
27939  42 142 242 342 142 42 242 42   -  -
27940  48 148 248 348 148 48 248 48   -  -
27941  54 154 254 354 154 54 254 54   -  -
27942  60 160 260 360 160 60 260 60 360 60
27943  66 166 266 366 166 66 266 66   -  -
27944  72 172 272 372 172 72 272 72   -  -
27945  78 178 278 378 178 78 278 78   -  -
27946  84 184 284 384 184 84 284 84   -  -
27947  90 190 290 390 190 90 290 90 390 90
27948}
27949do_execsql_test joinD-966 {
27950  SELECT t1.*, t2.*, t3.*, t4.*
27951  FROM t1 FULL JOIN t2 ON t2.x>0
27952  INNER JOIN t3 ON t3.y>0
27953  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
27954  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
27955  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27956} {
27957   6 106 206 306 106  6 206  6   -  -
27958  12 112 212 312 112 12 212 12   -  -
27959  18 118 218 318 118 18 218 18   -  -
27960  24 124 224 324 124 24 224 24   -  -
27961  30 130 230 330 130 30 230 30 330 30
27962  36 136 236 336 136 36 236 36   -  -
27963  42 142 242 342 142 42 242 42   -  -
27964  48 148 248 348 148 48 248 48   -  -
27965  54 154 254 354 154 54 254 54   -  -
27966  60 160 260 360 160 60 260 60 360 60
27967  66 166 266 366 166 66 266 66   -  -
27968  72 172 272 372 172 72 272 72   -  -
27969  78 178 278 378 178 78 278 78   -  -
27970  84 184 284 384 184 84 284 84   -  -
27971  90 190 290 390 190 90 290 90 390 90
27972}
27973do_execsql_test joinD-967 {
27974  SELECT t1.*, t2.*, t3.*, t4.*
27975  FROM t1 FULL JOIN t2 ON t2.x>0
27976  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27977  FULL JOIN t4 ON t4.z>0
27978  WHERE t1.b = t2.b AND t1.d = t4.d
27979  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27980} {
27981  30 130 230 330 130 30 230 30 330 30
27982  60 160 260 360 160 60 260 60 360 60
27983  90 190 290 390 190 90 290 90 390 90
27984}
27985do_execsql_test joinD-968 {
27986  SELECT t1.*, t2.*, t3.*, t4.*
27987  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27988  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
27989  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27990  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27991} {
27992   3 103 203 303   -  - 203  3   -  -
27993   6 106 206 306 106  6 206  6   -  -
27994   9 109 209 309   -  - 209  9   -  -
27995  12 112 212 312 112 12 212 12   -  -
27996  15 115 215 315   -  - 215 15 315 15
27997  18 118 218 318 118 18 218 18   -  -
27998  21 121 221 321   -  - 221 21   -  -
27999  24 124 224 324 124 24 224 24   -  -
28000  27 127 227 327   -  - 227 27   -  -
28001  30 130 230 330 130 30 230 30 330 30
28002  33 133 233 333   -  - 233 33   -  -
28003  36 136 236 336 136 36 236 36   -  -
28004  39 139 239 339   -  - 239 39   -  -
28005  42 142 242 342 142 42 242 42   -  -
28006  45 145 245 345   -  - 245 45 345 45
28007  48 148 248 348 148 48 248 48   -  -
28008  51 151 251 351   -  - 251 51   -  -
28009  54 154 254 354 154 54 254 54   -  -
28010  57 157 257 357   -  - 257 57   -  -
28011  60 160 260 360 160 60 260 60 360 60
28012  63 163 263 363   -  - 263 63   -  -
28013  66 166 266 366 166 66 266 66   -  -
28014  69 169 269 369   -  - 269 69   -  -
28015  72 172 272 372 172 72 272 72   -  -
28016  75 175 275 375   -  - 275 75 375 75
28017  78 178 278 378 178 78 278 78   -  -
28018  81 181 281 381   -  - 281 81   -  -
28019  84 184 284 384 184 84 284 84   -  -
28020  87 187 287 387   -  - 287 87   -  -
28021  90 190 290 390 190 90 290 90 390 90
28022  93 193 293 393   -  - 293 93   -  -
28023   -   -   -   -   -  -   -  - 300  0
28024   -   -   -   -   -  -   -  - 305  5
28025   -   -   -   -   -  -   -  - 310 10
28026   -   -   -   -   -  -   -  - 320 20
28027   -   -   -   -   -  -   -  - 325 25
28028   -   -   -   -   -  -   -  - 335 35
28029   -   -   -   -   -  -   -  - 340 40
28030   -   -   -   -   -  -   -  - 350 50
28031   -   -   -   -   -  -   -  - 355 55
28032   -   -   -   -   -  -   -  - 365 65
28033   -   -   -   -   -  -   -  - 370 70
28034   -   -   -   -   -  -   -  - 380 80
28035   -   -   -   -   -  -   -  - 385 85
28036   -   -   -   -   -  -   -  - 395 95
28037}
28038do_execsql_test joinD-969 {
28039  SELECT t1.*, t2.*, t3.*, t4.*
28040  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28041  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28042  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28043  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28044} {
28045   5 105 205 305   -  -   -  - 305  5
28046  10 110 210 310 110 10   -  - 310 10
28047  15 115 215 315   -  - 215 15 315 15
28048  20 120 220 320 120 20   -  - 320 20
28049  25 125 225 325   -  -   -  - 325 25
28050  30 130 230 330 130 30 230 30 330 30
28051  35 135 235 335   -  -   -  - 335 35
28052  40 140 240 340 140 40   -  - 340 40
28053  45 145 245 345   -  - 245 45 345 45
28054  50 150 250 350 150 50   -  - 350 50
28055  55 155 255 355   -  -   -  - 355 55
28056  60 160 260 360 160 60 260 60 360 60
28057  65 165 265 365   -  -   -  - 365 65
28058  70 170 270 370 170 70   -  - 370 70
28059  75 175 275 375   -  - 275 75 375 75
28060  80 180 280 380 180 80   -  - 380 80
28061  85 185 285 385   -  -   -  - 385 85
28062  90 190 290 390 190 90 290 90 390 90
28063  95 195 295 395   -  -   -  - 395 95
28064}
28065do_execsql_test joinD-970 {
28066  SELECT t1.*, t2.*, t3.*, t4.*
28067  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28068  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28069  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28070  WHERE t2.x>0
28071  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28072} {
28073  10 110 210 310 110 10   -  - 310 10
28074  20 120 220 320 120 20   -  - 320 20
28075  30 130 230 330 130 30 230 30 330 30
28076  40 140 240 340 140 40   -  - 340 40
28077  50 150 250 350 150 50   -  - 350 50
28078  60 160 260 360 160 60 260 60 360 60
28079  70 170 270 370 170 70   -  - 370 70
28080  80 180 280 380 180 80   -  - 380 80
28081  90 190 290 390 190 90 290 90 390 90
28082}
28083do_execsql_test joinD-971 {
28084  SELECT t1.*, t2.*, t3.*, t4.*
28085  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28086  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28087  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28088  WHERE (t2.x>0 OR t2.x IS NULL)
28089  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28090} {
28091   5 105 205 305   -  -   -  - 305  5
28092  10 110 210 310 110 10   -  - 310 10
28093  15 115 215 315   -  - 215 15 315 15
28094  20 120 220 320 120 20   -  - 320 20
28095  25 125 225 325   -  -   -  - 325 25
28096  30 130 230 330 130 30 230 30 330 30
28097  35 135 235 335   -  -   -  - 335 35
28098  40 140 240 340 140 40   -  - 340 40
28099  45 145 245 345   -  - 245 45 345 45
28100  50 150 250 350 150 50   -  - 350 50
28101  55 155 255 355   -  -   -  - 355 55
28102  60 160 260 360 160 60 260 60 360 60
28103  65 165 265 365   -  -   -  - 365 65
28104  70 170 270 370 170 70   -  - 370 70
28105  75 175 275 375   -  - 275 75 375 75
28106  80 180 280 380 180 80   -  - 380 80
28107  85 185 285 385   -  -   -  - 385 85
28108  90 190 290 390 190 90 290 90 390 90
28109  95 195 295 395   -  -   -  - 395 95
28110}
28111do_execsql_test joinD-972 {
28112  SELECT t1.*, t2.*, t3.*, t4.*
28113  FROM t1 FULL JOIN t2 ON true
28114  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28115  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28116  WHERE t1.b=t2.b AND t2.x>0
28117  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28118} {
28119  10 110 210 310 110 10   -  - 310 10
28120  20 120 220 320 120 20   -  - 320 20
28121  30 130 230 330 130 30 230 30 330 30
28122  40 140 240 340 140 40   -  - 340 40
28123  50 150 250 350 150 50   -  - 350 50
28124  60 160 260 360 160 60 260 60 360 60
28125  70 170 270 370 170 70   -  - 370 70
28126  80 180 280 380 180 80   -  - 380 80
28127  90 190 290 390 190 90 290 90 390 90
28128}
28129do_execsql_test joinD-973 {
28130  SELECT t1.*, t2.*, t3.*, t4.*
28131  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28132  LEFT JOIN t3 ON t1.c=t3.c
28133  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28134  WHERE t3.y>0
28135  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28136} {
28137  15 115 215 315   -  - 215 15 315 15
28138  30 130 230 330 130 30 230 30 330 30
28139  45 145 245 345   -  - 245 45 345 45
28140  60 160 260 360 160 60 260 60 360 60
28141  75 175 275 375   -  - 275 75 375 75
28142  90 190 290 390 190 90 290 90 390 90
28143}
28144do_execsql_test joinD-974 {
28145  SELECT t1.*, t2.*, t3.*, t4.*
28146  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28147  LEFT JOIN t3 ON t1.c=t3.c
28148  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28149  WHERE t3.y>0 OR t3.y IS NULL
28150  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28151} {
28152   5 105 205 305   -  -   -  - 305  5
28153  10 110 210 310 110 10   -  - 310 10
28154  15 115 215 315   -  - 215 15 315 15
28155  20 120 220 320 120 20   -  - 320 20
28156  25 125 225 325   -  -   -  - 325 25
28157  30 130 230 330 130 30 230 30 330 30
28158  35 135 235 335   -  -   -  - 335 35
28159  40 140 240 340 140 40   -  - 340 40
28160  45 145 245 345   -  - 245 45 345 45
28161  50 150 250 350 150 50   -  - 350 50
28162  55 155 255 355   -  -   -  - 355 55
28163  60 160 260 360 160 60 260 60 360 60
28164  65 165 265 365   -  -   -  - 365 65
28165  70 170 270 370 170 70   -  - 370 70
28166  75 175 275 375   -  - 275 75 375 75
28167  80 180 280 380 180 80   -  - 380 80
28168  85 185 285 385   -  -   -  - 385 85
28169  90 190 290 390 190 90 290 90 390 90
28170  95 195 295 395   -  -   -  - 395 95
28171}
28172do_execsql_test joinD-975 {
28173  SELECT t1.*, t2.*, t3.*, t4.*
28174  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28175  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28176  INNER JOIN t4 ON t1.d=t4.d
28177  WHERE t4.z>0
28178  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28179} {
28180   5 105 205 305   -  -   -  - 305  5
28181  10 110 210 310 110 10   -  - 310 10
28182  15 115 215 315   -  - 215 15 315 15
28183  20 120 220 320 120 20   -  - 320 20
28184  25 125 225 325   -  -   -  - 325 25
28185  30 130 230 330 130 30 230 30 330 30
28186  35 135 235 335   -  -   -  - 335 35
28187  40 140 240 340 140 40   -  - 340 40
28188  45 145 245 345   -  - 245 45 345 45
28189  50 150 250 350 150 50   -  - 350 50
28190  55 155 255 355   -  -   -  - 355 55
28191  60 160 260 360 160 60 260 60 360 60
28192  65 165 265 365   -  -   -  - 365 65
28193  70 170 270 370 170 70   -  - 370 70
28194  75 175 275 375   -  - 275 75 375 75
28195  80 180 280 380 180 80   -  - 380 80
28196  85 185 285 385   -  -   -  - 385 85
28197  90 190 290 390 190 90 290 90 390 90
28198  95 195 295 395   -  -   -  - 395 95
28199}
28200do_execsql_test joinD-976 {
28201  SELECT t1.*, t2.*, t3.*, t4.*
28202  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28203  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28204  INNER JOIN t4 ON t1.d=t4.d
28205  WHERE t4.z IS NULL OR t4.z>0
28206  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28207} {
28208   5 105 205 305   -  -   -  - 305  5
28209  10 110 210 310 110 10   -  - 310 10
28210  15 115 215 315   -  - 215 15 315 15
28211  20 120 220 320 120 20   -  - 320 20
28212  25 125 225 325   -  -   -  - 325 25
28213  30 130 230 330 130 30 230 30 330 30
28214  35 135 235 335   -  -   -  - 335 35
28215  40 140 240 340 140 40   -  - 340 40
28216  45 145 245 345   -  - 245 45 345 45
28217  50 150 250 350 150 50   -  - 350 50
28218  55 155 255 355   -  -   -  - 355 55
28219  60 160 260 360 160 60 260 60 360 60
28220  65 165 265 365   -  -   -  - 365 65
28221  70 170 270 370 170 70   -  - 370 70
28222  75 175 275 375   -  - 275 75 375 75
28223  80 180 280 380 180 80   -  - 380 80
28224  85 185 285 385   -  -   -  - 385 85
28225  90 190 290 390 190 90 290 90 390 90
28226  95 195 295 395   -  -   -  - 395 95
28227}
28228do_execsql_test joinD-977 {
28229  SELECT t1.*, t2.*, t3.*, t4.*
28230  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28231  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28232  INNER JOIN t4 ON t1.d=t4.d
28233  WHERE t2.x>0 AND t4.z>0
28234  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28235} {
28236  10 110 210 310 110 10   -  - 310 10
28237  20 120 220 320 120 20   -  - 320 20
28238  30 130 230 330 130 30 230 30 330 30
28239  40 140 240 340 140 40   -  - 340 40
28240  50 150 250 350 150 50   -  - 350 50
28241  60 160 260 360 160 60 260 60 360 60
28242  70 170 270 370 170 70   -  - 370 70
28243  80 180 280 380 180 80   -  - 380 80
28244  90 190 290 390 190 90 290 90 390 90
28245}
28246do_execsql_test joinD-978 {
28247  SELECT t1.*, t2.*, t3.*, t4.*
28248  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28249  LEFT JOIN t3 ON t1.c=t3.c
28250  INNER JOIN t4 ON t1.d=t4.d
28251  WHERE t4.z>0 AND t3.y>0
28252  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28253} {
28254  15 115 215 315   -  - 215 15 315 15
28255  30 130 230 330 130 30 230 30 330 30
28256  45 145 245 345   -  - 245 45 345 45
28257  60 160 260 360 160 60 260 60 360 60
28258  75 175 275 375   -  - 275 75 375 75
28259  90 190 290 390 190 90 290 90 390 90
28260}
28261do_execsql_test joinD-979 {
28262  SELECT t1.*, t2.*, t3.*, t4.*
28263  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28264  LEFT JOIN t3 ON t1.c=t3.c
28265  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28266  WHERE t2.x>0 AND t3.y>0
28267  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28268} {
28269  30 130 230 330 130 30 230 30 330 30
28270  60 160 260 360 160 60 260 60 360 60
28271  90 190 290 390 190 90 290 90 390 90
28272}
28273do_execsql_test joinD-980 {
28274  SELECT t1.*, t2.*, t3.*, t4.*
28275  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28276  LEFT JOIN t3 ON t1.c=t3.c
28277  INNER JOIN t4 ON t1.d=t4.d
28278  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
28279  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28280} {
28281  30 130 230 330 130 30 230 30 330 30
28282  60 160 260 360 160 60 260 60 360 60
28283  90 190 290 390 190 90 290 90 390 90
28284}
28285do_execsql_test joinD-981 {
28286  SELECT t1.*, t2.*, t3.*, t4.*
28287  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
28288  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
28289  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
28290  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28291} {
28292   5 105 205 305   -  -   -  - 305  5
28293  10 110 210 310 110 10   -  - 310 10
28294  15 115 215 315   -  - 215 15 315 15
28295  20 120 220 320 120 20   -  - 320 20
28296  25 125 225 325   -  -   -  - 325 25
28297  30 130 230 330 130 30 230 30 330 30
28298  35 135 235 335   -  -   -  - 335 35
28299  40 140 240 340 140 40   -  - 340 40
28300  45 145 245 345   -  - 245 45 345 45
28301  50 150 250 350 150 50   -  - 350 50
28302  55 155 255 355   -  -   -  - 355 55
28303  60 160 260 360 160 60 260 60 360 60
28304  65 165 265 365   -  -   -  - 365 65
28305  70 170 270 370 170 70   -  - 370 70
28306  75 175 275 375   -  - 275 75 375 75
28307  80 180 280 380 180 80   -  - 380 80
28308  85 185 285 385   -  -   -  - 385 85
28309  90 190 290 390 190 90 290 90 390 90
28310  95 195 295 395   -  -   -  - 395 95
28311}
28312do_execsql_test joinD-982 {
28313  SELECT t1.*, t2.*, t3.*, t4.*
28314  FROM t1 FULL JOIN t2 ON t2.x>0
28315  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
28316  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
28317  WHERE t1.b = t2.b
28318  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28319} {
28320  10 110 210 310 110 10   -  - 310 10
28321  20 120 220 320 120 20   -  - 320 20
28322  30 130 230 330 130 30 230 30 330 30
28323  40 140 240 340 140 40   -  - 340 40
28324  50 150 250 350 150 50   -  - 350 50
28325  60 160 260 360 160 60 260 60 360 60
28326  70 170 270 370 170 70   -  - 370 70
28327  80 180 280 380 180 80   -  - 380 80
28328  90 190 290 390 190 90 290 90 390 90
28329}
28330do_execsql_test joinD-983 {
28331  SELECT t1.*, t2.*, t3.*, t4.*
28332  FROM t1 FULL JOIN t2 ON t2.x>0
28333  LEFT JOIN t3 ON t3.y>0
28334  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
28335  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
28336  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28337} {
28338  30 130 230 330 130 30 230 30 330 30
28339  60 160 260 360 160 60 260 60 360 60
28340  90 190 290 390 190 90 290 90 390 90
28341}
28342do_execsql_test joinD-984 {
28343  SELECT t1.*, t2.*, t3.*, t4.*
28344  FROM t1 FULL JOIN t2 ON t2.x>0
28345  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
28346  INNER JOIN t4 ON t4.z>0
28347  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
28348  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28349} {
28350  10 110 210 310 110 10   -  - 310 10
28351  20 120 220 320 120 20   -  - 320 20
28352  30 130 230 330 130 30 230 30 330 30
28353  40 140 240 340 140 40   -  - 340 40
28354  50 150 250 350 150 50   -  - 350 50
28355  60 160 260 360 160 60 260 60 360 60
28356  70 170 270 370 170 70   -  - 370 70
28357  80 180 280 380 180 80   -  - 380 80
28358  90 190 290 390 190 90 290 90 390 90
28359}
28360do_execsql_test joinD-985 {
28361  SELECT t1.*, t2.*, t3.*, t4.*
28362  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28363  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
28364  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28365  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28366} {
28367   5 105 205 305   -  -   -  - 305  5
28368  10 110 210 310 110 10   -  - 310 10
28369  15 115 215 315   -  - 215 15 315 15
28370  20 120 220 320 120 20   -  - 320 20
28371  25 125 225 325   -  -   -  - 325 25
28372  30 130 230 330 130 30 230 30 330 30
28373  35 135 235 335   -  -   -  - 335 35
28374  40 140 240 340 140 40   -  - 340 40
28375  45 145 245 345   -  - 245 45 345 45
28376  50 150 250 350 150 50   -  - 350 50
28377  55 155 255 355   -  -   -  - 355 55
28378  60 160 260 360 160 60 260 60 360 60
28379  65 165 265 365   -  -   -  - 365 65
28380  70 170 270 370 170 70   -  - 370 70
28381  75 175 275 375   -  - 275 75 375 75
28382  80 180 280 380 180 80   -  - 380 80
28383  85 185 285 385   -  -   -  - 385 85
28384  90 190 290 390 190 90 290 90 390 90
28385  95 195 295 395   -  -   -  - 395 95
28386}
28387do_execsql_test joinD-986 {
28388  SELECT t1.*, t2.*, t3.*, t4.*
28389  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28390  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28391  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28392  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28393} {
28394   0 100 200 300   -  -   -  -   -  -
28395   1 101 201 301   -  -   -  -   -  -
28396   2 102 202 302 102  2   -  -   -  -
28397   3 103 203 303   -  - 203  3   -  -
28398   4 104 204 304 104  4   -  -   -  -
28399   5 105 205 305   -  -   -  - 305  5
28400   6 106 206 306 106  6 206  6   -  -
28401   7 107 207 307   -  -   -  -   -  -
28402   8 108 208 308 108  8   -  -   -  -
28403   9 109 209 309   -  - 209  9   -  -
28404  10 110 210 310 110 10   -  - 310 10
28405  11 111 211 311   -  -   -  -   -  -
28406  12 112 212 312 112 12 212 12   -  -
28407  13 113 213 313   -  -   -  -   -  -
28408  14 114 214 314 114 14   -  -   -  -
28409  15 115 215 315   -  - 215 15 315 15
28410  16 116 216 316 116 16   -  -   -  -
28411  17 117 217 317   -  -   -  -   -  -
28412  18 118 218 318 118 18 218 18   -  -
28413  19 119 219 319   -  -   -  -   -  -
28414  20 120 220 320 120 20   -  - 320 20
28415  21 121 221 321   -  - 221 21   -  -
28416  22 122 222 322 122 22   -  -   -  -
28417  23 123 223 323   -  -   -  -   -  -
28418  24 124 224 324 124 24 224 24   -  -
28419  25 125 225 325   -  -   -  - 325 25
28420  26 126 226 326 126 26   -  -   -  -
28421  27 127 227 327   -  - 227 27   -  -
28422  28 128 228 328 128 28   -  -   -  -
28423  29 129 229 329   -  -   -  -   -  -
28424  30 130 230 330 130 30 230 30 330 30
28425  31 131 231 331   -  -   -  -   -  -
28426  32 132 232 332 132 32   -  -   -  -
28427  33 133 233 333   -  - 233 33   -  -
28428  34 134 234 334 134 34   -  -   -  -
28429  35 135 235 335   -  -   -  - 335 35
28430  36 136 236 336 136 36 236 36   -  -
28431  37 137 237 337   -  -   -  -   -  -
28432  38 138 238 338 138 38   -  -   -  -
28433  39 139 239 339   -  - 239 39   -  -
28434  40 140 240 340 140 40   -  - 340 40
28435  41 141 241 341   -  -   -  -   -  -
28436  42 142 242 342 142 42 242 42   -  -
28437  43 143 243 343   -  -   -  -   -  -
28438  44 144 244 344 144 44   -  -   -  -
28439  45 145 245 345   -  - 245 45 345 45
28440  46 146 246 346 146 46   -  -   -  -
28441  47 147 247 347   -  -   -  -   -  -
28442  48 148 248 348 148 48 248 48   -  -
28443  49 149 249 349   -  -   -  -   -  -
28444  50 150 250 350 150 50   -  - 350 50
28445  51 151 251 351   -  - 251 51   -  -
28446  52 152 252 352 152 52   -  -   -  -
28447  53 153 253 353   -  -   -  -   -  -
28448  54 154 254 354 154 54 254 54   -  -
28449  55 155 255 355   -  -   -  - 355 55
28450  56 156 256 356 156 56   -  -   -  -
28451  57 157 257 357   -  - 257 57   -  -
28452  58 158 258 358 158 58   -  -   -  -
28453  59 159 259 359   -  -   -  -   -  -
28454  60 160 260 360 160 60 260 60 360 60
28455  61 161 261 361   -  -   -  -   -  -
28456  62 162 262 362 162 62   -  -   -  -
28457  63 163 263 363   -  - 263 63   -  -
28458  64 164 264 364 164 64   -  -   -  -
28459  65 165 265 365   -  -   -  - 365 65
28460  66 166 266 366 166 66 266 66   -  -
28461  67 167 267 367   -  -   -  -   -  -
28462  68 168 268 368 168 68   -  -   -  -
28463  69 169 269 369   -  - 269 69   -  -
28464  70 170 270 370 170 70   -  - 370 70
28465  71 171 271 371   -  -   -  -   -  -
28466  72 172 272 372 172 72 272 72   -  -
28467  73 173 273 373   -  -   -  -   -  -
28468  74 174 274 374 174 74   -  -   -  -
28469  75 175 275 375   -  - 275 75 375 75
28470  76 176 276 376 176 76   -  -   -  -
28471  77 177 277 377   -  -   -  -   -  -
28472  78 178 278 378 178 78 278 78   -  -
28473  79 179 279 379   -  -   -  -   -  -
28474  80 180 280 380 180 80   -  - 380 80
28475  81 181 281 381   -  - 281 81   -  -
28476  82 182 282 382 182 82   -  -   -  -
28477  83 183 283 383   -  -   -  -   -  -
28478  84 184 284 384 184 84 284 84   -  -
28479  85 185 285 385   -  -   -  - 385 85
28480  86 186 286 386 186 86   -  -   -  -
28481  87 187 287 387   -  - 287 87   -  -
28482  88 188 288 388 188 88   -  -   -  -
28483  89 189 289 389   -  -   -  -   -  -
28484  90 190 290 390 190 90 290 90 390 90
28485  91 191 291 391   -  -   -  -   -  -
28486  92 192 292 392 192 92   -  -   -  -
28487  93 193 293 393   -  - 293 93   -  -
28488  94 194 294 394 194 94   -  -   -  -
28489  95 195 295 395   -  -   -  - 395 95
28490  96   - 296 396   -  -   -  -   -  -
28491  97 197   - 397   -  -   -  -   -  -
28492  98 198 298   -   -  -   -  -   -  -
28493  99   -   -   -   -  -   -  -   -  -
28494   -   -   -   - 100  0   -  -   -  -
28495}
28496do_execsql_test joinD-987 {
28497  SELECT t1.*, t2.*, t3.*, t4.*
28498  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28499  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28500  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28501  WHERE t2.x>0
28502  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28503} {
28504   2 102 202 302 102  2   -  -   -  -
28505   4 104 204 304 104  4   -  -   -  -
28506   6 106 206 306 106  6 206  6   -  -
28507   8 108 208 308 108  8   -  -   -  -
28508  10 110 210 310 110 10   -  - 310 10
28509  12 112 212 312 112 12 212 12   -  -
28510  14 114 214 314 114 14   -  -   -  -
28511  16 116 216 316 116 16   -  -   -  -
28512  18 118 218 318 118 18 218 18   -  -
28513  20 120 220 320 120 20   -  - 320 20
28514  22 122 222 322 122 22   -  -   -  -
28515  24 124 224 324 124 24 224 24   -  -
28516  26 126 226 326 126 26   -  -   -  -
28517  28 128 228 328 128 28   -  -   -  -
28518  30 130 230 330 130 30 230 30 330 30
28519  32 132 232 332 132 32   -  -   -  -
28520  34 134 234 334 134 34   -  -   -  -
28521  36 136 236 336 136 36 236 36   -  -
28522  38 138 238 338 138 38   -  -   -  -
28523  40 140 240 340 140 40   -  - 340 40
28524  42 142 242 342 142 42 242 42   -  -
28525  44 144 244 344 144 44   -  -   -  -
28526  46 146 246 346 146 46   -  -   -  -
28527  48 148 248 348 148 48 248 48   -  -
28528  50 150 250 350 150 50   -  - 350 50
28529  52 152 252 352 152 52   -  -   -  -
28530  54 154 254 354 154 54 254 54   -  -
28531  56 156 256 356 156 56   -  -   -  -
28532  58 158 258 358 158 58   -  -   -  -
28533  60 160 260 360 160 60 260 60 360 60
28534  62 162 262 362 162 62   -  -   -  -
28535  64 164 264 364 164 64   -  -   -  -
28536  66 166 266 366 166 66 266 66   -  -
28537  68 168 268 368 168 68   -  -   -  -
28538  70 170 270 370 170 70   -  - 370 70
28539  72 172 272 372 172 72 272 72   -  -
28540  74 174 274 374 174 74   -  -   -  -
28541  76 176 276 376 176 76   -  -   -  -
28542  78 178 278 378 178 78 278 78   -  -
28543  80 180 280 380 180 80   -  - 380 80
28544  82 182 282 382 182 82   -  -   -  -
28545  84 184 284 384 184 84 284 84   -  -
28546  86 186 286 386 186 86   -  -   -  -
28547  88 188 288 388 188 88   -  -   -  -
28548  90 190 290 390 190 90 290 90 390 90
28549  92 192 292 392 192 92   -  -   -  -
28550  94 194 294 394 194 94   -  -   -  -
28551}
28552do_execsql_test joinD-988 {
28553  SELECT t1.*, t2.*, t3.*, t4.*
28554  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28555  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28556  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28557  WHERE (t2.x>0 OR t2.x IS NULL)
28558  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28559} {
28560   1 101 201 301   -  -   -  -   -  -
28561   2 102 202 302 102  2   -  -   -  -
28562   3 103 203 303   -  - 203  3   -  -
28563   4 104 204 304 104  4   -  -   -  -
28564   5 105 205 305   -  -   -  - 305  5
28565   6 106 206 306 106  6 206  6   -  -
28566   7 107 207 307   -  -   -  -   -  -
28567   8 108 208 308 108  8   -  -   -  -
28568   9 109 209 309   -  - 209  9   -  -
28569  10 110 210 310 110 10   -  - 310 10
28570  11 111 211 311   -  -   -  -   -  -
28571  12 112 212 312 112 12 212 12   -  -
28572  13 113 213 313   -  -   -  -   -  -
28573  14 114 214 314 114 14   -  -   -  -
28574  15 115 215 315   -  - 215 15 315 15
28575  16 116 216 316 116 16   -  -   -  -
28576  17 117 217 317   -  -   -  -   -  -
28577  18 118 218 318 118 18 218 18   -  -
28578  19 119 219 319   -  -   -  -   -  -
28579  20 120 220 320 120 20   -  - 320 20
28580  21 121 221 321   -  - 221 21   -  -
28581  22 122 222 322 122 22   -  -   -  -
28582  23 123 223 323   -  -   -  -   -  -
28583  24 124 224 324 124 24 224 24   -  -
28584  25 125 225 325   -  -   -  - 325 25
28585  26 126 226 326 126 26   -  -   -  -
28586  27 127 227 327   -  - 227 27   -  -
28587  28 128 228 328 128 28   -  -   -  -
28588  29 129 229 329   -  -   -  -   -  -
28589  30 130 230 330 130 30 230 30 330 30
28590  31 131 231 331   -  -   -  -   -  -
28591  32 132 232 332 132 32   -  -   -  -
28592  33 133 233 333   -  - 233 33   -  -
28593  34 134 234 334 134 34   -  -   -  -
28594  35 135 235 335   -  -   -  - 335 35
28595  36 136 236 336 136 36 236 36   -  -
28596  37 137 237 337   -  -   -  -   -  -
28597  38 138 238 338 138 38   -  -   -  -
28598  39 139 239 339   -  - 239 39   -  -
28599  40 140 240 340 140 40   -  - 340 40
28600  41 141 241 341   -  -   -  -   -  -
28601  42 142 242 342 142 42 242 42   -  -
28602  43 143 243 343   -  -   -  -   -  -
28603  44 144 244 344 144 44   -  -   -  -
28604  45 145 245 345   -  - 245 45 345 45
28605  46 146 246 346 146 46   -  -   -  -
28606  47 147 247 347   -  -   -  -   -  -
28607  48 148 248 348 148 48 248 48   -  -
28608  49 149 249 349   -  -   -  -   -  -
28609  50 150 250 350 150 50   -  - 350 50
28610  51 151 251 351   -  - 251 51   -  -
28611  52 152 252 352 152 52   -  -   -  -
28612  53 153 253 353   -  -   -  -   -  -
28613  54 154 254 354 154 54 254 54   -  -
28614  55 155 255 355   -  -   -  - 355 55
28615  56 156 256 356 156 56   -  -   -  -
28616  57 157 257 357   -  - 257 57   -  -
28617  58 158 258 358 158 58   -  -   -  -
28618  59 159 259 359   -  -   -  -   -  -
28619  60 160 260 360 160 60 260 60 360 60
28620  61 161 261 361   -  -   -  -   -  -
28621  62 162 262 362 162 62   -  -   -  -
28622  63 163 263 363   -  - 263 63   -  -
28623  64 164 264 364 164 64   -  -   -  -
28624  65 165 265 365   -  -   -  - 365 65
28625  66 166 266 366 166 66 266 66   -  -
28626  67 167 267 367   -  -   -  -   -  -
28627  68 168 268 368 168 68   -  -   -  -
28628  69 169 269 369   -  - 269 69   -  -
28629  70 170 270 370 170 70   -  - 370 70
28630  71 171 271 371   -  -   -  -   -  -
28631  72 172 272 372 172 72 272 72   -  -
28632  73 173 273 373   -  -   -  -   -  -
28633  74 174 274 374 174 74   -  -   -  -
28634  75 175 275 375   -  - 275 75 375 75
28635  76 176 276 376 176 76   -  -   -  -
28636  77 177 277 377   -  -   -  -   -  -
28637  78 178 278 378 178 78 278 78   -  -
28638  79 179 279 379   -  -   -  -   -  -
28639  80 180 280 380 180 80   -  - 380 80
28640  81 181 281 381   -  - 281 81   -  -
28641  82 182 282 382 182 82   -  -   -  -
28642  83 183 283 383   -  -   -  -   -  -
28643  84 184 284 384 184 84 284 84   -  -
28644  85 185 285 385   -  -   -  - 385 85
28645  86 186 286 386 186 86   -  -   -  -
28646  87 187 287 387   -  - 287 87   -  -
28647  88 188 288 388 188 88   -  -   -  -
28648  89 189 289 389   -  -   -  -   -  -
28649  90 190 290 390 190 90 290 90 390 90
28650  91 191 291 391   -  -   -  -   -  -
28651  92 192 292 392 192 92   -  -   -  -
28652  93 193 293 393   -  - 293 93   -  -
28653  94 194 294 394 194 94   -  -   -  -
28654  95 195 295 395   -  -   -  - 395 95
28655  96   - 296 396   -  -   -  -   -  -
28656  97 197   - 397   -  -   -  -   -  -
28657  98 198 298   -   -  -   -  -   -  -
28658  99   -   -   -   -  -   -  -   -  -
28659}
28660do_execsql_test joinD-989 {
28661  SELECT t1.*, t2.*, t3.*, t4.*
28662  FROM t1 FULL JOIN t2 ON true
28663  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28664  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28665  WHERE t1.b=t2.b AND t2.x>0
28666  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28667} {
28668   2 102 202 302 102  2   -  -   -  -
28669   4 104 204 304 104  4   -  -   -  -
28670   6 106 206 306 106  6 206  6   -  -
28671   8 108 208 308 108  8   -  -   -  -
28672  10 110 210 310 110 10   -  - 310 10
28673  12 112 212 312 112 12 212 12   -  -
28674  14 114 214 314 114 14   -  -   -  -
28675  16 116 216 316 116 16   -  -   -  -
28676  18 118 218 318 118 18 218 18   -  -
28677  20 120 220 320 120 20   -  - 320 20
28678  22 122 222 322 122 22   -  -   -  -
28679  24 124 224 324 124 24 224 24   -  -
28680  26 126 226 326 126 26   -  -   -  -
28681  28 128 228 328 128 28   -  -   -  -
28682  30 130 230 330 130 30 230 30 330 30
28683  32 132 232 332 132 32   -  -   -  -
28684  34 134 234 334 134 34   -  -   -  -
28685  36 136 236 336 136 36 236 36   -  -
28686  38 138 238 338 138 38   -  -   -  -
28687  40 140 240 340 140 40   -  - 340 40
28688  42 142 242 342 142 42 242 42   -  -
28689  44 144 244 344 144 44   -  -   -  -
28690  46 146 246 346 146 46   -  -   -  -
28691  48 148 248 348 148 48 248 48   -  -
28692  50 150 250 350 150 50   -  - 350 50
28693  52 152 252 352 152 52   -  -   -  -
28694  54 154 254 354 154 54 254 54   -  -
28695  56 156 256 356 156 56   -  -   -  -
28696  58 158 258 358 158 58   -  -   -  -
28697  60 160 260 360 160 60 260 60 360 60
28698  62 162 262 362 162 62   -  -   -  -
28699  64 164 264 364 164 64   -  -   -  -
28700  66 166 266 366 166 66 266 66   -  -
28701  68 168 268 368 168 68   -  -   -  -
28702  70 170 270 370 170 70   -  - 370 70
28703  72 172 272 372 172 72 272 72   -  -
28704  74 174 274 374 174 74   -  -   -  -
28705  76 176 276 376 176 76   -  -   -  -
28706  78 178 278 378 178 78 278 78   -  -
28707  80 180 280 380 180 80   -  - 380 80
28708  82 182 282 382 182 82   -  -   -  -
28709  84 184 284 384 184 84 284 84   -  -
28710  86 186 286 386 186 86   -  -   -  -
28711  88 188 288 388 188 88   -  -   -  -
28712  90 190 290 390 190 90 290 90 390 90
28713  92 192 292 392 192 92   -  -   -  -
28714  94 194 294 394 194 94   -  -   -  -
28715}
28716do_execsql_test joinD-990 {
28717  SELECT t1.*, t2.*, t3.*, t4.*
28718  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28719  LEFT JOIN t3 ON t1.c=t3.c
28720  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28721  WHERE t3.y>0
28722  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28723} {
28724   3 103 203 303   -  - 203  3   -  -
28725   6 106 206 306 106  6 206  6   -  -
28726   9 109 209 309   -  - 209  9   -  -
28727  12 112 212 312 112 12 212 12   -  -
28728  15 115 215 315   -  - 215 15 315 15
28729  18 118 218 318 118 18 218 18   -  -
28730  21 121 221 321   -  - 221 21   -  -
28731  24 124 224 324 124 24 224 24   -  -
28732  27 127 227 327   -  - 227 27   -  -
28733  30 130 230 330 130 30 230 30 330 30
28734  33 133 233 333   -  - 233 33   -  -
28735  36 136 236 336 136 36 236 36   -  -
28736  39 139 239 339   -  - 239 39   -  -
28737  42 142 242 342 142 42 242 42   -  -
28738  45 145 245 345   -  - 245 45 345 45
28739  48 148 248 348 148 48 248 48   -  -
28740  51 151 251 351   -  - 251 51   -  -
28741  54 154 254 354 154 54 254 54   -  -
28742  57 157 257 357   -  - 257 57   -  -
28743  60 160 260 360 160 60 260 60 360 60
28744  63 163 263 363   -  - 263 63   -  -
28745  66 166 266 366 166 66 266 66   -  -
28746  69 169 269 369   -  - 269 69   -  -
28747  72 172 272 372 172 72 272 72   -  -
28748  75 175 275 375   -  - 275 75 375 75
28749  78 178 278 378 178 78 278 78   -  -
28750  81 181 281 381   -  - 281 81   -  -
28751  84 184 284 384 184 84 284 84   -  -
28752  87 187 287 387   -  - 287 87   -  -
28753  90 190 290 390 190 90 290 90 390 90
28754  93 193 293 393   -  - 293 93   -  -
28755}
28756do_execsql_test joinD-991 {
28757  SELECT t1.*, t2.*, t3.*, t4.*
28758  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28759  LEFT JOIN t3 ON t1.c=t3.c
28760  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28761  WHERE t3.y>0 OR t3.y IS NULL
28762  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28763} {
28764   1 101 201 301   -  -   -  -   -  -
28765   2 102 202 302 102  2   -  -   -  -
28766   3 103 203 303   -  - 203  3   -  -
28767   4 104 204 304 104  4   -  -   -  -
28768   5 105 205 305   -  -   -  - 305  5
28769   6 106 206 306 106  6 206  6   -  -
28770   7 107 207 307   -  -   -  -   -  -
28771   8 108 208 308 108  8   -  -   -  -
28772   9 109 209 309   -  - 209  9   -  -
28773  10 110 210 310 110 10   -  - 310 10
28774  11 111 211 311   -  -   -  -   -  -
28775  12 112 212 312 112 12 212 12   -  -
28776  13 113 213 313   -  -   -  -   -  -
28777  14 114 214 314 114 14   -  -   -  -
28778  15 115 215 315   -  - 215 15 315 15
28779  16 116 216 316 116 16   -  -   -  -
28780  17 117 217 317   -  -   -  -   -  -
28781  18 118 218 318 118 18 218 18   -  -
28782  19 119 219 319   -  -   -  -   -  -
28783  20 120 220 320 120 20   -  - 320 20
28784  21 121 221 321   -  - 221 21   -  -
28785  22 122 222 322 122 22   -  -   -  -
28786  23 123 223 323   -  -   -  -   -  -
28787  24 124 224 324 124 24 224 24   -  -
28788  25 125 225 325   -  -   -  - 325 25
28789  26 126 226 326 126 26   -  -   -  -
28790  27 127 227 327   -  - 227 27   -  -
28791  28 128 228 328 128 28   -  -   -  -
28792  29 129 229 329   -  -   -  -   -  -
28793  30 130 230 330 130 30 230 30 330 30
28794  31 131 231 331   -  -   -  -   -  -
28795  32 132 232 332 132 32   -  -   -  -
28796  33 133 233 333   -  - 233 33   -  -
28797  34 134 234 334 134 34   -  -   -  -
28798  35 135 235 335   -  -   -  - 335 35
28799  36 136 236 336 136 36 236 36   -  -
28800  37 137 237 337   -  -   -  -   -  -
28801  38 138 238 338 138 38   -  -   -  -
28802  39 139 239 339   -  - 239 39   -  -
28803  40 140 240 340 140 40   -  - 340 40
28804  41 141 241 341   -  -   -  -   -  -
28805  42 142 242 342 142 42 242 42   -  -
28806  43 143 243 343   -  -   -  -   -  -
28807  44 144 244 344 144 44   -  -   -  -
28808  45 145 245 345   -  - 245 45 345 45
28809  46 146 246 346 146 46   -  -   -  -
28810  47 147 247 347   -  -   -  -   -  -
28811  48 148 248 348 148 48 248 48   -  -
28812  49 149 249 349   -  -   -  -   -  -
28813  50 150 250 350 150 50   -  - 350 50
28814  51 151 251 351   -  - 251 51   -  -
28815  52 152 252 352 152 52   -  -   -  -
28816  53 153 253 353   -  -   -  -   -  -
28817  54 154 254 354 154 54 254 54   -  -
28818  55 155 255 355   -  -   -  - 355 55
28819  56 156 256 356 156 56   -  -   -  -
28820  57 157 257 357   -  - 257 57   -  -
28821  58 158 258 358 158 58   -  -   -  -
28822  59 159 259 359   -  -   -  -   -  -
28823  60 160 260 360 160 60 260 60 360 60
28824  61 161 261 361   -  -   -  -   -  -
28825  62 162 262 362 162 62   -  -   -  -
28826  63 163 263 363   -  - 263 63   -  -
28827  64 164 264 364 164 64   -  -   -  -
28828  65 165 265 365   -  -   -  - 365 65
28829  66 166 266 366 166 66 266 66   -  -
28830  67 167 267 367   -  -   -  -   -  -
28831  68 168 268 368 168 68   -  -   -  -
28832  69 169 269 369   -  - 269 69   -  -
28833  70 170 270 370 170 70   -  - 370 70
28834  71 171 271 371   -  -   -  -   -  -
28835  72 172 272 372 172 72 272 72   -  -
28836  73 173 273 373   -  -   -  -   -  -
28837  74 174 274 374 174 74   -  -   -  -
28838  75 175 275 375   -  - 275 75 375 75
28839  76 176 276 376 176 76   -  -   -  -
28840  77 177 277 377   -  -   -  -   -  -
28841  78 178 278 378 178 78 278 78   -  -
28842  79 179 279 379   -  -   -  -   -  -
28843  80 180 280 380 180 80   -  - 380 80
28844  81 181 281 381   -  - 281 81   -  -
28845  82 182 282 382 182 82   -  -   -  -
28846  83 183 283 383   -  -   -  -   -  -
28847  84 184 284 384 184 84 284 84   -  -
28848  85 185 285 385   -  -   -  - 385 85
28849  86 186 286 386 186 86   -  -   -  -
28850  87 187 287 387   -  - 287 87   -  -
28851  88 188 288 388 188 88   -  -   -  -
28852  89 189 289 389   -  -   -  -   -  -
28853  90 190 290 390 190 90 290 90 390 90
28854  91 191 291 391   -  -   -  -   -  -
28855  92 192 292 392 192 92   -  -   -  -
28856  93 193 293 393   -  - 293 93   -  -
28857  94 194 294 394 194 94   -  -   -  -
28858  95 195 295 395   -  -   -  - 395 95
28859  96   - 296 396   -  -   -  -   -  -
28860  97 197   - 397   -  -   -  -   -  -
28861  98 198 298   -   -  -   -  -   -  -
28862  99   -   -   -   -  -   -  -   -  -
28863   -   -   -   - 100  0   -  -   -  -
28864}
28865do_execsql_test joinD-992 {
28866  SELECT t1.*, t2.*, t3.*, t4.*
28867  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28868  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28869  LEFT JOIN t4 ON t1.d=t4.d
28870  WHERE t4.z>0
28871  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28872} {
28873   5 105 205 305   -  -   -  - 305  5
28874  10 110 210 310 110 10   -  - 310 10
28875  15 115 215 315   -  - 215 15 315 15
28876  20 120 220 320 120 20   -  - 320 20
28877  25 125 225 325   -  -   -  - 325 25
28878  30 130 230 330 130 30 230 30 330 30
28879  35 135 235 335   -  -   -  - 335 35
28880  40 140 240 340 140 40   -  - 340 40
28881  45 145 245 345   -  - 245 45 345 45
28882  50 150 250 350 150 50   -  - 350 50
28883  55 155 255 355   -  -   -  - 355 55
28884  60 160 260 360 160 60 260 60 360 60
28885  65 165 265 365   -  -   -  - 365 65
28886  70 170 270 370 170 70   -  - 370 70
28887  75 175 275 375   -  - 275 75 375 75
28888  80 180 280 380 180 80   -  - 380 80
28889  85 185 285 385   -  -   -  - 385 85
28890  90 190 290 390 190 90 290 90 390 90
28891  95 195 295 395   -  -   -  - 395 95
28892}
28893do_execsql_test joinD-993 {
28894  SELECT t1.*, t2.*, t3.*, t4.*
28895  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28896  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28897  LEFT JOIN t4 ON t1.d=t4.d
28898  WHERE t4.z IS NULL OR t4.z>0
28899  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28900} {
28901   1 101 201 301   -  -   -  -   -  -
28902   2 102 202 302 102  2   -  -   -  -
28903   3 103 203 303   -  - 203  3   -  -
28904   4 104 204 304 104  4   -  -   -  -
28905   5 105 205 305   -  -   -  - 305  5
28906   6 106 206 306 106  6 206  6   -  -
28907   7 107 207 307   -  -   -  -   -  -
28908   8 108 208 308 108  8   -  -   -  -
28909   9 109 209 309   -  - 209  9   -  -
28910  10 110 210 310 110 10   -  - 310 10
28911  11 111 211 311   -  -   -  -   -  -
28912  12 112 212 312 112 12 212 12   -  -
28913  13 113 213 313   -  -   -  -   -  -
28914  14 114 214 314 114 14   -  -   -  -
28915  15 115 215 315   -  - 215 15 315 15
28916  16 116 216 316 116 16   -  -   -  -
28917  17 117 217 317   -  -   -  -   -  -
28918  18 118 218 318 118 18 218 18   -  -
28919  19 119 219 319   -  -   -  -   -  -
28920  20 120 220 320 120 20   -  - 320 20
28921  21 121 221 321   -  - 221 21   -  -
28922  22 122 222 322 122 22   -  -   -  -
28923  23 123 223 323   -  -   -  -   -  -
28924  24 124 224 324 124 24 224 24   -  -
28925  25 125 225 325   -  -   -  - 325 25
28926  26 126 226 326 126 26   -  -   -  -
28927  27 127 227 327   -  - 227 27   -  -
28928  28 128 228 328 128 28   -  -   -  -
28929  29 129 229 329   -  -   -  -   -  -
28930  30 130 230 330 130 30 230 30 330 30
28931  31 131 231 331   -  -   -  -   -  -
28932  32 132 232 332 132 32   -  -   -  -
28933  33 133 233 333   -  - 233 33   -  -
28934  34 134 234 334 134 34   -  -   -  -
28935  35 135 235 335   -  -   -  - 335 35
28936  36 136 236 336 136 36 236 36   -  -
28937  37 137 237 337   -  -   -  -   -  -
28938  38 138 238 338 138 38   -  -   -  -
28939  39 139 239 339   -  - 239 39   -  -
28940  40 140 240 340 140 40   -  - 340 40
28941  41 141 241 341   -  -   -  -   -  -
28942  42 142 242 342 142 42 242 42   -  -
28943  43 143 243 343   -  -   -  -   -  -
28944  44 144 244 344 144 44   -  -   -  -
28945  45 145 245 345   -  - 245 45 345 45
28946  46 146 246 346 146 46   -  -   -  -
28947  47 147 247 347   -  -   -  -   -  -
28948  48 148 248 348 148 48 248 48   -  -
28949  49 149 249 349   -  -   -  -   -  -
28950  50 150 250 350 150 50   -  - 350 50
28951  51 151 251 351   -  - 251 51   -  -
28952  52 152 252 352 152 52   -  -   -  -
28953  53 153 253 353   -  -   -  -   -  -
28954  54 154 254 354 154 54 254 54   -  -
28955  55 155 255 355   -  -   -  - 355 55
28956  56 156 256 356 156 56   -  -   -  -
28957  57 157 257 357   -  - 257 57   -  -
28958  58 158 258 358 158 58   -  -   -  -
28959  59 159 259 359   -  -   -  -   -  -
28960  60 160 260 360 160 60 260 60 360 60
28961  61 161 261 361   -  -   -  -   -  -
28962  62 162 262 362 162 62   -  -   -  -
28963  63 163 263 363   -  - 263 63   -  -
28964  64 164 264 364 164 64   -  -   -  -
28965  65 165 265 365   -  -   -  - 365 65
28966  66 166 266 366 166 66 266 66   -  -
28967  67 167 267 367   -  -   -  -   -  -
28968  68 168 268 368 168 68   -  -   -  -
28969  69 169 269 369   -  - 269 69   -  -
28970  70 170 270 370 170 70   -  - 370 70
28971  71 171 271 371   -  -   -  -   -  -
28972  72 172 272 372 172 72 272 72   -  -
28973  73 173 273 373   -  -   -  -   -  -
28974  74 174 274 374 174 74   -  -   -  -
28975  75 175 275 375   -  - 275 75 375 75
28976  76 176 276 376 176 76   -  -   -  -
28977  77 177 277 377   -  -   -  -   -  -
28978  78 178 278 378 178 78 278 78   -  -
28979  79 179 279 379   -  -   -  -   -  -
28980  80 180 280 380 180 80   -  - 380 80
28981  81 181 281 381   -  - 281 81   -  -
28982  82 182 282 382 182 82   -  -   -  -
28983  83 183 283 383   -  -   -  -   -  -
28984  84 184 284 384 184 84 284 84   -  -
28985  85 185 285 385   -  -   -  - 385 85
28986  86 186 286 386 186 86   -  -   -  -
28987  87 187 287 387   -  - 287 87   -  -
28988  88 188 288 388 188 88   -  -   -  -
28989  89 189 289 389   -  -   -  -   -  -
28990  90 190 290 390 190 90 290 90 390 90
28991  91 191 291 391   -  -   -  -   -  -
28992  92 192 292 392 192 92   -  -   -  -
28993  93 193 293 393   -  - 293 93   -  -
28994  94 194 294 394 194 94   -  -   -  -
28995  95 195 295 395   -  -   -  - 395 95
28996  96   - 296 396   -  -   -  -   -  -
28997  97 197   - 397   -  -   -  -   -  -
28998  98 198 298   -   -  -   -  -   -  -
28999  99   -   -   -   -  -   -  -   -  -
29000   -   -   -   - 100  0   -  -   -  -
29001}
29002do_execsql_test joinD-994 {
29003  SELECT t1.*, t2.*, t3.*, t4.*
29004  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29005  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29006  LEFT JOIN t4 ON t1.d=t4.d
29007  WHERE t2.x>0 AND t4.z>0
29008  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29009} {
29010  10 110 210 310 110 10   -  - 310 10
29011  20 120 220 320 120 20   -  - 320 20
29012  30 130 230 330 130 30 230 30 330 30
29013  40 140 240 340 140 40   -  - 340 40
29014  50 150 250 350 150 50   -  - 350 50
29015  60 160 260 360 160 60 260 60 360 60
29016  70 170 270 370 170 70   -  - 370 70
29017  80 180 280 380 180 80   -  - 380 80
29018  90 190 290 390 190 90 290 90 390 90
29019}
29020do_execsql_test joinD-995 {
29021  SELECT t1.*, t2.*, t3.*, t4.*
29022  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29023  LEFT JOIN t3 ON t1.c=t3.c
29024  LEFT JOIN t4 ON t1.d=t4.d
29025  WHERE t4.z>0 AND t3.y>0
29026  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29027} {
29028  15 115 215 315   -  - 215 15 315 15
29029  30 130 230 330 130 30 230 30 330 30
29030  45 145 245 345   -  - 245 45 345 45
29031  60 160 260 360 160 60 260 60 360 60
29032  75 175 275 375   -  - 275 75 375 75
29033  90 190 290 390 190 90 290 90 390 90
29034}
29035do_execsql_test joinD-996 {
29036  SELECT t1.*, t2.*, t3.*, t4.*
29037  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29038  LEFT JOIN t3 ON t1.c=t3.c
29039  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
29040  WHERE t2.x>0 AND t3.y>0
29041  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29042} {
29043   6 106 206 306 106  6 206  6   -  -
29044  12 112 212 312 112 12 212 12   -  -
29045  18 118 218 318 118 18 218 18   -  -
29046  24 124 224 324 124 24 224 24   -  -
29047  30 130 230 330 130 30 230 30 330 30
29048  36 136 236 336 136 36 236 36   -  -
29049  42 142 242 342 142 42 242 42   -  -
29050  48 148 248 348 148 48 248 48   -  -
29051  54 154 254 354 154 54 254 54   -  -
29052  60 160 260 360 160 60 260 60 360 60
29053  66 166 266 366 166 66 266 66   -  -
29054  72 172 272 372 172 72 272 72   -  -
29055  78 178 278 378 178 78 278 78   -  -
29056  84 184 284 384 184 84 284 84   -  -
29057  90 190 290 390 190 90 290 90 390 90
29058}
29059do_execsql_test joinD-997 {
29060  SELECT t1.*, t2.*, t3.*, t4.*
29061  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29062  LEFT JOIN t3 ON t1.c=t3.c
29063  LEFT JOIN t4 ON t1.d=t4.d
29064  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
29065  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29066} {
29067  30 130 230 330 130 30 230 30 330 30
29068  60 160 260 360 160 60 260 60 360 60
29069  90 190 290 390 190 90 290 90 390 90
29070}
29071do_execsql_test joinD-998 {
29072  SELECT t1.*, t2.*, t3.*, t4.*
29073  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
29074  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29075  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29076  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29077} {
29078   0 100 200 300   -  -   -  -   -  -
29079   1 101 201 301   -  -   -  -   -  -
29080   2 102 202 302 102  2   -  -   -  -
29081   3 103 203 303   -  - 203  3   -  -
29082   4 104 204 304 104  4   -  -   -  -
29083   5 105 205 305   -  -   -  - 305  5
29084   6 106 206 306 106  6 206  6   -  -
29085   7 107 207 307   -  -   -  -   -  -
29086   8 108 208 308 108  8   -  -   -  -
29087   9 109 209 309   -  - 209  9   -  -
29088  10 110 210 310 110 10   -  - 310 10
29089  11 111 211 311   -  -   -  -   -  -
29090  12 112 212 312 112 12 212 12   -  -
29091  13 113 213 313   -  -   -  -   -  -
29092  14 114 214 314 114 14   -  -   -  -
29093  15 115 215 315   -  - 215 15 315 15
29094  16 116 216 316 116 16   -  -   -  -
29095  17 117 217 317   -  -   -  -   -  -
29096  18 118 218 318 118 18 218 18   -  -
29097  19 119 219 319   -  -   -  -   -  -
29098  20 120 220 320 120 20   -  - 320 20
29099  21 121 221 321   -  - 221 21   -  -
29100  22 122 222 322 122 22   -  -   -  -
29101  23 123 223 323   -  -   -  -   -  -
29102  24 124 224 324 124 24 224 24   -  -
29103  25 125 225 325   -  -   -  - 325 25
29104  26 126 226 326 126 26   -  -   -  -
29105  27 127 227 327   -  - 227 27   -  -
29106  28 128 228 328 128 28   -  -   -  -
29107  29 129 229 329   -  -   -  -   -  -
29108  30 130 230 330 130 30 230 30 330 30
29109  31 131 231 331   -  -   -  -   -  -
29110  32 132 232 332 132 32   -  -   -  -
29111  33 133 233 333   -  - 233 33   -  -
29112  34 134 234 334 134 34   -  -   -  -
29113  35 135 235 335   -  -   -  - 335 35
29114  36 136 236 336 136 36 236 36   -  -
29115  37 137 237 337   -  -   -  -   -  -
29116  38 138 238 338 138 38   -  -   -  -
29117  39 139 239 339   -  - 239 39   -  -
29118  40 140 240 340 140 40   -  - 340 40
29119  41 141 241 341   -  -   -  -   -  -
29120  42 142 242 342 142 42 242 42   -  -
29121  43 143 243 343   -  -   -  -   -  -
29122  44 144 244 344 144 44   -  -   -  -
29123  45 145 245 345   -  - 245 45 345 45
29124  46 146 246 346 146 46   -  -   -  -
29125  47 147 247 347   -  -   -  -   -  -
29126  48 148 248 348 148 48 248 48   -  -
29127  49 149 249 349   -  -   -  -   -  -
29128  50 150 250 350 150 50   -  - 350 50
29129  51 151 251 351   -  - 251 51   -  -
29130  52 152 252 352 152 52   -  -   -  -
29131  53 153 253 353   -  -   -  -   -  -
29132  54 154 254 354 154 54 254 54   -  -
29133  55 155 255 355   -  -   -  - 355 55
29134  56 156 256 356 156 56   -  -   -  -
29135  57 157 257 357   -  - 257 57   -  -
29136  58 158 258 358 158 58   -  -   -  -
29137  59 159 259 359   -  -   -  -   -  -
29138  60 160 260 360 160 60 260 60 360 60
29139  61 161 261 361   -  -   -  -   -  -
29140  62 162 262 362 162 62   -  -   -  -
29141  63 163 263 363   -  - 263 63   -  -
29142  64 164 264 364 164 64   -  -   -  -
29143  65 165 265 365   -  -   -  - 365 65
29144  66 166 266 366 166 66 266 66   -  -
29145  67 167 267 367   -  -   -  -   -  -
29146  68 168 268 368 168 68   -  -   -  -
29147  69 169 269 369   -  - 269 69   -  -
29148  70 170 270 370 170 70   -  - 370 70
29149  71 171 271 371   -  -   -  -   -  -
29150  72 172 272 372 172 72 272 72   -  -
29151  73 173 273 373   -  -   -  -   -  -
29152  74 174 274 374 174 74   -  -   -  -
29153  75 175 275 375   -  - 275 75 375 75
29154  76 176 276 376 176 76   -  -   -  -
29155  77 177 277 377   -  -   -  -   -  -
29156  78 178 278 378 178 78 278 78   -  -
29157  79 179 279 379   -  -   -  -   -  -
29158  80 180 280 380 180 80   -  - 380 80
29159  81 181 281 381   -  - 281 81   -  -
29160  82 182 282 382 182 82   -  -   -  -
29161  83 183 283 383   -  -   -  -   -  -
29162  84 184 284 384 184 84 284 84   -  -
29163  85 185 285 385   -  -   -  - 385 85
29164  86 186 286 386 186 86   -  -   -  -
29165  87 187 287 387   -  - 287 87   -  -
29166  88 188 288 388 188 88   -  -   -  -
29167  89 189 289 389   -  -   -  -   -  -
29168  90 190 290 390 190 90 290 90 390 90
29169  91 191 291 391   -  -   -  -   -  -
29170  92 192 292 392 192 92   -  -   -  -
29171  93 193 293 393   -  - 293 93   -  -
29172  94 194 294 394 194 94   -  -   -  -
29173  95 195 295 395   -  -   -  - 395 95
29174  96   - 296 396   -  -   -  -   -  -
29175  97 197   - 397   -  -   -  -   -  -
29176  98 198 298   -   -  -   -  -   -  -
29177  99   -   -   -   -  -   -  -   -  -
29178   -   -   -   - 100  0   -  -   -  -
29179}
29180do_execsql_test joinD-999 {
29181  SELECT t1.*, t2.*, t3.*, t4.*
29182  FROM t1 FULL JOIN t2 ON t2.x>0
29183  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29184  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29185  WHERE t1.b = t2.b
29186  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29187} {
29188   2 102 202 302 102  2   -  -   -  -
29189   4 104 204 304 104  4   -  -   -  -
29190   6 106 206 306 106  6 206  6   -  -
29191   8 108 208 308 108  8   -  -   -  -
29192  10 110 210 310 110 10   -  - 310 10
29193  12 112 212 312 112 12 212 12   -  -
29194  14 114 214 314 114 14   -  -   -  -
29195  16 116 216 316 116 16   -  -   -  -
29196  18 118 218 318 118 18 218 18   -  -
29197  20 120 220 320 120 20   -  - 320 20
29198  22 122 222 322 122 22   -  -   -  -
29199  24 124 224 324 124 24 224 24   -  -
29200  26 126 226 326 126 26   -  -   -  -
29201  28 128 228 328 128 28   -  -   -  -
29202  30 130 230 330 130 30 230 30 330 30
29203  32 132 232 332 132 32   -  -   -  -
29204  34 134 234 334 134 34   -  -   -  -
29205  36 136 236 336 136 36 236 36   -  -
29206  38 138 238 338 138 38   -  -   -  -
29207  40 140 240 340 140 40   -  - 340 40
29208  42 142 242 342 142 42 242 42   -  -
29209  44 144 244 344 144 44   -  -   -  -
29210  46 146 246 346 146 46   -  -   -  -
29211  48 148 248 348 148 48 248 48   -  -
29212  50 150 250 350 150 50   -  - 350 50
29213  52 152 252 352 152 52   -  -   -  -
29214  54 154 254 354 154 54 254 54   -  -
29215  56 156 256 356 156 56   -  -   -  -
29216  58 158 258 358 158 58   -  -   -  -
29217  60 160 260 360 160 60 260 60 360 60
29218  62 162 262 362 162 62   -  -   -  -
29219  64 164 264 364 164 64   -  -   -  -
29220  66 166 266 366 166 66 266 66   -  -
29221  68 168 268 368 168 68   -  -   -  -
29222  70 170 270 370 170 70   -  - 370 70
29223  72 172 272 372 172 72 272 72   -  -
29224  74 174 274 374 174 74   -  -   -  -
29225  76 176 276 376 176 76   -  -   -  -
29226  78 178 278 378 178 78 278 78   -  -
29227  80 180 280 380 180 80   -  - 380 80
29228  82 182 282 382 182 82   -  -   -  -
29229  84 184 284 384 184 84 284 84   -  -
29230  86 186 286 386 186 86   -  -   -  -
29231  88 188 288 388 188 88   -  -   -  -
29232  90 190 290 390 190 90 290 90 390 90
29233  92 192 292 392 192 92   -  -   -  -
29234  94 194 294 394 194 94   -  -   -  -
29235}
29236do_execsql_test joinD-1000 {
29237  SELECT t1.*, t2.*, t3.*, t4.*
29238  FROM t1 FULL JOIN t2 ON t2.x>0
29239  LEFT JOIN t3 ON t3.y>0
29240  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29241  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
29242  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29243} {
29244   6 106 206 306 106  6 206  6   -  -
29245  12 112 212 312 112 12 212 12   -  -
29246  18 118 218 318 118 18 218 18   -  -
29247  24 124 224 324 124 24 224 24   -  -
29248  30 130 230 330 130 30 230 30 330 30
29249  36 136 236 336 136 36 236 36   -  -
29250  42 142 242 342 142 42 242 42   -  -
29251  48 148 248 348 148 48 248 48   -  -
29252  54 154 254 354 154 54 254 54   -  -
29253  60 160 260 360 160 60 260 60 360 60
29254  66 166 266 366 166 66 266 66   -  -
29255  72 172 272 372 172 72 272 72   -  -
29256  78 178 278 378 178 78 278 78   -  -
29257  84 184 284 384 184 84 284 84   -  -
29258  90 190 290 390 190 90 290 90 390 90
29259}
29260do_execsql_test joinD-1001 {
29261  SELECT t1.*, t2.*, t3.*, t4.*
29262  FROM t1 FULL JOIN t2 ON t2.x>0
29263  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29264  LEFT JOIN t4 ON t4.z>0
29265  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
29266  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29267} {
29268  10 110 210 310 110 10   -  - 310 10
29269  20 120 220 320 120 20   -  - 320 20
29270  30 130 230 330 130 30 230 30 330 30
29271  40 140 240 340 140 40   -  - 340 40
29272  50 150 250 350 150 50   -  - 350 50
29273  60 160 260 360 160 60 260 60 360 60
29274  70 170 270 370 170 70   -  - 370 70
29275  80 180 280 380 180 80   -  - 380 80
29276  90 190 290 390 190 90 290 90 390 90
29277}
29278do_execsql_test joinD-1002 {
29279  SELECT t1.*, t2.*, t3.*, t4.*
29280  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29281  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
29282  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
29283  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29284} {
29285   0 100 200 300   -  -   -  -   -  -
29286   1 101 201 301   -  -   -  -   -  -
29287   2 102 202 302 102  2   -  -   -  -
29288   3 103 203 303   -  - 203  3   -  -
29289   4 104 204 304 104  4   -  -   -  -
29290   5 105 205 305   -  -   -  - 305  5
29291   6 106 206 306 106  6 206  6   -  -
29292   7 107 207 307   -  -   -  -   -  -
29293   8 108 208 308 108  8   -  -   -  -
29294   9 109 209 309   -  - 209  9   -  -
29295  10 110 210 310 110 10   -  - 310 10
29296  11 111 211 311   -  -   -  -   -  -
29297  12 112 212 312 112 12 212 12   -  -
29298  13 113 213 313   -  -   -  -   -  -
29299  14 114 214 314 114 14   -  -   -  -
29300  15 115 215 315   -  - 215 15 315 15
29301  16 116 216 316 116 16   -  -   -  -
29302  17 117 217 317   -  -   -  -   -  -
29303  18 118 218 318 118 18 218 18   -  -
29304  19 119 219 319   -  -   -  -   -  -
29305  20 120 220 320 120 20   -  - 320 20
29306  21 121 221 321   -  - 221 21   -  -
29307  22 122 222 322 122 22   -  -   -  -
29308  23 123 223 323   -  -   -  -   -  -
29309  24 124 224 324 124 24 224 24   -  -
29310  25 125 225 325   -  -   -  - 325 25
29311  26 126 226 326 126 26   -  -   -  -
29312  27 127 227 327   -  - 227 27   -  -
29313  28 128 228 328 128 28   -  -   -  -
29314  29 129 229 329   -  -   -  -   -  -
29315  30 130 230 330 130 30 230 30 330 30
29316  31 131 231 331   -  -   -  -   -  -
29317  32 132 232 332 132 32   -  -   -  -
29318  33 133 233 333   -  - 233 33   -  -
29319  34 134 234 334 134 34   -  -   -  -
29320  35 135 235 335   -  -   -  - 335 35
29321  36 136 236 336 136 36 236 36   -  -
29322  37 137 237 337   -  -   -  -   -  -
29323  38 138 238 338 138 38   -  -   -  -
29324  39 139 239 339   -  - 239 39   -  -
29325  40 140 240 340 140 40   -  - 340 40
29326  41 141 241 341   -  -   -  -   -  -
29327  42 142 242 342 142 42 242 42   -  -
29328  43 143 243 343   -  -   -  -   -  -
29329  44 144 244 344 144 44   -  -   -  -
29330  45 145 245 345   -  - 245 45 345 45
29331  46 146 246 346 146 46   -  -   -  -
29332  47 147 247 347   -  -   -  -   -  -
29333  48 148 248 348 148 48 248 48   -  -
29334  49 149 249 349   -  -   -  -   -  -
29335  50 150 250 350 150 50   -  - 350 50
29336  51 151 251 351   -  - 251 51   -  -
29337  52 152 252 352 152 52   -  -   -  -
29338  53 153 253 353   -  -   -  -   -  -
29339  54 154 254 354 154 54 254 54   -  -
29340  55 155 255 355   -  -   -  - 355 55
29341  56 156 256 356 156 56   -  -   -  -
29342  57 157 257 357   -  - 257 57   -  -
29343  58 158 258 358 158 58   -  -   -  -
29344  59 159 259 359   -  -   -  -   -  -
29345  60 160 260 360 160 60 260 60 360 60
29346  61 161 261 361   -  -   -  -   -  -
29347  62 162 262 362 162 62   -  -   -  -
29348  63 163 263 363   -  - 263 63   -  -
29349  64 164 264 364 164 64   -  -   -  -
29350  65 165 265 365   -  -   -  - 365 65
29351  66 166 266 366 166 66 266 66   -  -
29352  67 167 267 367   -  -   -  -   -  -
29353  68 168 268 368 168 68   -  -   -  -
29354  69 169 269 369   -  - 269 69   -  -
29355  70 170 270 370 170 70   -  - 370 70
29356  71 171 271 371   -  -   -  -   -  -
29357  72 172 272 372 172 72 272 72   -  -
29358  73 173 273 373   -  -   -  -   -  -
29359  74 174 274 374 174 74   -  -   -  -
29360  75 175 275 375   -  - 275 75 375 75
29361  76 176 276 376 176 76   -  -   -  -
29362  77 177 277 377   -  -   -  -   -  -
29363  78 178 278 378 178 78 278 78   -  -
29364  79 179 279 379   -  -   -  -   -  -
29365  80 180 280 380 180 80   -  - 380 80
29366  81 181 281 381   -  - 281 81   -  -
29367  82 182 282 382 182 82   -  -   -  -
29368  83 183 283 383   -  -   -  -   -  -
29369  84 184 284 384 184 84 284 84   -  -
29370  85 185 285 385   -  -   -  - 385 85
29371  86 186 286 386 186 86   -  -   -  -
29372  87 187 287 387   -  - 287 87   -  -
29373  88 188 288 388 188 88   -  -   -  -
29374  89 189 289 389   -  -   -  -   -  -
29375  90 190 290 390 190 90 290 90 390 90
29376  91 191 291 391   -  -   -  -   -  -
29377  92 192 292 392 192 92   -  -   -  -
29378  93 193 293 393   -  - 293 93   -  -
29379  94 194 294 394 194 94   -  -   -  -
29380  95 195 295 395   -  -   -  - 395 95
29381  96   - 296 396   -  -   -  -   -  -
29382  97 197   - 397   -  -   -  -   -  -
29383  98 198 298   -   -  -   -  -   -  -
29384  99   -   -   -   -  -   -  -   -  -
29385   -   -   -   - 100  0   -  -   -  -
29386}
29387do_execsql_test joinD-1003 {
29388  SELECT t1.*, t2.*, t3.*, t4.*
29389  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29390  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29391  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29392  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29393} {
29394   5 105 205 305   -  -   -  - 305  5
29395  10 110 210 310 110 10   -  - 310 10
29396  15 115 215 315   -  - 215 15 315 15
29397  20 120 220 320 120 20   -  - 320 20
29398  25 125 225 325   -  -   -  - 325 25
29399  30 130 230 330 130 30 230 30 330 30
29400  35 135 235 335   -  -   -  - 335 35
29401  40 140 240 340 140 40   -  - 340 40
29402  45 145 245 345   -  - 245 45 345 45
29403  50 150 250 350 150 50   -  - 350 50
29404  55 155 255 355   -  -   -  - 355 55
29405  60 160 260 360 160 60 260 60 360 60
29406  65 165 265 365   -  -   -  - 365 65
29407  70 170 270 370 170 70   -  - 370 70
29408  75 175 275 375   -  - 275 75 375 75
29409  80 180 280 380 180 80   -  - 380 80
29410  85 185 285 385   -  -   -  - 385 85
29411  90 190 290 390 190 90 290 90 390 90
29412  95 195 295 395   -  -   -  - 395 95
29413   -   -   -   -   -  -   -  - 300  0
29414}
29415do_execsql_test joinD-1004 {
29416  SELECT t1.*, t2.*, t3.*, t4.*
29417  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29418  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29419  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29420  WHERE t2.x>0
29421  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29422} {
29423  10 110 210 310 110 10   -  - 310 10
29424  20 120 220 320 120 20   -  - 320 20
29425  30 130 230 330 130 30 230 30 330 30
29426  40 140 240 340 140 40   -  - 340 40
29427  50 150 250 350 150 50   -  - 350 50
29428  60 160 260 360 160 60 260 60 360 60
29429  70 170 270 370 170 70   -  - 370 70
29430  80 180 280 380 180 80   -  - 380 80
29431  90 190 290 390 190 90 290 90 390 90
29432}
29433do_execsql_test joinD-1005 {
29434  SELECT t1.*, t2.*, t3.*, t4.*
29435  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29436  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29437  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29438  WHERE (t2.x>0 OR t2.x IS NULL)
29439  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29440} {
29441   5 105 205 305   -  -   -  - 305  5
29442  10 110 210 310 110 10   -  - 310 10
29443  15 115 215 315   -  - 215 15 315 15
29444  20 120 220 320 120 20   -  - 320 20
29445  25 125 225 325   -  -   -  - 325 25
29446  30 130 230 330 130 30 230 30 330 30
29447  35 135 235 335   -  -   -  - 335 35
29448  40 140 240 340 140 40   -  - 340 40
29449  45 145 245 345   -  - 245 45 345 45
29450  50 150 250 350 150 50   -  - 350 50
29451  55 155 255 355   -  -   -  - 355 55
29452  60 160 260 360 160 60 260 60 360 60
29453  65 165 265 365   -  -   -  - 365 65
29454  70 170 270 370 170 70   -  - 370 70
29455  75 175 275 375   -  - 275 75 375 75
29456  80 180 280 380 180 80   -  - 380 80
29457  85 185 285 385   -  -   -  - 385 85
29458  90 190 290 390 190 90 290 90 390 90
29459  95 195 295 395   -  -   -  - 395 95
29460   -   -   -   -   -  -   -  - 300  0
29461}
29462do_execsql_test joinD-1006 {
29463  SELECT t1.*, t2.*, t3.*, t4.*
29464  FROM t1 FULL JOIN t2 ON true
29465  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29466  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29467  WHERE t1.b=t2.b AND t2.x>0
29468  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29469} {
29470  10 110 210 310 110 10   -  - 310 10
29471  20 120 220 320 120 20   -  - 320 20
29472  30 130 230 330 130 30 230 30 330 30
29473  40 140 240 340 140 40   -  - 340 40
29474  50 150 250 350 150 50   -  - 350 50
29475  60 160 260 360 160 60 260 60 360 60
29476  70 170 270 370 170 70   -  - 370 70
29477  80 180 280 380 180 80   -  - 380 80
29478  90 190 290 390 190 90 290 90 390 90
29479}
29480do_execsql_test joinD-1007 {
29481  SELECT t1.*, t2.*, t3.*, t4.*
29482  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29483  LEFT JOIN t3 ON t1.c=t3.c
29484  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29485  WHERE t3.y>0
29486  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29487} {
29488  15 115 215 315   -  - 215 15 315 15
29489  30 130 230 330 130 30 230 30 330 30
29490  45 145 245 345   -  - 245 45 345 45
29491  60 160 260 360 160 60 260 60 360 60
29492  75 175 275 375   -  - 275 75 375 75
29493  90 190 290 390 190 90 290 90 390 90
29494}
29495do_execsql_test joinD-1008 {
29496  SELECT t1.*, t2.*, t3.*, t4.*
29497  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29498  LEFT JOIN t3 ON t1.c=t3.c
29499  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29500  WHERE t3.y>0 OR t3.y IS NULL
29501  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29502} {
29503   5 105 205 305   -  -   -  - 305  5
29504  10 110 210 310 110 10   -  - 310 10
29505  15 115 215 315   -  - 215 15 315 15
29506  20 120 220 320 120 20   -  - 320 20
29507  25 125 225 325   -  -   -  - 325 25
29508  30 130 230 330 130 30 230 30 330 30
29509  35 135 235 335   -  -   -  - 335 35
29510  40 140 240 340 140 40   -  - 340 40
29511  45 145 245 345   -  - 245 45 345 45
29512  50 150 250 350 150 50   -  - 350 50
29513  55 155 255 355   -  -   -  - 355 55
29514  60 160 260 360 160 60 260 60 360 60
29515  65 165 265 365   -  -   -  - 365 65
29516  70 170 270 370 170 70   -  - 370 70
29517  75 175 275 375   -  - 275 75 375 75
29518  80 180 280 380 180 80   -  - 380 80
29519  85 185 285 385   -  -   -  - 385 85
29520  90 190 290 390 190 90 290 90 390 90
29521  95 195 295 395   -  -   -  - 395 95
29522   -   -   -   -   -  -   -  - 300  0
29523}
29524do_execsql_test joinD-1009 {
29525  SELECT t1.*, t2.*, t3.*, t4.*
29526  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29527  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29528  RIGHT JOIN t4 ON t1.d=t4.d
29529  WHERE t4.z>0
29530  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29531} {
29532   5 105 205 305   -  -   -  - 305  5
29533  10 110 210 310 110 10   -  - 310 10
29534  15 115 215 315   -  - 215 15 315 15
29535  20 120 220 320 120 20   -  - 320 20
29536  25 125 225 325   -  -   -  - 325 25
29537  30 130 230 330 130 30 230 30 330 30
29538  35 135 235 335   -  -   -  - 335 35
29539  40 140 240 340 140 40   -  - 340 40
29540  45 145 245 345   -  - 245 45 345 45
29541  50 150 250 350 150 50   -  - 350 50
29542  55 155 255 355   -  -   -  - 355 55
29543  60 160 260 360 160 60 260 60 360 60
29544  65 165 265 365   -  -   -  - 365 65
29545  70 170 270 370 170 70   -  - 370 70
29546  75 175 275 375   -  - 275 75 375 75
29547  80 180 280 380 180 80   -  - 380 80
29548  85 185 285 385   -  -   -  - 385 85
29549  90 190 290 390 190 90 290 90 390 90
29550  95 195 295 395   -  -   -  - 395 95
29551}
29552do_execsql_test joinD-1010 {
29553  SELECT t1.*, t2.*, t3.*, t4.*
29554  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29555  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29556  RIGHT JOIN t4 ON t1.d=t4.d
29557  WHERE t4.z IS NULL OR t4.z>0
29558  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29559} {
29560   5 105 205 305   -  -   -  - 305  5
29561  10 110 210 310 110 10   -  - 310 10
29562  15 115 215 315   -  - 215 15 315 15
29563  20 120 220 320 120 20   -  - 320 20
29564  25 125 225 325   -  -   -  - 325 25
29565  30 130 230 330 130 30 230 30 330 30
29566  35 135 235 335   -  -   -  - 335 35
29567  40 140 240 340 140 40   -  - 340 40
29568  45 145 245 345   -  - 245 45 345 45
29569  50 150 250 350 150 50   -  - 350 50
29570  55 155 255 355   -  -   -  - 355 55
29571  60 160 260 360 160 60 260 60 360 60
29572  65 165 265 365   -  -   -  - 365 65
29573  70 170 270 370 170 70   -  - 370 70
29574  75 175 275 375   -  - 275 75 375 75
29575  80 180 280 380 180 80   -  - 380 80
29576  85 185 285 385   -  -   -  - 385 85
29577  90 190 290 390 190 90 290 90 390 90
29578  95 195 295 395   -  -   -  - 395 95
29579}
29580do_execsql_test joinD-1011 {
29581  SELECT t1.*, t2.*, t3.*, t4.*
29582  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29583  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29584  RIGHT JOIN t4 ON t1.d=t4.d
29585  WHERE t2.x>0 AND t4.z>0
29586  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29587} {
29588  10 110 210 310 110 10   -  - 310 10
29589  20 120 220 320 120 20   -  - 320 20
29590  30 130 230 330 130 30 230 30 330 30
29591  40 140 240 340 140 40   -  - 340 40
29592  50 150 250 350 150 50   -  - 350 50
29593  60 160 260 360 160 60 260 60 360 60
29594  70 170 270 370 170 70   -  - 370 70
29595  80 180 280 380 180 80   -  - 380 80
29596  90 190 290 390 190 90 290 90 390 90
29597}
29598do_execsql_test joinD-1012 {
29599  SELECT t1.*, t2.*, t3.*, t4.*
29600  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29601  LEFT JOIN t3 ON t1.c=t3.c
29602  RIGHT JOIN t4 ON t1.d=t4.d
29603  WHERE t4.z>0 AND t3.y>0
29604  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29605} {
29606  15 115 215 315   -  - 215 15 315 15
29607  30 130 230 330 130 30 230 30 330 30
29608  45 145 245 345   -  - 245 45 345 45
29609  60 160 260 360 160 60 260 60 360 60
29610  75 175 275 375   -  - 275 75 375 75
29611  90 190 290 390 190 90 290 90 390 90
29612}
29613do_execsql_test joinD-1013 {
29614  SELECT t1.*, t2.*, t3.*, t4.*
29615  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29616  LEFT JOIN t3 ON t1.c=t3.c
29617  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29618  WHERE t2.x>0 AND t3.y>0
29619  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29620} {
29621  30 130 230 330 130 30 230 30 330 30
29622  60 160 260 360 160 60 260 60 360 60
29623  90 190 290 390 190 90 290 90 390 90
29624}
29625do_execsql_test joinD-1014 {
29626  SELECT t1.*, t2.*, t3.*, t4.*
29627  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29628  LEFT JOIN t3 ON t1.c=t3.c
29629  RIGHT JOIN t4 ON t1.d=t4.d
29630  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
29631  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29632} {
29633  30 130 230 330 130 30 230 30 330 30
29634  60 160 260 360 160 60 260 60 360 60
29635  90 190 290 390 190 90 290 90 390 90
29636}
29637do_execsql_test joinD-1015 {
29638  SELECT t1.*, t2.*, t3.*, t4.*
29639  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
29640  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29641  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29642  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29643} {
29644   5 105 205 305   -  -   -  - 305  5
29645  10 110 210 310 110 10   -  - 310 10
29646  15 115 215 315   -  - 215 15 315 15
29647  20 120 220 320 120 20   -  - 320 20
29648  25 125 225 325   -  -   -  - 325 25
29649  30 130 230 330 130 30 230 30 330 30
29650  35 135 235 335   -  -   -  - 335 35
29651  40 140 240 340 140 40   -  - 340 40
29652  45 145 245 345   -  - 245 45 345 45
29653  50 150 250 350 150 50   -  - 350 50
29654  55 155 255 355   -  -   -  - 355 55
29655  60 160 260 360 160 60 260 60 360 60
29656  65 165 265 365   -  -   -  - 365 65
29657  70 170 270 370 170 70   -  - 370 70
29658  75 175 275 375   -  - 275 75 375 75
29659  80 180 280 380 180 80   -  - 380 80
29660  85 185 285 385   -  -   -  - 385 85
29661  90 190 290 390 190 90 290 90 390 90
29662  95 195 295 395   -  -   -  - 395 95
29663   -   -   -   -   -  -   -  - 300  0
29664}
29665do_execsql_test joinD-1016 {
29666  SELECT t1.*, t2.*, t3.*, t4.*
29667  FROM t1 FULL JOIN t2 ON t2.x>0
29668  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29669  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29670  WHERE t1.b = t2.b
29671  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29672} {
29673  10 110 210 310 110 10   -  - 310 10
29674  20 120 220 320 120 20   -  - 320 20
29675  30 130 230 330 130 30 230 30 330 30
29676  40 140 240 340 140 40   -  - 340 40
29677  50 150 250 350 150 50   -  - 350 50
29678  60 160 260 360 160 60 260 60 360 60
29679  70 170 270 370 170 70   -  - 370 70
29680  80 180 280 380 180 80   -  - 380 80
29681  90 190 290 390 190 90 290 90 390 90
29682}
29683do_execsql_test joinD-1017 {
29684  SELECT t1.*, t2.*, t3.*, t4.*
29685  FROM t1 FULL JOIN t2 ON t2.x>0
29686  LEFT JOIN t3 ON t3.y>0
29687  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29688  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
29689  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29690} {
29691  30 130 230 330 130 30 230 30 330 30
29692  60 160 260 360 160 60 260 60 360 60
29693  90 190 290 390 190 90 290 90 390 90
29694}
29695do_execsql_test joinD-1018 {
29696  SELECT t1.*, t2.*, t3.*, t4.*
29697  FROM t1 FULL JOIN t2 ON t2.x>0
29698  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29699  RIGHT JOIN t4 ON t4.z>0
29700  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
29701  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29702} {
29703  10 110 210 310 110 10   -  - 310 10
29704  20 120 220 320 120 20   -  - 320 20
29705  30 130 230 330 130 30 230 30 330 30
29706  40 140 240 340 140 40   -  - 340 40
29707  50 150 250 350 150 50   -  - 350 50
29708  60 160 260 360 160 60 260 60 360 60
29709  70 170 270 370 170 70   -  - 370 70
29710  80 180 280 380 180 80   -  - 380 80
29711  90 190 290 390 190 90 290 90 390 90
29712}
29713do_execsql_test joinD-1019 {
29714  SELECT t1.*, t2.*, t3.*, t4.*
29715  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29716  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
29717  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29718  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29719} {
29720   5 105 205 305   -  -   -  - 305  5
29721  10 110 210 310 110 10   -  - 310 10
29722  15 115 215 315   -  - 215 15 315 15
29723  20 120 220 320 120 20   -  - 320 20
29724  25 125 225 325   -  -   -  - 325 25
29725  30 130 230 330 130 30 230 30 330 30
29726  35 135 235 335   -  -   -  - 335 35
29727  40 140 240 340 140 40   -  - 340 40
29728  45 145 245 345   -  - 245 45 345 45
29729  50 150 250 350 150 50   -  - 350 50
29730  55 155 255 355   -  -   -  - 355 55
29731  60 160 260 360 160 60 260 60 360 60
29732  65 165 265 365   -  -   -  - 365 65
29733  70 170 270 370 170 70   -  - 370 70
29734  75 175 275 375   -  - 275 75 375 75
29735  80 180 280 380 180 80   -  - 380 80
29736  85 185 285 385   -  -   -  - 385 85
29737  90 190 290 390 190 90 290 90 390 90
29738  95 195 295 395   -  -   -  - 395 95
29739   -   -   -   -   -  -   -  - 300  0
29740}
29741do_execsql_test joinD-1020 {
29742  SELECT t1.*, t2.*, t3.*, t4.*
29743  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29744  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29745  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
29746  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29747} {
29748   0 100 200 300   -  -   -  -   -  -
29749   1 101 201 301   -  -   -  -   -  -
29750   2 102 202 302 102  2   -  -   -  -
29751   3 103 203 303   -  - 203  3   -  -
29752   4 104 204 304 104  4   -  -   -  -
29753   5 105 205 305   -  -   -  - 305  5
29754   6 106 206 306 106  6 206  6   -  -
29755   7 107 207 307   -  -   -  -   -  -
29756   8 108 208 308 108  8   -  -   -  -
29757   9 109 209 309   -  - 209  9   -  -
29758  10 110 210 310 110 10   -  - 310 10
29759  11 111 211 311   -  -   -  -   -  -
29760  12 112 212 312 112 12 212 12   -  -
29761  13 113 213 313   -  -   -  -   -  -
29762  14 114 214 314 114 14   -  -   -  -
29763  15 115 215 315   -  - 215 15 315 15
29764  16 116 216 316 116 16   -  -   -  -
29765  17 117 217 317   -  -   -  -   -  -
29766  18 118 218 318 118 18 218 18   -  -
29767  19 119 219 319   -  -   -  -   -  -
29768  20 120 220 320 120 20   -  - 320 20
29769  21 121 221 321   -  - 221 21   -  -
29770  22 122 222 322 122 22   -  -   -  -
29771  23 123 223 323   -  -   -  -   -  -
29772  24 124 224 324 124 24 224 24   -  -
29773  25 125 225 325   -  -   -  - 325 25
29774  26 126 226 326 126 26   -  -   -  -
29775  27 127 227 327   -  - 227 27   -  -
29776  28 128 228 328 128 28   -  -   -  -
29777  29 129 229 329   -  -   -  -   -  -
29778  30 130 230 330 130 30 230 30 330 30
29779  31 131 231 331   -  -   -  -   -  -
29780  32 132 232 332 132 32   -  -   -  -
29781  33 133 233 333   -  - 233 33   -  -
29782  34 134 234 334 134 34   -  -   -  -
29783  35 135 235 335   -  -   -  - 335 35
29784  36 136 236 336 136 36 236 36   -  -
29785  37 137 237 337   -  -   -  -   -  -
29786  38 138 238 338 138 38   -  -   -  -
29787  39 139 239 339   -  - 239 39   -  -
29788  40 140 240 340 140 40   -  - 340 40
29789  41 141 241 341   -  -   -  -   -  -
29790  42 142 242 342 142 42 242 42   -  -
29791  43 143 243 343   -  -   -  -   -  -
29792  44 144 244 344 144 44   -  -   -  -
29793  45 145 245 345   -  - 245 45 345 45
29794  46 146 246 346 146 46   -  -   -  -
29795  47 147 247 347   -  -   -  -   -  -
29796  48 148 248 348 148 48 248 48   -  -
29797  49 149 249 349   -  -   -  -   -  -
29798  50 150 250 350 150 50   -  - 350 50
29799  51 151 251 351   -  - 251 51   -  -
29800  52 152 252 352 152 52   -  -   -  -
29801  53 153 253 353   -  -   -  -   -  -
29802  54 154 254 354 154 54 254 54   -  -
29803  55 155 255 355   -  -   -  - 355 55
29804  56 156 256 356 156 56   -  -   -  -
29805  57 157 257 357   -  - 257 57   -  -
29806  58 158 258 358 158 58   -  -   -  -
29807  59 159 259 359   -  -   -  -   -  -
29808  60 160 260 360 160 60 260 60 360 60
29809  61 161 261 361   -  -   -  -   -  -
29810  62 162 262 362 162 62   -  -   -  -
29811  63 163 263 363   -  - 263 63   -  -
29812  64 164 264 364 164 64   -  -   -  -
29813  65 165 265 365   -  -   -  - 365 65
29814  66 166 266 366 166 66 266 66   -  -
29815  67 167 267 367   -  -   -  -   -  -
29816  68 168 268 368 168 68   -  -   -  -
29817  69 169 269 369   -  - 269 69   -  -
29818  70 170 270 370 170 70   -  - 370 70
29819  71 171 271 371   -  -   -  -   -  -
29820  72 172 272 372 172 72 272 72   -  -
29821  73 173 273 373   -  -   -  -   -  -
29822  74 174 274 374 174 74   -  -   -  -
29823  75 175 275 375   -  - 275 75 375 75
29824  76 176 276 376 176 76   -  -   -  -
29825  77 177 277 377   -  -   -  -   -  -
29826  78 178 278 378 178 78 278 78   -  -
29827  79 179 279 379   -  -   -  -   -  -
29828  80 180 280 380 180 80   -  - 380 80
29829  81 181 281 381   -  - 281 81   -  -
29830  82 182 282 382 182 82   -  -   -  -
29831  83 183 283 383   -  -   -  -   -  -
29832  84 184 284 384 184 84 284 84   -  -
29833  85 185 285 385   -  -   -  - 385 85
29834  86 186 286 386 186 86   -  -   -  -
29835  87 187 287 387   -  - 287 87   -  -
29836  88 188 288 388 188 88   -  -   -  -
29837  89 189 289 389   -  -   -  -   -  -
29838  90 190 290 390 190 90 290 90 390 90
29839  91 191 291 391   -  -   -  -   -  -
29840  92 192 292 392 192 92   -  -   -  -
29841  93 193 293 393   -  - 293 93   -  -
29842  94 194 294 394 194 94   -  -   -  -
29843  95 195 295 395   -  -   -  - 395 95
29844  96   - 296 396   -  -   -  -   -  -
29845  97 197   - 397   -  -   -  -   -  -
29846  98 198 298   -   -  -   -  -   -  -
29847  99   -   -   -   -  -   -  -   -  -
29848   -   -   -   - 100  0   -  -   -  -
29849   -   -   -   -   -  -   -  - 300  0
29850}
29851do_execsql_test joinD-1021 {
29852  SELECT t1.*, t2.*, t3.*, t4.*
29853  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29854  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29855  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
29856  WHERE t2.x>0
29857  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29858} {
29859   2 102 202 302 102  2   -  -   -  -
29860   4 104 204 304 104  4   -  -   -  -
29861   6 106 206 306 106  6 206  6   -  -
29862   8 108 208 308 108  8   -  -   -  -
29863  10 110 210 310 110 10   -  - 310 10
29864  12 112 212 312 112 12 212 12   -  -
29865  14 114 214 314 114 14   -  -   -  -
29866  16 116 216 316 116 16   -  -   -  -
29867  18 118 218 318 118 18 218 18   -  -
29868  20 120 220 320 120 20   -  - 320 20
29869  22 122 222 322 122 22   -  -   -  -
29870  24 124 224 324 124 24 224 24   -  -
29871  26 126 226 326 126 26   -  -   -  -
29872  28 128 228 328 128 28   -  -   -  -
29873  30 130 230 330 130 30 230 30 330 30
29874  32 132 232 332 132 32   -  -   -  -
29875  34 134 234 334 134 34   -  -   -  -
29876  36 136 236 336 136 36 236 36   -  -
29877  38 138 238 338 138 38   -  -   -  -
29878  40 140 240 340 140 40   -  - 340 40
29879  42 142 242 342 142 42 242 42   -  -
29880  44 144 244 344 144 44   -  -   -  -
29881  46 146 246 346 146 46   -  -   -  -
29882  48 148 248 348 148 48 248 48   -  -
29883  50 150 250 350 150 50   -  - 350 50
29884  52 152 252 352 152 52   -  -   -  -
29885  54 154 254 354 154 54 254 54   -  -
29886  56 156 256 356 156 56   -  -   -  -
29887  58 158 258 358 158 58   -  -   -  -
29888  60 160 260 360 160 60 260 60 360 60
29889  62 162 262 362 162 62   -  -   -  -
29890  64 164 264 364 164 64   -  -   -  -
29891  66 166 266 366 166 66 266 66   -  -
29892  68 168 268 368 168 68   -  -   -  -
29893  70 170 270 370 170 70   -  - 370 70
29894  72 172 272 372 172 72 272 72   -  -
29895  74 174 274 374 174 74   -  -   -  -
29896  76 176 276 376 176 76   -  -   -  -
29897  78 178 278 378 178 78 278 78   -  -
29898  80 180 280 380 180 80   -  - 380 80
29899  82 182 282 382 182 82   -  -   -  -
29900  84 184 284 384 184 84 284 84   -  -
29901  86 186 286 386 186 86   -  -   -  -
29902  88 188 288 388 188 88   -  -   -  -
29903  90 190 290 390 190 90 290 90 390 90
29904  92 192 292 392 192 92   -  -   -  -
29905  94 194 294 394 194 94   -  -   -  -
29906}
29907do_execsql_test joinD-1022 {
29908  SELECT t1.*, t2.*, t3.*, t4.*
29909  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29910  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29911  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
29912  WHERE (t2.x>0 OR t2.x IS NULL)
29913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29914} {
29915   1 101 201 301   -  -   -  -   -  -
29916   2 102 202 302 102  2   -  -   -  -
29917   3 103 203 303   -  - 203  3   -  -
29918   4 104 204 304 104  4   -  -   -  -
29919   5 105 205 305   -  -   -  - 305  5
29920   6 106 206 306 106  6 206  6   -  -
29921   7 107 207 307   -  -   -  -   -  -
29922   8 108 208 308 108  8   -  -   -  -
29923   9 109 209 309   -  - 209  9   -  -
29924  10 110 210 310 110 10   -  - 310 10
29925  11 111 211 311   -  -   -  -   -  -
29926  12 112 212 312 112 12 212 12   -  -
29927  13 113 213 313   -  -   -  -   -  -
29928  14 114 214 314 114 14   -  -   -  -
29929  15 115 215 315   -  - 215 15 315 15
29930  16 116 216 316 116 16   -  -   -  -
29931  17 117 217 317   -  -   -  -   -  -
29932  18 118 218 318 118 18 218 18   -  -
29933  19 119 219 319   -  -   -  -   -  -
29934  20 120 220 320 120 20   -  - 320 20
29935  21 121 221 321   -  - 221 21   -  -
29936  22 122 222 322 122 22   -  -   -  -
29937  23 123 223 323   -  -   -  -   -  -
29938  24 124 224 324 124 24 224 24   -  -
29939  25 125 225 325   -  -   -  - 325 25
29940  26 126 226 326 126 26   -  -   -  -
29941  27 127 227 327   -  - 227 27   -  -
29942  28 128 228 328 128 28   -  -   -  -
29943  29 129 229 329   -  -   -  -   -  -
29944  30 130 230 330 130 30 230 30 330 30
29945  31 131 231 331   -  -   -  -   -  -
29946  32 132 232 332 132 32   -  -   -  -
29947  33 133 233 333   -  - 233 33   -  -
29948  34 134 234 334 134 34   -  -   -  -
29949  35 135 235 335   -  -   -  - 335 35
29950  36 136 236 336 136 36 236 36   -  -
29951  37 137 237 337   -  -   -  -   -  -
29952  38 138 238 338 138 38   -  -   -  -
29953  39 139 239 339   -  - 239 39   -  -
29954  40 140 240 340 140 40   -  - 340 40
29955  41 141 241 341   -  -   -  -   -  -
29956  42 142 242 342 142 42 242 42   -  -
29957  43 143 243 343   -  -   -  -   -  -
29958  44 144 244 344 144 44   -  -   -  -
29959  45 145 245 345   -  - 245 45 345 45
29960  46 146 246 346 146 46   -  -   -  -
29961  47 147 247 347   -  -   -  -   -  -
29962  48 148 248 348 148 48 248 48   -  -
29963  49 149 249 349   -  -   -  -   -  -
29964  50 150 250 350 150 50   -  - 350 50
29965  51 151 251 351   -  - 251 51   -  -
29966  52 152 252 352 152 52   -  -   -  -
29967  53 153 253 353   -  -   -  -   -  -
29968  54 154 254 354 154 54 254 54   -  -
29969  55 155 255 355   -  -   -  - 355 55
29970  56 156 256 356 156 56   -  -   -  -
29971  57 157 257 357   -  - 257 57   -  -
29972  58 158 258 358 158 58   -  -   -  -
29973  59 159 259 359   -  -   -  -   -  -
29974  60 160 260 360 160 60 260 60 360 60
29975  61 161 261 361   -  -   -  -   -  -
29976  62 162 262 362 162 62   -  -   -  -
29977  63 163 263 363   -  - 263 63   -  -
29978  64 164 264 364 164 64   -  -   -  -
29979  65 165 265 365   -  -   -  - 365 65
29980  66 166 266 366 166 66 266 66   -  -
29981  67 167 267 367   -  -   -  -   -  -
29982  68 168 268 368 168 68   -  -   -  -
29983  69 169 269 369   -  - 269 69   -  -
29984  70 170 270 370 170 70   -  - 370 70
29985  71 171 271 371   -  -   -  -   -  -
29986  72 172 272 372 172 72 272 72   -  -
29987  73 173 273 373   -  -   -  -   -  -
29988  74 174 274 374 174 74   -  -   -  -
29989  75 175 275 375   -  - 275 75 375 75
29990  76 176 276 376 176 76   -  -   -  -
29991  77 177 277 377   -  -   -  -   -  -
29992  78 178 278 378 178 78 278 78   -  -
29993  79 179 279 379   -  -   -  -   -  -
29994  80 180 280 380 180 80   -  - 380 80
29995  81 181 281 381   -  - 281 81   -  -
29996  82 182 282 382 182 82   -  -   -  -
29997  83 183 283 383   -  -   -  -   -  -
29998  84 184 284 384 184 84 284 84   -  -
29999  85 185 285 385   -  -   -  - 385 85
30000  86 186 286 386 186 86   -  -   -  -
30001  87 187 287 387   -  - 287 87   -  -
30002  88 188 288 388 188 88   -  -   -  -
30003  89 189 289 389   -  -   -  -   -  -
30004  90 190 290 390 190 90 290 90 390 90
30005  91 191 291 391   -  -   -  -   -  -
30006  92 192 292 392 192 92   -  -   -  -
30007  93 193 293 393   -  - 293 93   -  -
30008  94 194 294 394 194 94   -  -   -  -
30009  95 195 295 395   -  -   -  - 395 95
30010  96   - 296 396   -  -   -  -   -  -
30011  97 197   - 397   -  -   -  -   -  -
30012  98 198 298   -   -  -   -  -   -  -
30013  99   -   -   -   -  -   -  -   -  -
30014   -   -   -   -   -  -   -  - 300  0
30015}
30016do_execsql_test joinD-1023 {
30017  SELECT t1.*, t2.*, t3.*, t4.*
30018  FROM t1 FULL JOIN t2 ON true
30019  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30020  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30021  WHERE t1.b=t2.b AND t2.x>0
30022  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30023} {
30024   2 102 202 302 102  2   -  -   -  -
30025   4 104 204 304 104  4   -  -   -  -
30026   6 106 206 306 106  6 206  6   -  -
30027   8 108 208 308 108  8   -  -   -  -
30028  10 110 210 310 110 10   -  - 310 10
30029  12 112 212 312 112 12 212 12   -  -
30030  14 114 214 314 114 14   -  -   -  -
30031  16 116 216 316 116 16   -  -   -  -
30032  18 118 218 318 118 18 218 18   -  -
30033  20 120 220 320 120 20   -  - 320 20
30034  22 122 222 322 122 22   -  -   -  -
30035  24 124 224 324 124 24 224 24   -  -
30036  26 126 226 326 126 26   -  -   -  -
30037  28 128 228 328 128 28   -  -   -  -
30038  30 130 230 330 130 30 230 30 330 30
30039  32 132 232 332 132 32   -  -   -  -
30040  34 134 234 334 134 34   -  -   -  -
30041  36 136 236 336 136 36 236 36   -  -
30042  38 138 238 338 138 38   -  -   -  -
30043  40 140 240 340 140 40   -  - 340 40
30044  42 142 242 342 142 42 242 42   -  -
30045  44 144 244 344 144 44   -  -   -  -
30046  46 146 246 346 146 46   -  -   -  -
30047  48 148 248 348 148 48 248 48   -  -
30048  50 150 250 350 150 50   -  - 350 50
30049  52 152 252 352 152 52   -  -   -  -
30050  54 154 254 354 154 54 254 54   -  -
30051  56 156 256 356 156 56   -  -   -  -
30052  58 158 258 358 158 58   -  -   -  -
30053  60 160 260 360 160 60 260 60 360 60
30054  62 162 262 362 162 62   -  -   -  -
30055  64 164 264 364 164 64   -  -   -  -
30056  66 166 266 366 166 66 266 66   -  -
30057  68 168 268 368 168 68   -  -   -  -
30058  70 170 270 370 170 70   -  - 370 70
30059  72 172 272 372 172 72 272 72   -  -
30060  74 174 274 374 174 74   -  -   -  -
30061  76 176 276 376 176 76   -  -   -  -
30062  78 178 278 378 178 78 278 78   -  -
30063  80 180 280 380 180 80   -  - 380 80
30064  82 182 282 382 182 82   -  -   -  -
30065  84 184 284 384 184 84 284 84   -  -
30066  86 186 286 386 186 86   -  -   -  -
30067  88 188 288 388 188 88   -  -   -  -
30068  90 190 290 390 190 90 290 90 390 90
30069  92 192 292 392 192 92   -  -   -  -
30070  94 194 294 394 194 94   -  -   -  -
30071}
30072do_execsql_test joinD-1024 {
30073  SELECT t1.*, t2.*, t3.*, t4.*
30074  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30075  LEFT JOIN t3 ON t1.c=t3.c
30076  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30077  WHERE t3.y>0
30078  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30079} {
30080   3 103 203 303   -  - 203  3   -  -
30081   6 106 206 306 106  6 206  6   -  -
30082   9 109 209 309   -  - 209  9   -  -
30083  12 112 212 312 112 12 212 12   -  -
30084  15 115 215 315   -  - 215 15 315 15
30085  18 118 218 318 118 18 218 18   -  -
30086  21 121 221 321   -  - 221 21   -  -
30087  24 124 224 324 124 24 224 24   -  -
30088  27 127 227 327   -  - 227 27   -  -
30089  30 130 230 330 130 30 230 30 330 30
30090  33 133 233 333   -  - 233 33   -  -
30091  36 136 236 336 136 36 236 36   -  -
30092  39 139 239 339   -  - 239 39   -  -
30093  42 142 242 342 142 42 242 42   -  -
30094  45 145 245 345   -  - 245 45 345 45
30095  48 148 248 348 148 48 248 48   -  -
30096  51 151 251 351   -  - 251 51   -  -
30097  54 154 254 354 154 54 254 54   -  -
30098  57 157 257 357   -  - 257 57   -  -
30099  60 160 260 360 160 60 260 60 360 60
30100  63 163 263 363   -  - 263 63   -  -
30101  66 166 266 366 166 66 266 66   -  -
30102  69 169 269 369   -  - 269 69   -  -
30103  72 172 272 372 172 72 272 72   -  -
30104  75 175 275 375   -  - 275 75 375 75
30105  78 178 278 378 178 78 278 78   -  -
30106  81 181 281 381   -  - 281 81   -  -
30107  84 184 284 384 184 84 284 84   -  -
30108  87 187 287 387   -  - 287 87   -  -
30109  90 190 290 390 190 90 290 90 390 90
30110  93 193 293 393   -  - 293 93   -  -
30111}
30112do_execsql_test joinD-1025 {
30113  SELECT t1.*, t2.*, t3.*, t4.*
30114  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30115  LEFT JOIN t3 ON t1.c=t3.c
30116  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30117  WHERE t3.y>0 OR t3.y IS NULL
30118  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30119} {
30120   1 101 201 301   -  -   -  -   -  -
30121   2 102 202 302 102  2   -  -   -  -
30122   3 103 203 303   -  - 203  3   -  -
30123   4 104 204 304 104  4   -  -   -  -
30124   5 105 205 305   -  -   -  - 305  5
30125   6 106 206 306 106  6 206  6   -  -
30126   7 107 207 307   -  -   -  -   -  -
30127   8 108 208 308 108  8   -  -   -  -
30128   9 109 209 309   -  - 209  9   -  -
30129  10 110 210 310 110 10   -  - 310 10
30130  11 111 211 311   -  -   -  -   -  -
30131  12 112 212 312 112 12 212 12   -  -
30132  13 113 213 313   -  -   -  -   -  -
30133  14 114 214 314 114 14   -  -   -  -
30134  15 115 215 315   -  - 215 15 315 15
30135  16 116 216 316 116 16   -  -   -  -
30136  17 117 217 317   -  -   -  -   -  -
30137  18 118 218 318 118 18 218 18   -  -
30138  19 119 219 319   -  -   -  -   -  -
30139  20 120 220 320 120 20   -  - 320 20
30140  21 121 221 321   -  - 221 21   -  -
30141  22 122 222 322 122 22   -  -   -  -
30142  23 123 223 323   -  -   -  -   -  -
30143  24 124 224 324 124 24 224 24   -  -
30144  25 125 225 325   -  -   -  - 325 25
30145  26 126 226 326 126 26   -  -   -  -
30146  27 127 227 327   -  - 227 27   -  -
30147  28 128 228 328 128 28   -  -   -  -
30148  29 129 229 329   -  -   -  -   -  -
30149  30 130 230 330 130 30 230 30 330 30
30150  31 131 231 331   -  -   -  -   -  -
30151  32 132 232 332 132 32   -  -   -  -
30152  33 133 233 333   -  - 233 33   -  -
30153  34 134 234 334 134 34   -  -   -  -
30154  35 135 235 335   -  -   -  - 335 35
30155  36 136 236 336 136 36 236 36   -  -
30156  37 137 237 337   -  -   -  -   -  -
30157  38 138 238 338 138 38   -  -   -  -
30158  39 139 239 339   -  - 239 39   -  -
30159  40 140 240 340 140 40   -  - 340 40
30160  41 141 241 341   -  -   -  -   -  -
30161  42 142 242 342 142 42 242 42   -  -
30162  43 143 243 343   -  -   -  -   -  -
30163  44 144 244 344 144 44   -  -   -  -
30164  45 145 245 345   -  - 245 45 345 45
30165  46 146 246 346 146 46   -  -   -  -
30166  47 147 247 347   -  -   -  -   -  -
30167  48 148 248 348 148 48 248 48   -  -
30168  49 149 249 349   -  -   -  -   -  -
30169  50 150 250 350 150 50   -  - 350 50
30170  51 151 251 351   -  - 251 51   -  -
30171  52 152 252 352 152 52   -  -   -  -
30172  53 153 253 353   -  -   -  -   -  -
30173  54 154 254 354 154 54 254 54   -  -
30174  55 155 255 355   -  -   -  - 355 55
30175  56 156 256 356 156 56   -  -   -  -
30176  57 157 257 357   -  - 257 57   -  -
30177  58 158 258 358 158 58   -  -   -  -
30178  59 159 259 359   -  -   -  -   -  -
30179  60 160 260 360 160 60 260 60 360 60
30180  61 161 261 361   -  -   -  -   -  -
30181  62 162 262 362 162 62   -  -   -  -
30182  63 163 263 363   -  - 263 63   -  -
30183  64 164 264 364 164 64   -  -   -  -
30184  65 165 265 365   -  -   -  - 365 65
30185  66 166 266 366 166 66 266 66   -  -
30186  67 167 267 367   -  -   -  -   -  -
30187  68 168 268 368 168 68   -  -   -  -
30188  69 169 269 369   -  - 269 69   -  -
30189  70 170 270 370 170 70   -  - 370 70
30190  71 171 271 371   -  -   -  -   -  -
30191  72 172 272 372 172 72 272 72   -  -
30192  73 173 273 373   -  -   -  -   -  -
30193  74 174 274 374 174 74   -  -   -  -
30194  75 175 275 375   -  - 275 75 375 75
30195  76 176 276 376 176 76   -  -   -  -
30196  77 177 277 377   -  -   -  -   -  -
30197  78 178 278 378 178 78 278 78   -  -
30198  79 179 279 379   -  -   -  -   -  -
30199  80 180 280 380 180 80   -  - 380 80
30200  81 181 281 381   -  - 281 81   -  -
30201  82 182 282 382 182 82   -  -   -  -
30202  83 183 283 383   -  -   -  -   -  -
30203  84 184 284 384 184 84 284 84   -  -
30204  85 185 285 385   -  -   -  - 385 85
30205  86 186 286 386 186 86   -  -   -  -
30206  87 187 287 387   -  - 287 87   -  -
30207  88 188 288 388 188 88   -  -   -  -
30208  89 189 289 389   -  -   -  -   -  -
30209  90 190 290 390 190 90 290 90 390 90
30210  91 191 291 391   -  -   -  -   -  -
30211  92 192 292 392 192 92   -  -   -  -
30212  93 193 293 393   -  - 293 93   -  -
30213  94 194 294 394 194 94   -  -   -  -
30214  95 195 295 395   -  -   -  - 395 95
30215  96   - 296 396   -  -   -  -   -  -
30216  97 197   - 397   -  -   -  -   -  -
30217  98 198 298   -   -  -   -  -   -  -
30218  99   -   -   -   -  -   -  -   -  -
30219   -   -   -   - 100  0   -  -   -  -
30220   -   -   -   -   -  -   -  - 300  0
30221}
30222do_execsql_test joinD-1026 {
30223  SELECT t1.*, t2.*, t3.*, t4.*
30224  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30225  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30226  FULL JOIN t4 ON t1.d=t4.d
30227  WHERE t4.z>0
30228  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30229} {
30230   5 105 205 305   -  -   -  - 305  5
30231  10 110 210 310 110 10   -  - 310 10
30232  15 115 215 315   -  - 215 15 315 15
30233  20 120 220 320 120 20   -  - 320 20
30234  25 125 225 325   -  -   -  - 325 25
30235  30 130 230 330 130 30 230 30 330 30
30236  35 135 235 335   -  -   -  - 335 35
30237  40 140 240 340 140 40   -  - 340 40
30238  45 145 245 345   -  - 245 45 345 45
30239  50 150 250 350 150 50   -  - 350 50
30240  55 155 255 355   -  -   -  - 355 55
30241  60 160 260 360 160 60 260 60 360 60
30242  65 165 265 365   -  -   -  - 365 65
30243  70 170 270 370 170 70   -  - 370 70
30244  75 175 275 375   -  - 275 75 375 75
30245  80 180 280 380 180 80   -  - 380 80
30246  85 185 285 385   -  -   -  - 385 85
30247  90 190 290 390 190 90 290 90 390 90
30248  95 195 295 395   -  -   -  - 395 95
30249}
30250do_execsql_test joinD-1027 {
30251  SELECT t1.*, t2.*, t3.*, t4.*
30252  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30253  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30254  FULL JOIN t4 ON t1.d=t4.d
30255  WHERE t4.z IS NULL OR t4.z>0
30256  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30257} {
30258   1 101 201 301   -  -   -  -   -  -
30259   2 102 202 302 102  2   -  -   -  -
30260   3 103 203 303   -  - 203  3   -  -
30261   4 104 204 304 104  4   -  -   -  -
30262   5 105 205 305   -  -   -  - 305  5
30263   6 106 206 306 106  6 206  6   -  -
30264   7 107 207 307   -  -   -  -   -  -
30265   8 108 208 308 108  8   -  -   -  -
30266   9 109 209 309   -  - 209  9   -  -
30267  10 110 210 310 110 10   -  - 310 10
30268  11 111 211 311   -  -   -  -   -  -
30269  12 112 212 312 112 12 212 12   -  -
30270  13 113 213 313   -  -   -  -   -  -
30271  14 114 214 314 114 14   -  -   -  -
30272  15 115 215 315   -  - 215 15 315 15
30273  16 116 216 316 116 16   -  -   -  -
30274  17 117 217 317   -  -   -  -   -  -
30275  18 118 218 318 118 18 218 18   -  -
30276  19 119 219 319   -  -   -  -   -  -
30277  20 120 220 320 120 20   -  - 320 20
30278  21 121 221 321   -  - 221 21   -  -
30279  22 122 222 322 122 22   -  -   -  -
30280  23 123 223 323   -  -   -  -   -  -
30281  24 124 224 324 124 24 224 24   -  -
30282  25 125 225 325   -  -   -  - 325 25
30283  26 126 226 326 126 26   -  -   -  -
30284  27 127 227 327   -  - 227 27   -  -
30285  28 128 228 328 128 28   -  -   -  -
30286  29 129 229 329   -  -   -  -   -  -
30287  30 130 230 330 130 30 230 30 330 30
30288  31 131 231 331   -  -   -  -   -  -
30289  32 132 232 332 132 32   -  -   -  -
30290  33 133 233 333   -  - 233 33   -  -
30291  34 134 234 334 134 34   -  -   -  -
30292  35 135 235 335   -  -   -  - 335 35
30293  36 136 236 336 136 36 236 36   -  -
30294  37 137 237 337   -  -   -  -   -  -
30295  38 138 238 338 138 38   -  -   -  -
30296  39 139 239 339   -  - 239 39   -  -
30297  40 140 240 340 140 40   -  - 340 40
30298  41 141 241 341   -  -   -  -   -  -
30299  42 142 242 342 142 42 242 42   -  -
30300  43 143 243 343   -  -   -  -   -  -
30301  44 144 244 344 144 44   -  -   -  -
30302  45 145 245 345   -  - 245 45 345 45
30303  46 146 246 346 146 46   -  -   -  -
30304  47 147 247 347   -  -   -  -   -  -
30305  48 148 248 348 148 48 248 48   -  -
30306  49 149 249 349   -  -   -  -   -  -
30307  50 150 250 350 150 50   -  - 350 50
30308  51 151 251 351   -  - 251 51   -  -
30309  52 152 252 352 152 52   -  -   -  -
30310  53 153 253 353   -  -   -  -   -  -
30311  54 154 254 354 154 54 254 54   -  -
30312  55 155 255 355   -  -   -  - 355 55
30313  56 156 256 356 156 56   -  -   -  -
30314  57 157 257 357   -  - 257 57   -  -
30315  58 158 258 358 158 58   -  -   -  -
30316  59 159 259 359   -  -   -  -   -  -
30317  60 160 260 360 160 60 260 60 360 60
30318  61 161 261 361   -  -   -  -   -  -
30319  62 162 262 362 162 62   -  -   -  -
30320  63 163 263 363   -  - 263 63   -  -
30321  64 164 264 364 164 64   -  -   -  -
30322  65 165 265 365   -  -   -  - 365 65
30323  66 166 266 366 166 66 266 66   -  -
30324  67 167 267 367   -  -   -  -   -  -
30325  68 168 268 368 168 68   -  -   -  -
30326  69 169 269 369   -  - 269 69   -  -
30327  70 170 270 370 170 70   -  - 370 70
30328  71 171 271 371   -  -   -  -   -  -
30329  72 172 272 372 172 72 272 72   -  -
30330  73 173 273 373   -  -   -  -   -  -
30331  74 174 274 374 174 74   -  -   -  -
30332  75 175 275 375   -  - 275 75 375 75
30333  76 176 276 376 176 76   -  -   -  -
30334  77 177 277 377   -  -   -  -   -  -
30335  78 178 278 378 178 78 278 78   -  -
30336  79 179 279 379   -  -   -  -   -  -
30337  80 180 280 380 180 80   -  - 380 80
30338  81 181 281 381   -  - 281 81   -  -
30339  82 182 282 382 182 82   -  -   -  -
30340  83 183 283 383   -  -   -  -   -  -
30341  84 184 284 384 184 84 284 84   -  -
30342  85 185 285 385   -  -   -  - 385 85
30343  86 186 286 386 186 86   -  -   -  -
30344  87 187 287 387   -  - 287 87   -  -
30345  88 188 288 388 188 88   -  -   -  -
30346  89 189 289 389   -  -   -  -   -  -
30347  90 190 290 390 190 90 290 90 390 90
30348  91 191 291 391   -  -   -  -   -  -
30349  92 192 292 392 192 92   -  -   -  -
30350  93 193 293 393   -  - 293 93   -  -
30351  94 194 294 394 194 94   -  -   -  -
30352  95 195 295 395   -  -   -  - 395 95
30353  96   - 296 396   -  -   -  -   -  -
30354  97 197   - 397   -  -   -  -   -  -
30355  98 198 298   -   -  -   -  -   -  -
30356  99   -   -   -   -  -   -  -   -  -
30357   -   -   -   - 100  0   -  -   -  -
30358}
30359do_execsql_test joinD-1028 {
30360  SELECT t1.*, t2.*, t3.*, t4.*
30361  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30362  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30363  FULL JOIN t4 ON t1.d=t4.d
30364  WHERE t2.x>0 AND t4.z>0
30365  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30366} {
30367  10 110 210 310 110 10   -  - 310 10
30368  20 120 220 320 120 20   -  - 320 20
30369  30 130 230 330 130 30 230 30 330 30
30370  40 140 240 340 140 40   -  - 340 40
30371  50 150 250 350 150 50   -  - 350 50
30372  60 160 260 360 160 60 260 60 360 60
30373  70 170 270 370 170 70   -  - 370 70
30374  80 180 280 380 180 80   -  - 380 80
30375  90 190 290 390 190 90 290 90 390 90
30376}
30377do_execsql_test joinD-1029 {
30378  SELECT t1.*, t2.*, t3.*, t4.*
30379  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30380  LEFT JOIN t3 ON t1.c=t3.c
30381  FULL JOIN t4 ON t1.d=t4.d
30382  WHERE t4.z>0 AND t3.y>0
30383  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30384} {
30385  15 115 215 315   -  - 215 15 315 15
30386  30 130 230 330 130 30 230 30 330 30
30387  45 145 245 345   -  - 245 45 345 45
30388  60 160 260 360 160 60 260 60 360 60
30389  75 175 275 375   -  - 275 75 375 75
30390  90 190 290 390 190 90 290 90 390 90
30391}
30392do_execsql_test joinD-1030 {
30393  SELECT t1.*, t2.*, t3.*, t4.*
30394  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30395  LEFT JOIN t3 ON t1.c=t3.c
30396  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30397  WHERE t2.x>0 AND t3.y>0
30398  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30399} {
30400   6 106 206 306 106  6 206  6   -  -
30401  12 112 212 312 112 12 212 12   -  -
30402  18 118 218 318 118 18 218 18   -  -
30403  24 124 224 324 124 24 224 24   -  -
30404  30 130 230 330 130 30 230 30 330 30
30405  36 136 236 336 136 36 236 36   -  -
30406  42 142 242 342 142 42 242 42   -  -
30407  48 148 248 348 148 48 248 48   -  -
30408  54 154 254 354 154 54 254 54   -  -
30409  60 160 260 360 160 60 260 60 360 60
30410  66 166 266 366 166 66 266 66   -  -
30411  72 172 272 372 172 72 272 72   -  -
30412  78 178 278 378 178 78 278 78   -  -
30413  84 184 284 384 184 84 284 84   -  -
30414  90 190 290 390 190 90 290 90 390 90
30415}
30416do_execsql_test joinD-1031 {
30417  SELECT t1.*, t2.*, t3.*, t4.*
30418  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30419  LEFT JOIN t3 ON t1.c=t3.c
30420  FULL JOIN t4 ON t1.d=t4.d
30421  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
30422  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30423} {
30424  30 130 230 330 130 30 230 30 330 30
30425  60 160 260 360 160 60 260 60 360 60
30426  90 190 290 390 190 90 290 90 390 90
30427}
30428do_execsql_test joinD-1032 {
30429  SELECT t1.*, t2.*, t3.*, t4.*
30430  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
30431  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30432  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
30433  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30434} {
30435   0 100 200 300   -  -   -  -   -  -
30436   1 101 201 301   -  -   -  -   -  -
30437   2 102 202 302 102  2   -  -   -  -
30438   3 103 203 303   -  - 203  3   -  -
30439   4 104 204 304 104  4   -  -   -  -
30440   5 105 205 305   -  -   -  - 305  5
30441   6 106 206 306 106  6 206  6   -  -
30442   7 107 207 307   -  -   -  -   -  -
30443   8 108 208 308 108  8   -  -   -  -
30444   9 109 209 309   -  - 209  9   -  -
30445  10 110 210 310 110 10   -  - 310 10
30446  11 111 211 311   -  -   -  -   -  -
30447  12 112 212 312 112 12 212 12   -  -
30448  13 113 213 313   -  -   -  -   -  -
30449  14 114 214 314 114 14   -  -   -  -
30450  15 115 215 315   -  - 215 15 315 15
30451  16 116 216 316 116 16   -  -   -  -
30452  17 117 217 317   -  -   -  -   -  -
30453  18 118 218 318 118 18 218 18   -  -
30454  19 119 219 319   -  -   -  -   -  -
30455  20 120 220 320 120 20   -  - 320 20
30456  21 121 221 321   -  - 221 21   -  -
30457  22 122 222 322 122 22   -  -   -  -
30458  23 123 223 323   -  -   -  -   -  -
30459  24 124 224 324 124 24 224 24   -  -
30460  25 125 225 325   -  -   -  - 325 25
30461  26 126 226 326 126 26   -  -   -  -
30462  27 127 227 327   -  - 227 27   -  -
30463  28 128 228 328 128 28   -  -   -  -
30464  29 129 229 329   -  -   -  -   -  -
30465  30 130 230 330 130 30 230 30 330 30
30466  31 131 231 331   -  -   -  -   -  -
30467  32 132 232 332 132 32   -  -   -  -
30468  33 133 233 333   -  - 233 33   -  -
30469  34 134 234 334 134 34   -  -   -  -
30470  35 135 235 335   -  -   -  - 335 35
30471  36 136 236 336 136 36 236 36   -  -
30472  37 137 237 337   -  -   -  -   -  -
30473  38 138 238 338 138 38   -  -   -  -
30474  39 139 239 339   -  - 239 39   -  -
30475  40 140 240 340 140 40   -  - 340 40
30476  41 141 241 341   -  -   -  -   -  -
30477  42 142 242 342 142 42 242 42   -  -
30478  43 143 243 343   -  -   -  -   -  -
30479  44 144 244 344 144 44   -  -   -  -
30480  45 145 245 345   -  - 245 45 345 45
30481  46 146 246 346 146 46   -  -   -  -
30482  47 147 247 347   -  -   -  -   -  -
30483  48 148 248 348 148 48 248 48   -  -
30484  49 149 249 349   -  -   -  -   -  -
30485  50 150 250 350 150 50   -  - 350 50
30486  51 151 251 351   -  - 251 51   -  -
30487  52 152 252 352 152 52   -  -   -  -
30488  53 153 253 353   -  -   -  -   -  -
30489  54 154 254 354 154 54 254 54   -  -
30490  55 155 255 355   -  -   -  - 355 55
30491  56 156 256 356 156 56   -  -   -  -
30492  57 157 257 357   -  - 257 57   -  -
30493  58 158 258 358 158 58   -  -   -  -
30494  59 159 259 359   -  -   -  -   -  -
30495  60 160 260 360 160 60 260 60 360 60
30496  61 161 261 361   -  -   -  -   -  -
30497  62 162 262 362 162 62   -  -   -  -
30498  63 163 263 363   -  - 263 63   -  -
30499  64 164 264 364 164 64   -  -   -  -
30500  65 165 265 365   -  -   -  - 365 65
30501  66 166 266 366 166 66 266 66   -  -
30502  67 167 267 367   -  -   -  -   -  -
30503  68 168 268 368 168 68   -  -   -  -
30504  69 169 269 369   -  - 269 69   -  -
30505  70 170 270 370 170 70   -  - 370 70
30506  71 171 271 371   -  -   -  -   -  -
30507  72 172 272 372 172 72 272 72   -  -
30508  73 173 273 373   -  -   -  -   -  -
30509  74 174 274 374 174 74   -  -   -  -
30510  75 175 275 375   -  - 275 75 375 75
30511  76 176 276 376 176 76   -  -   -  -
30512  77 177 277 377   -  -   -  -   -  -
30513  78 178 278 378 178 78 278 78   -  -
30514  79 179 279 379   -  -   -  -   -  -
30515  80 180 280 380 180 80   -  - 380 80
30516  81 181 281 381   -  - 281 81   -  -
30517  82 182 282 382 182 82   -  -   -  -
30518  83 183 283 383   -  -   -  -   -  -
30519  84 184 284 384 184 84 284 84   -  -
30520  85 185 285 385   -  -   -  - 385 85
30521  86 186 286 386 186 86   -  -   -  -
30522  87 187 287 387   -  - 287 87   -  -
30523  88 188 288 388 188 88   -  -   -  -
30524  89 189 289 389   -  -   -  -   -  -
30525  90 190 290 390 190 90 290 90 390 90
30526  91 191 291 391   -  -   -  -   -  -
30527  92 192 292 392 192 92   -  -   -  -
30528  93 193 293 393   -  - 293 93   -  -
30529  94 194 294 394 194 94   -  -   -  -
30530  95 195 295 395   -  -   -  - 395 95
30531  96   - 296 396   -  -   -  -   -  -
30532  97 197   - 397   -  -   -  -   -  -
30533  98 198 298   -   -  -   -  -   -  -
30534  99   -   -   -   -  -   -  -   -  -
30535   -   -   -   - 100  0   -  -   -  -
30536   -   -   -   -   -  -   -  - 300  0
30537}
30538do_execsql_test joinD-1033 {
30539  SELECT t1.*, t2.*, t3.*, t4.*
30540  FROM t1 FULL JOIN t2 ON t2.x>0
30541  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30542  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
30543  WHERE t1.b = t2.b
30544  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30545} {
30546   2 102 202 302 102  2   -  -   -  -
30547   4 104 204 304 104  4   -  -   -  -
30548   6 106 206 306 106  6 206  6   -  -
30549   8 108 208 308 108  8   -  -   -  -
30550  10 110 210 310 110 10   -  - 310 10
30551  12 112 212 312 112 12 212 12   -  -
30552  14 114 214 314 114 14   -  -   -  -
30553  16 116 216 316 116 16   -  -   -  -
30554  18 118 218 318 118 18 218 18   -  -
30555  20 120 220 320 120 20   -  - 320 20
30556  22 122 222 322 122 22   -  -   -  -
30557  24 124 224 324 124 24 224 24   -  -
30558  26 126 226 326 126 26   -  -   -  -
30559  28 128 228 328 128 28   -  -   -  -
30560  30 130 230 330 130 30 230 30 330 30
30561  32 132 232 332 132 32   -  -   -  -
30562  34 134 234 334 134 34   -  -   -  -
30563  36 136 236 336 136 36 236 36   -  -
30564  38 138 238 338 138 38   -  -   -  -
30565  40 140 240 340 140 40   -  - 340 40
30566  42 142 242 342 142 42 242 42   -  -
30567  44 144 244 344 144 44   -  -   -  -
30568  46 146 246 346 146 46   -  -   -  -
30569  48 148 248 348 148 48 248 48   -  -
30570  50 150 250 350 150 50   -  - 350 50
30571  52 152 252 352 152 52   -  -   -  -
30572  54 154 254 354 154 54 254 54   -  -
30573  56 156 256 356 156 56   -  -   -  -
30574  58 158 258 358 158 58   -  -   -  -
30575  60 160 260 360 160 60 260 60 360 60
30576  62 162 262 362 162 62   -  -   -  -
30577  64 164 264 364 164 64   -  -   -  -
30578  66 166 266 366 166 66 266 66   -  -
30579  68 168 268 368 168 68   -  -   -  -
30580  70 170 270 370 170 70   -  - 370 70
30581  72 172 272 372 172 72 272 72   -  -
30582  74 174 274 374 174 74   -  -   -  -
30583  76 176 276 376 176 76   -  -   -  -
30584  78 178 278 378 178 78 278 78   -  -
30585  80 180 280 380 180 80   -  - 380 80
30586  82 182 282 382 182 82   -  -   -  -
30587  84 184 284 384 184 84 284 84   -  -
30588  86 186 286 386 186 86   -  -   -  -
30589  88 188 288 388 188 88   -  -   -  -
30590  90 190 290 390 190 90 290 90 390 90
30591  92 192 292 392 192 92   -  -   -  -
30592  94 194 294 394 194 94   -  -   -  -
30593}
30594do_execsql_test joinD-1034 {
30595  SELECT t1.*, t2.*, t3.*, t4.*
30596  FROM t1 FULL JOIN t2 ON t2.x>0
30597  LEFT JOIN t3 ON t3.y>0
30598  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
30599  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
30600  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30601} {
30602   6 106 206 306 106  6 206  6   -  -
30603  12 112 212 312 112 12 212 12   -  -
30604  18 118 218 318 118 18 218 18   -  -
30605  24 124 224 324 124 24 224 24   -  -
30606  30 130 230 330 130 30 230 30 330 30
30607  36 136 236 336 136 36 236 36   -  -
30608  42 142 242 342 142 42 242 42   -  -
30609  48 148 248 348 148 48 248 48   -  -
30610  54 154 254 354 154 54 254 54   -  -
30611  60 160 260 360 160 60 260 60 360 60
30612  66 166 266 366 166 66 266 66   -  -
30613  72 172 272 372 172 72 272 72   -  -
30614  78 178 278 378 178 78 278 78   -  -
30615  84 184 284 384 184 84 284 84   -  -
30616  90 190 290 390 190 90 290 90 390 90
30617}
30618do_execsql_test joinD-1035 {
30619  SELECT t1.*, t2.*, t3.*, t4.*
30620  FROM t1 FULL JOIN t2 ON t2.x>0
30621  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30622  FULL JOIN t4 ON t4.z>0
30623  WHERE t1.b = t2.b AND t1.d = t4.d
30624  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30625} {
30626  10 110 210 310 110 10   -  - 310 10
30627  20 120 220 320 120 20   -  - 320 20
30628  30 130 230 330 130 30 230 30 330 30
30629  40 140 240 340 140 40   -  - 340 40
30630  50 150 250 350 150 50   -  - 350 50
30631  60 160 260 360 160 60 260 60 360 60
30632  70 170 270 370 170 70   -  - 370 70
30633  80 180 280 380 180 80   -  - 380 80
30634  90 190 290 390 190 90 290 90 390 90
30635}
30636do_execsql_test joinD-1036 {
30637  SELECT t1.*, t2.*, t3.*, t4.*
30638  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30639  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
30640  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30641  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30642} {
30643   0 100 200 300   -  -   -  -   -  -
30644   1 101 201 301   -  -   -  -   -  -
30645   2 102 202 302 102  2   -  -   -  -
30646   3 103 203 303   -  - 203  3   -  -
30647   4 104 204 304 104  4   -  -   -  -
30648   5 105 205 305   -  -   -  - 305  5
30649   6 106 206 306 106  6 206  6   -  -
30650   7 107 207 307   -  -   -  -   -  -
30651   8 108 208 308 108  8   -  -   -  -
30652   9 109 209 309   -  - 209  9   -  -
30653  10 110 210 310 110 10   -  - 310 10
30654  11 111 211 311   -  -   -  -   -  -
30655  12 112 212 312 112 12 212 12   -  -
30656  13 113 213 313   -  -   -  -   -  -
30657  14 114 214 314 114 14   -  -   -  -
30658  15 115 215 315   -  - 215 15 315 15
30659  16 116 216 316 116 16   -  -   -  -
30660  17 117 217 317   -  -   -  -   -  -
30661  18 118 218 318 118 18 218 18   -  -
30662  19 119 219 319   -  -   -  -   -  -
30663  20 120 220 320 120 20   -  - 320 20
30664  21 121 221 321   -  - 221 21   -  -
30665  22 122 222 322 122 22   -  -   -  -
30666  23 123 223 323   -  -   -  -   -  -
30667  24 124 224 324 124 24 224 24   -  -
30668  25 125 225 325   -  -   -  - 325 25
30669  26 126 226 326 126 26   -  -   -  -
30670  27 127 227 327   -  - 227 27   -  -
30671  28 128 228 328 128 28   -  -   -  -
30672  29 129 229 329   -  -   -  -   -  -
30673  30 130 230 330 130 30 230 30 330 30
30674  31 131 231 331   -  -   -  -   -  -
30675  32 132 232 332 132 32   -  -   -  -
30676  33 133 233 333   -  - 233 33   -  -
30677  34 134 234 334 134 34   -  -   -  -
30678  35 135 235 335   -  -   -  - 335 35
30679  36 136 236 336 136 36 236 36   -  -
30680  37 137 237 337   -  -   -  -   -  -
30681  38 138 238 338 138 38   -  -   -  -
30682  39 139 239 339   -  - 239 39   -  -
30683  40 140 240 340 140 40   -  - 340 40
30684  41 141 241 341   -  -   -  -   -  -
30685  42 142 242 342 142 42 242 42   -  -
30686  43 143 243 343   -  -   -  -   -  -
30687  44 144 244 344 144 44   -  -   -  -
30688  45 145 245 345   -  - 245 45 345 45
30689  46 146 246 346 146 46   -  -   -  -
30690  47 147 247 347   -  -   -  -   -  -
30691  48 148 248 348 148 48 248 48   -  -
30692  49 149 249 349   -  -   -  -   -  -
30693  50 150 250 350 150 50   -  - 350 50
30694  51 151 251 351   -  - 251 51   -  -
30695  52 152 252 352 152 52   -  -   -  -
30696  53 153 253 353   -  -   -  -   -  -
30697  54 154 254 354 154 54 254 54   -  -
30698  55 155 255 355   -  -   -  - 355 55
30699  56 156 256 356 156 56   -  -   -  -
30700  57 157 257 357   -  - 257 57   -  -
30701  58 158 258 358 158 58   -  -   -  -
30702  59 159 259 359   -  -   -  -   -  -
30703  60 160 260 360 160 60 260 60 360 60
30704  61 161 261 361   -  -   -  -   -  -
30705  62 162 262 362 162 62   -  -   -  -
30706  63 163 263 363   -  - 263 63   -  -
30707  64 164 264 364 164 64   -  -   -  -
30708  65 165 265 365   -  -   -  - 365 65
30709  66 166 266 366 166 66 266 66   -  -
30710  67 167 267 367   -  -   -  -   -  -
30711  68 168 268 368 168 68   -  -   -  -
30712  69 169 269 369   -  - 269 69   -  -
30713  70 170 270 370 170 70   -  - 370 70
30714  71 171 271 371   -  -   -  -   -  -
30715  72 172 272 372 172 72 272 72   -  -
30716  73 173 273 373   -  -   -  -   -  -
30717  74 174 274 374 174 74   -  -   -  -
30718  75 175 275 375   -  - 275 75 375 75
30719  76 176 276 376 176 76   -  -   -  -
30720  77 177 277 377   -  -   -  -   -  -
30721  78 178 278 378 178 78 278 78   -  -
30722  79 179 279 379   -  -   -  -   -  -
30723  80 180 280 380 180 80   -  - 380 80
30724  81 181 281 381   -  - 281 81   -  -
30725  82 182 282 382 182 82   -  -   -  -
30726  83 183 283 383   -  -   -  -   -  -
30727  84 184 284 384 184 84 284 84   -  -
30728  85 185 285 385   -  -   -  - 385 85
30729  86 186 286 386 186 86   -  -   -  -
30730  87 187 287 387   -  - 287 87   -  -
30731  88 188 288 388 188 88   -  -   -  -
30732  89 189 289 389   -  -   -  -   -  -
30733  90 190 290 390 190 90 290 90 390 90
30734  91 191 291 391   -  -   -  -   -  -
30735  92 192 292 392 192 92   -  -   -  -
30736  93 193 293 393   -  - 293 93   -  -
30737  94 194 294 394 194 94   -  -   -  -
30738  95 195 295 395   -  -   -  - 395 95
30739  96   - 296 396   -  -   -  -   -  -
30740  97 197   - 397   -  -   -  -   -  -
30741  98 198 298   -   -  -   -  -   -  -
30742  99   -   -   -   -  -   -  -   -  -
30743   -   -   -   - 100  0   -  -   -  -
30744   -   -   -   -   -  -   -  - 300  0
30745}
30746do_execsql_test joinD-1037 {
30747  SELECT t1.*, t2.*, t3.*, t4.*
30748  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30749  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30750  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30751  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30752} {
30753  15 115 215 315   -  - 215 15 315 15
30754  30 130 230 330 130 30 230 30 330 30
30755  45 145 245 345   -  - 245 45 345 45
30756  60 160 260 360 160 60 260 60 360 60
30757  75 175 275 375   -  - 275 75 375 75
30758  90 190 290 390 190 90 290 90 390 90
30759}
30760do_execsql_test joinD-1038 {
30761  SELECT t1.*, t2.*, t3.*, t4.*
30762  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30763  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30764  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30765  WHERE t2.x>0
30766  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30767} {
30768  30 130 230 330 130 30 230 30 330 30
30769  60 160 260 360 160 60 260 60 360 60
30770  90 190 290 390 190 90 290 90 390 90
30771}
30772do_execsql_test joinD-1039 {
30773  SELECT t1.*, t2.*, t3.*, t4.*
30774  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30775  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30776  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30777  WHERE (t2.x>0 OR t2.x IS NULL)
30778  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30779} {
30780  15 115 215 315   -  - 215 15 315 15
30781  30 130 230 330 130 30 230 30 330 30
30782  45 145 245 345   -  - 245 45 345 45
30783  60 160 260 360 160 60 260 60 360 60
30784  75 175 275 375   -  - 275 75 375 75
30785  90 190 290 390 190 90 290 90 390 90
30786}
30787do_execsql_test joinD-1040 {
30788  SELECT t1.*, t2.*, t3.*, t4.*
30789  FROM t1 FULL JOIN t2 ON true
30790  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30791  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30792  WHERE t1.b=t2.b AND t2.x>0
30793  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30794} {
30795  30 130 230 330 130 30 230 30 330 30
30796  60 160 260 360 160 60 260 60 360 60
30797  90 190 290 390 190 90 290 90 390 90
30798}
30799do_execsql_test joinD-1041 {
30800  SELECT t1.*, t2.*, t3.*, t4.*
30801  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30802  RIGHT JOIN t3 ON t1.c=t3.c
30803  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30804  WHERE t3.y>0
30805  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30806} {
30807  15 115 215 315   -  - 215 15 315 15
30808  30 130 230 330 130 30 230 30 330 30
30809  45 145 245 345   -  - 245 45 345 45
30810  60 160 260 360 160 60 260 60 360 60
30811  75 175 275 375   -  - 275 75 375 75
30812  90 190 290 390 190 90 290 90 390 90
30813}
30814do_execsql_test joinD-1042 {
30815  SELECT t1.*, t2.*, t3.*, t4.*
30816  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30817  RIGHT JOIN t3 ON t1.c=t3.c
30818  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30819  WHERE t3.y>0 OR t3.y IS NULL
30820  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30821} {
30822  15 115 215 315   -  - 215 15 315 15
30823  30 130 230 330 130 30 230 30 330 30
30824  45 145 245 345   -  - 245 45 345 45
30825  60 160 260 360 160 60 260 60 360 60
30826  75 175 275 375   -  - 275 75 375 75
30827  90 190 290 390 190 90 290 90 390 90
30828}
30829do_execsql_test joinD-1043 {
30830  SELECT t1.*, t2.*, t3.*, t4.*
30831  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30832  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30833  INNER JOIN t4 ON t1.d=t4.d
30834  WHERE t4.z>0
30835  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30836} {
30837  15 115 215 315   -  - 215 15 315 15
30838  30 130 230 330 130 30 230 30 330 30
30839  45 145 245 345   -  - 245 45 345 45
30840  60 160 260 360 160 60 260 60 360 60
30841  75 175 275 375   -  - 275 75 375 75
30842  90 190 290 390 190 90 290 90 390 90
30843}
30844do_execsql_test joinD-1044 {
30845  SELECT t1.*, t2.*, t3.*, t4.*
30846  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30847  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30848  INNER JOIN t4 ON t1.d=t4.d
30849  WHERE t4.z IS NULL OR t4.z>0
30850  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30851} {
30852  15 115 215 315   -  - 215 15 315 15
30853  30 130 230 330 130 30 230 30 330 30
30854  45 145 245 345   -  - 245 45 345 45
30855  60 160 260 360 160 60 260 60 360 60
30856  75 175 275 375   -  - 275 75 375 75
30857  90 190 290 390 190 90 290 90 390 90
30858}
30859do_execsql_test joinD-1045 {
30860  SELECT t1.*, t2.*, t3.*, t4.*
30861  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30862  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30863  INNER JOIN t4 ON t1.d=t4.d
30864  WHERE t2.x>0 AND t4.z>0
30865  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30866} {
30867  30 130 230 330 130 30 230 30 330 30
30868  60 160 260 360 160 60 260 60 360 60
30869  90 190 290 390 190 90 290 90 390 90
30870}
30871do_execsql_test joinD-1046 {
30872  SELECT t1.*, t2.*, t3.*, t4.*
30873  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30874  RIGHT JOIN t3 ON t1.c=t3.c
30875  INNER JOIN t4 ON t1.d=t4.d
30876  WHERE t4.z>0 AND t3.y>0
30877  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30878} {
30879  15 115 215 315   -  - 215 15 315 15
30880  30 130 230 330 130 30 230 30 330 30
30881  45 145 245 345   -  - 245 45 345 45
30882  60 160 260 360 160 60 260 60 360 60
30883  75 175 275 375   -  - 275 75 375 75
30884  90 190 290 390 190 90 290 90 390 90
30885}
30886do_execsql_test joinD-1047 {
30887  SELECT t1.*, t2.*, t3.*, t4.*
30888  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30889  RIGHT JOIN t3 ON t1.c=t3.c
30890  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30891  WHERE t2.x>0 AND t3.y>0
30892  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30893} {
30894  30 130 230 330 130 30 230 30 330 30
30895  60 160 260 360 160 60 260 60 360 60
30896  90 190 290 390 190 90 290 90 390 90
30897}
30898do_execsql_test joinD-1048 {
30899  SELECT t1.*, t2.*, t3.*, t4.*
30900  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30901  RIGHT JOIN t3 ON t1.c=t3.c
30902  INNER JOIN t4 ON t1.d=t4.d
30903  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
30904  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30905} {
30906  30 130 230 330 130 30 230 30 330 30
30907  60 160 260 360 160 60 260 60 360 60
30908  90 190 290 390 190 90 290 90 390 90
30909}
30910do_execsql_test joinD-1049 {
30911  SELECT t1.*, t2.*, t3.*, t4.*
30912  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
30913  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30914  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
30915  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30916} {
30917  15 115 215 315   -  - 215 15 315 15
30918  30 130 230 330 130 30 230 30 330 30
30919  45 145 245 345   -  - 245 45 345 45
30920  60 160 260 360 160 60 260 60 360 60
30921  75 175 275 375   -  - 275 75 375 75
30922  90 190 290 390 190 90 290 90 390 90
30923}
30924do_execsql_test joinD-1050 {
30925  SELECT t1.*, t2.*, t3.*, t4.*
30926  FROM t1 FULL JOIN t2 ON t2.x>0
30927  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30928  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
30929  WHERE t1.b = t2.b
30930  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30931} {
30932  30 130 230 330 130 30 230 30 330 30
30933  60 160 260 360 160 60 260 60 360 60
30934  90 190 290 390 190 90 290 90 390 90
30935}
30936do_execsql_test joinD-1051 {
30937  SELECT t1.*, t2.*, t3.*, t4.*
30938  FROM t1 FULL JOIN t2 ON t2.x>0
30939  RIGHT JOIN t3 ON t3.y>0
30940  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
30941  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
30942  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30943} {
30944  30 130 230 330 130 30 230 30 330 30
30945  60 160 260 360 160 60 260 60 360 60
30946  90 190 290 390 190 90 290 90 390 90
30947}
30948do_execsql_test joinD-1052 {
30949  SELECT t1.*, t2.*, t3.*, t4.*
30950  FROM t1 FULL JOIN t2 ON t2.x>0
30951  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30952  INNER JOIN t4 ON t4.z>0
30953  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
30954  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30955} {
30956  30 130 230 330 130 30 230 30 330 30
30957  60 160 260 360 160 60 260 60 360 60
30958  90 190 290 390 190 90 290 90 390 90
30959}
30960do_execsql_test joinD-1053 {
30961  SELECT t1.*, t2.*, t3.*, t4.*
30962  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30963  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
30964  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30965  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30966} {
30967  15 115 215 315   -  - 215 15 315 15
30968  30 130 230 330 130 30 230 30 330 30
30969  45 145 245 345   -  - 245 45 345 45
30970  60 160 260 360 160 60 260 60 360 60
30971  75 175 275 375   -  - 275 75 375 75
30972  90 190 290 390 190 90 290 90 390 90
30973}
30974do_execsql_test joinD-1054 {
30975  SELECT t1.*, t2.*, t3.*, t4.*
30976  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30977  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30978  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
30979  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30980} {
30981   3 103 203 303   -  - 203  3   -  -
30982   6 106 206 306 106  6 206  6   -  -
30983   9 109 209 309   -  - 209  9   -  -
30984  12 112 212 312 112 12 212 12   -  -
30985  15 115 215 315   -  - 215 15 315 15
30986  18 118 218 318 118 18 218 18   -  -
30987  21 121 221 321   -  - 221 21   -  -
30988  24 124 224 324 124 24 224 24   -  -
30989  27 127 227 327   -  - 227 27   -  -
30990  30 130 230 330 130 30 230 30 330 30
30991  33 133 233 333   -  - 233 33   -  -
30992  36 136 236 336 136 36 236 36   -  -
30993  39 139 239 339   -  - 239 39   -  -
30994  42 142 242 342 142 42 242 42   -  -
30995  45 145 245 345   -  - 245 45 345 45
30996  48 148 248 348 148 48 248 48   -  -
30997  51 151 251 351   -  - 251 51   -  -
30998  54 154 254 354 154 54 254 54   -  -
30999  57 157 257 357   -  - 257 57   -  -
31000  60 160 260 360 160 60 260 60 360 60
31001  63 163 263 363   -  - 263 63   -  -
31002  66 166 266 366 166 66 266 66   -  -
31003  69 169 269 369   -  - 269 69   -  -
31004  72 172 272 372 172 72 272 72   -  -
31005  75 175 275 375   -  - 275 75 375 75
31006  78 178 278 378 178 78 278 78   -  -
31007  81 181 281 381   -  - 281 81   -  -
31008  84 184 284 384 184 84 284 84   -  -
31009  87 187 287 387   -  - 287 87   -  -
31010  90 190 290 390 190 90 290 90 390 90
31011  93 193 293 393   -  - 293 93   -  -
31012   -   -   -   -   -  - 200  0   -  -
31013}
31014do_execsql_test joinD-1055 {
31015  SELECT t1.*, t2.*, t3.*, t4.*
31016  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31017  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31018  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31019  WHERE t2.x>0
31020  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31021} {
31022   6 106 206 306 106  6 206  6   -  -
31023  12 112 212 312 112 12 212 12   -  -
31024  18 118 218 318 118 18 218 18   -  -
31025  24 124 224 324 124 24 224 24   -  -
31026  30 130 230 330 130 30 230 30 330 30
31027  36 136 236 336 136 36 236 36   -  -
31028  42 142 242 342 142 42 242 42   -  -
31029  48 148 248 348 148 48 248 48   -  -
31030  54 154 254 354 154 54 254 54   -  -
31031  60 160 260 360 160 60 260 60 360 60
31032  66 166 266 366 166 66 266 66   -  -
31033  72 172 272 372 172 72 272 72   -  -
31034  78 178 278 378 178 78 278 78   -  -
31035  84 184 284 384 184 84 284 84   -  -
31036  90 190 290 390 190 90 290 90 390 90
31037}
31038do_execsql_test joinD-1056 {
31039  SELECT t1.*, t2.*, t3.*, t4.*
31040  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31041  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31042  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31043  WHERE (t2.x>0 OR t2.x IS NULL)
31044  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31045} {
31046   3 103 203 303   -  - 203  3   -  -
31047   6 106 206 306 106  6 206  6   -  -
31048   9 109 209 309   -  - 209  9   -  -
31049  12 112 212 312 112 12 212 12   -  -
31050  15 115 215 315   -  - 215 15 315 15
31051  18 118 218 318 118 18 218 18   -  -
31052  21 121 221 321   -  - 221 21   -  -
31053  24 124 224 324 124 24 224 24   -  -
31054  27 127 227 327   -  - 227 27   -  -
31055  30 130 230 330 130 30 230 30 330 30
31056  33 133 233 333   -  - 233 33   -  -
31057  36 136 236 336 136 36 236 36   -  -
31058  39 139 239 339   -  - 239 39   -  -
31059  42 142 242 342 142 42 242 42   -  -
31060  45 145 245 345   -  - 245 45 345 45
31061  48 148 248 348 148 48 248 48   -  -
31062  51 151 251 351   -  - 251 51   -  -
31063  54 154 254 354 154 54 254 54   -  -
31064  57 157 257 357   -  - 257 57   -  -
31065  60 160 260 360 160 60 260 60 360 60
31066  63 163 263 363   -  - 263 63   -  -
31067  66 166 266 366 166 66 266 66   -  -
31068  69 169 269 369   -  - 269 69   -  -
31069  72 172 272 372 172 72 272 72   -  -
31070  75 175 275 375   -  - 275 75 375 75
31071  78 178 278 378 178 78 278 78   -  -
31072  81 181 281 381   -  - 281 81   -  -
31073  84 184 284 384 184 84 284 84   -  -
31074  87 187 287 387   -  - 287 87   -  -
31075  90 190 290 390 190 90 290 90 390 90
31076  93 193 293 393   -  - 293 93   -  -
31077   -   -   -   -   -  - 200  0   -  -
31078}
31079do_execsql_test joinD-1057 {
31080  SELECT t1.*, t2.*, t3.*, t4.*
31081  FROM t1 FULL JOIN t2 ON true
31082  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31083  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31084  WHERE t1.b=t2.b AND t2.x>0
31085  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31086} {
31087   6 106 206 306 106  6 206  6   -  -
31088  12 112 212 312 112 12 212 12   -  -
31089  18 118 218 318 118 18 218 18   -  -
31090  24 124 224 324 124 24 224 24   -  -
31091  30 130 230 330 130 30 230 30 330 30
31092  36 136 236 336 136 36 236 36   -  -
31093  42 142 242 342 142 42 242 42   -  -
31094  48 148 248 348 148 48 248 48   -  -
31095  54 154 254 354 154 54 254 54   -  -
31096  60 160 260 360 160 60 260 60 360 60
31097  66 166 266 366 166 66 266 66   -  -
31098  72 172 272 372 172 72 272 72   -  -
31099  78 178 278 378 178 78 278 78   -  -
31100  84 184 284 384 184 84 284 84   -  -
31101  90 190 290 390 190 90 290 90 390 90
31102}
31103do_execsql_test joinD-1058 {
31104  SELECT t1.*, t2.*, t3.*, t4.*
31105  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31106  RIGHT JOIN t3 ON t1.c=t3.c
31107  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31108  WHERE t3.y>0
31109  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31110} {
31111   3 103 203 303   -  - 203  3   -  -
31112   6 106 206 306 106  6 206  6   -  -
31113   9 109 209 309   -  - 209  9   -  -
31114  12 112 212 312 112 12 212 12   -  -
31115  15 115 215 315   -  - 215 15 315 15
31116  18 118 218 318 118 18 218 18   -  -
31117  21 121 221 321   -  - 221 21   -  -
31118  24 124 224 324 124 24 224 24   -  -
31119  27 127 227 327   -  - 227 27   -  -
31120  30 130 230 330 130 30 230 30 330 30
31121  33 133 233 333   -  - 233 33   -  -
31122  36 136 236 336 136 36 236 36   -  -
31123  39 139 239 339   -  - 239 39   -  -
31124  42 142 242 342 142 42 242 42   -  -
31125  45 145 245 345   -  - 245 45 345 45
31126  48 148 248 348 148 48 248 48   -  -
31127  51 151 251 351   -  - 251 51   -  -
31128  54 154 254 354 154 54 254 54   -  -
31129  57 157 257 357   -  - 257 57   -  -
31130  60 160 260 360 160 60 260 60 360 60
31131  63 163 263 363   -  - 263 63   -  -
31132  66 166 266 366 166 66 266 66   -  -
31133  69 169 269 369   -  - 269 69   -  -
31134  72 172 272 372 172 72 272 72   -  -
31135  75 175 275 375   -  - 275 75 375 75
31136  78 178 278 378 178 78 278 78   -  -
31137  81 181 281 381   -  - 281 81   -  -
31138  84 184 284 384 184 84 284 84   -  -
31139  87 187 287 387   -  - 287 87   -  -
31140  90 190 290 390 190 90 290 90 390 90
31141  93 193 293 393   -  - 293 93   -  -
31142}
31143do_execsql_test joinD-1059 {
31144  SELECT t1.*, t2.*, t3.*, t4.*
31145  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31146  RIGHT JOIN t3 ON t1.c=t3.c
31147  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31148  WHERE t3.y>0 OR t3.y IS NULL
31149  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31150} {
31151   3 103 203 303   -  - 203  3   -  -
31152   6 106 206 306 106  6 206  6   -  -
31153   9 109 209 309   -  - 209  9   -  -
31154  12 112 212 312 112 12 212 12   -  -
31155  15 115 215 315   -  - 215 15 315 15
31156  18 118 218 318 118 18 218 18   -  -
31157  21 121 221 321   -  - 221 21   -  -
31158  24 124 224 324 124 24 224 24   -  -
31159  27 127 227 327   -  - 227 27   -  -
31160  30 130 230 330 130 30 230 30 330 30
31161  33 133 233 333   -  - 233 33   -  -
31162  36 136 236 336 136 36 236 36   -  -
31163  39 139 239 339   -  - 239 39   -  -
31164  42 142 242 342 142 42 242 42   -  -
31165  45 145 245 345   -  - 245 45 345 45
31166  48 148 248 348 148 48 248 48   -  -
31167  51 151 251 351   -  - 251 51   -  -
31168  54 154 254 354 154 54 254 54   -  -
31169  57 157 257 357   -  - 257 57   -  -
31170  60 160 260 360 160 60 260 60 360 60
31171  63 163 263 363   -  - 263 63   -  -
31172  66 166 266 366 166 66 266 66   -  -
31173  69 169 269 369   -  - 269 69   -  -
31174  72 172 272 372 172 72 272 72   -  -
31175  75 175 275 375   -  - 275 75 375 75
31176  78 178 278 378 178 78 278 78   -  -
31177  81 181 281 381   -  - 281 81   -  -
31178  84 184 284 384 184 84 284 84   -  -
31179  87 187 287 387   -  - 287 87   -  -
31180  90 190 290 390 190 90 290 90 390 90
31181  93 193 293 393   -  - 293 93   -  -
31182}
31183do_execsql_test joinD-1060 {
31184  SELECT t1.*, t2.*, t3.*, t4.*
31185  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31186  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31187  LEFT JOIN t4 ON t1.d=t4.d
31188  WHERE t4.z>0
31189  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31190} {
31191  15 115 215 315   -  - 215 15 315 15
31192  30 130 230 330 130 30 230 30 330 30
31193  45 145 245 345   -  - 245 45 345 45
31194  60 160 260 360 160 60 260 60 360 60
31195  75 175 275 375   -  - 275 75 375 75
31196  90 190 290 390 190 90 290 90 390 90
31197}
31198do_execsql_test joinD-1061 {
31199  SELECT t1.*, t2.*, t3.*, t4.*
31200  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31201  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31202  LEFT JOIN t4 ON t1.d=t4.d
31203  WHERE t4.z IS NULL OR t4.z>0
31204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31205} {
31206   3 103 203 303   -  - 203  3   -  -
31207   6 106 206 306 106  6 206  6   -  -
31208   9 109 209 309   -  - 209  9   -  -
31209  12 112 212 312 112 12 212 12   -  -
31210  15 115 215 315   -  - 215 15 315 15
31211  18 118 218 318 118 18 218 18   -  -
31212  21 121 221 321   -  - 221 21   -  -
31213  24 124 224 324 124 24 224 24   -  -
31214  27 127 227 327   -  - 227 27   -  -
31215  30 130 230 330 130 30 230 30 330 30
31216  33 133 233 333   -  - 233 33   -  -
31217  36 136 236 336 136 36 236 36   -  -
31218  39 139 239 339   -  - 239 39   -  -
31219  42 142 242 342 142 42 242 42   -  -
31220  45 145 245 345   -  - 245 45 345 45
31221  48 148 248 348 148 48 248 48   -  -
31222  51 151 251 351   -  - 251 51   -  -
31223  54 154 254 354 154 54 254 54   -  -
31224  57 157 257 357   -  - 257 57   -  -
31225  60 160 260 360 160 60 260 60 360 60
31226  63 163 263 363   -  - 263 63   -  -
31227  66 166 266 366 166 66 266 66   -  -
31228  69 169 269 369   -  - 269 69   -  -
31229  72 172 272 372 172 72 272 72   -  -
31230  75 175 275 375   -  - 275 75 375 75
31231  78 178 278 378 178 78 278 78   -  -
31232  81 181 281 381   -  - 281 81   -  -
31233  84 184 284 384 184 84 284 84   -  -
31234  87 187 287 387   -  - 287 87   -  -
31235  90 190 290 390 190 90 290 90 390 90
31236  93 193 293 393   -  - 293 93   -  -
31237   -   -   -   -   -  - 200  0   -  -
31238}
31239do_execsql_test joinD-1062 {
31240  SELECT t1.*, t2.*, t3.*, t4.*
31241  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31242  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31243  LEFT JOIN t4 ON t1.d=t4.d
31244  WHERE t2.x>0 AND t4.z>0
31245  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31246} {
31247  30 130 230 330 130 30 230 30 330 30
31248  60 160 260 360 160 60 260 60 360 60
31249  90 190 290 390 190 90 290 90 390 90
31250}
31251do_execsql_test joinD-1063 {
31252  SELECT t1.*, t2.*, t3.*, t4.*
31253  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31254  RIGHT JOIN t3 ON t1.c=t3.c
31255  LEFT JOIN t4 ON t1.d=t4.d
31256  WHERE t4.z>0 AND t3.y>0
31257  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31258} {
31259  15 115 215 315   -  - 215 15 315 15
31260  30 130 230 330 130 30 230 30 330 30
31261  45 145 245 345   -  - 245 45 345 45
31262  60 160 260 360 160 60 260 60 360 60
31263  75 175 275 375   -  - 275 75 375 75
31264  90 190 290 390 190 90 290 90 390 90
31265}
31266do_execsql_test joinD-1064 {
31267  SELECT t1.*, t2.*, t3.*, t4.*
31268  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31269  RIGHT JOIN t3 ON t1.c=t3.c
31270  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31271  WHERE t2.x>0 AND t3.y>0
31272  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31273} {
31274   6 106 206 306 106  6 206  6   -  -
31275  12 112 212 312 112 12 212 12   -  -
31276  18 118 218 318 118 18 218 18   -  -
31277  24 124 224 324 124 24 224 24   -  -
31278  30 130 230 330 130 30 230 30 330 30
31279  36 136 236 336 136 36 236 36   -  -
31280  42 142 242 342 142 42 242 42   -  -
31281  48 148 248 348 148 48 248 48   -  -
31282  54 154 254 354 154 54 254 54   -  -
31283  60 160 260 360 160 60 260 60 360 60
31284  66 166 266 366 166 66 266 66   -  -
31285  72 172 272 372 172 72 272 72   -  -
31286  78 178 278 378 178 78 278 78   -  -
31287  84 184 284 384 184 84 284 84   -  -
31288  90 190 290 390 190 90 290 90 390 90
31289}
31290do_execsql_test joinD-1065 {
31291  SELECT t1.*, t2.*, t3.*, t4.*
31292  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31293  RIGHT JOIN t3 ON t1.c=t3.c
31294  LEFT JOIN t4 ON t1.d=t4.d
31295  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
31296  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31297} {
31298  30 130 230 330 130 30 230 30 330 30
31299  60 160 260 360 160 60 260 60 360 60
31300  90 190 290 390 190 90 290 90 390 90
31301}
31302do_execsql_test joinD-1066 {
31303  SELECT t1.*, t2.*, t3.*, t4.*
31304  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
31305  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31306  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31307  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31308} {
31309   3 103 203 303   -  - 203  3   -  -
31310   6 106 206 306 106  6 206  6   -  -
31311   9 109 209 309   -  - 209  9   -  -
31312  12 112 212 312 112 12 212 12   -  -
31313  15 115 215 315   -  - 215 15 315 15
31314  18 118 218 318 118 18 218 18   -  -
31315  21 121 221 321   -  - 221 21   -  -
31316  24 124 224 324 124 24 224 24   -  -
31317  27 127 227 327   -  - 227 27   -  -
31318  30 130 230 330 130 30 230 30 330 30
31319  33 133 233 333   -  - 233 33   -  -
31320  36 136 236 336 136 36 236 36   -  -
31321  39 139 239 339   -  - 239 39   -  -
31322  42 142 242 342 142 42 242 42   -  -
31323  45 145 245 345   -  - 245 45 345 45
31324  48 148 248 348 148 48 248 48   -  -
31325  51 151 251 351   -  - 251 51   -  -
31326  54 154 254 354 154 54 254 54   -  -
31327  57 157 257 357   -  - 257 57   -  -
31328  60 160 260 360 160 60 260 60 360 60
31329  63 163 263 363   -  - 263 63   -  -
31330  66 166 266 366 166 66 266 66   -  -
31331  69 169 269 369   -  - 269 69   -  -
31332  72 172 272 372 172 72 272 72   -  -
31333  75 175 275 375   -  - 275 75 375 75
31334  78 178 278 378 178 78 278 78   -  -
31335  81 181 281 381   -  - 281 81   -  -
31336  84 184 284 384 184 84 284 84   -  -
31337  87 187 287 387   -  - 287 87   -  -
31338  90 190 290 390 190 90 290 90 390 90
31339  93 193 293 393   -  - 293 93   -  -
31340   -   -   -   -   -  - 200  0   -  -
31341}
31342do_execsql_test joinD-1067 {
31343  SELECT t1.*, t2.*, t3.*, t4.*
31344  FROM t1 FULL JOIN t2 ON t2.x>0
31345  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31346  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31347  WHERE t1.b = t2.b
31348  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31349} {
31350   6 106 206 306 106  6 206  6   -  -
31351  12 112 212 312 112 12 212 12   -  -
31352  18 118 218 318 118 18 218 18   -  -
31353  24 124 224 324 124 24 224 24   -  -
31354  30 130 230 330 130 30 230 30 330 30
31355  36 136 236 336 136 36 236 36   -  -
31356  42 142 242 342 142 42 242 42   -  -
31357  48 148 248 348 148 48 248 48   -  -
31358  54 154 254 354 154 54 254 54   -  -
31359  60 160 260 360 160 60 260 60 360 60
31360  66 166 266 366 166 66 266 66   -  -
31361  72 172 272 372 172 72 272 72   -  -
31362  78 178 278 378 178 78 278 78   -  -
31363  84 184 284 384 184 84 284 84   -  -
31364  90 190 290 390 190 90 290 90 390 90
31365}
31366do_execsql_test joinD-1068 {
31367  SELECT t1.*, t2.*, t3.*, t4.*
31368  FROM t1 FULL JOIN t2 ON t2.x>0
31369  RIGHT JOIN t3 ON t3.y>0
31370  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31371  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
31372  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31373} {
31374   6 106 206 306 106  6 206  6   -  -
31375  12 112 212 312 112 12 212 12   -  -
31376  18 118 218 318 118 18 218 18   -  -
31377  24 124 224 324 124 24 224 24   -  -
31378  30 130 230 330 130 30 230 30 330 30
31379  36 136 236 336 136 36 236 36   -  -
31380  42 142 242 342 142 42 242 42   -  -
31381  48 148 248 348 148 48 248 48   -  -
31382  54 154 254 354 154 54 254 54   -  -
31383  60 160 260 360 160 60 260 60 360 60
31384  66 166 266 366 166 66 266 66   -  -
31385  72 172 272 372 172 72 272 72   -  -
31386  78 178 278 378 178 78 278 78   -  -
31387  84 184 284 384 184 84 284 84   -  -
31388  90 190 290 390 190 90 290 90 390 90
31389}
31390do_execsql_test joinD-1069 {
31391  SELECT t1.*, t2.*, t3.*, t4.*
31392  FROM t1 FULL JOIN t2 ON t2.x>0
31393  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31394  LEFT JOIN t4 ON t4.z>0
31395  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
31396  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31397} {
31398  30 130 230 330 130 30 230 30 330 30
31399  60 160 260 360 160 60 260 60 360 60
31400  90 190 290 390 190 90 290 90 390 90
31401}
31402do_execsql_test joinD-1070 {
31403  SELECT t1.*, t2.*, t3.*, t4.*
31404  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31405  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
31406  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31407  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31408} {
31409   3 103 203 303   -  - 203  3   -  -
31410   6 106 206 306 106  6 206  6   -  -
31411   9 109 209 309   -  - 209  9   -  -
31412  12 112 212 312 112 12 212 12   -  -
31413  15 115 215 315   -  - 215 15 315 15
31414  18 118 218 318 118 18 218 18   -  -
31415  21 121 221 321   -  - 221 21   -  -
31416  24 124 224 324 124 24 224 24   -  -
31417  27 127 227 327   -  - 227 27   -  -
31418  30 130 230 330 130 30 230 30 330 30
31419  33 133 233 333   -  - 233 33   -  -
31420  36 136 236 336 136 36 236 36   -  -
31421  39 139 239 339   -  - 239 39   -  -
31422  42 142 242 342 142 42 242 42   -  -
31423  45 145 245 345   -  - 245 45 345 45
31424  48 148 248 348 148 48 248 48   -  -
31425  51 151 251 351   -  - 251 51   -  -
31426  54 154 254 354 154 54 254 54   -  -
31427  57 157 257 357   -  - 257 57   -  -
31428  60 160 260 360 160 60 260 60 360 60
31429  63 163 263 363   -  - 263 63   -  -
31430  66 166 266 366 166 66 266 66   -  -
31431  69 169 269 369   -  - 269 69   -  -
31432  72 172 272 372 172 72 272 72   -  -
31433  75 175 275 375   -  - 275 75 375 75
31434  78 178 278 378 178 78 278 78   -  -
31435  81 181 281 381   -  - 281 81   -  -
31436  84 184 284 384 184 84 284 84   -  -
31437  87 187 287 387   -  - 287 87   -  -
31438  90 190 290 390 190 90 290 90 390 90
31439  93 193 293 393   -  - 293 93   -  -
31440   -   -   -   -   -  - 200  0   -  -
31441}
31442do_execsql_test joinD-1071 {
31443  SELECT t1.*, t2.*, t3.*, t4.*
31444  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31445  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31446  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31447  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31448} {
31449  15 115 215 315   -  - 215 15 315 15
31450  30 130 230 330 130 30 230 30 330 30
31451  45 145 245 345   -  - 245 45 345 45
31452  60 160 260 360 160 60 260 60 360 60
31453  75 175 275 375   -  - 275 75 375 75
31454  90 190 290 390 190 90 290 90 390 90
31455   -   -   -   -   -  -   -  - 300  0
31456   -   -   -   -   -  -   -  - 305  5
31457   -   -   -   -   -  -   -  - 310 10
31458   -   -   -   -   -  -   -  - 320 20
31459   -   -   -   -   -  -   -  - 325 25
31460   -   -   -   -   -  -   -  - 335 35
31461   -   -   -   -   -  -   -  - 340 40
31462   -   -   -   -   -  -   -  - 350 50
31463   -   -   -   -   -  -   -  - 355 55
31464   -   -   -   -   -  -   -  - 365 65
31465   -   -   -   -   -  -   -  - 370 70
31466   -   -   -   -   -  -   -  - 380 80
31467   -   -   -   -   -  -   -  - 385 85
31468   -   -   -   -   -  -   -  - 395 95
31469}
31470do_execsql_test joinD-1072 {
31471  SELECT t1.*, t2.*, t3.*, t4.*
31472  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31473  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31474  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31475  WHERE t2.x>0
31476  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31477} {
31478  30 130 230 330 130 30 230 30 330 30
31479  60 160 260 360 160 60 260 60 360 60
31480  90 190 290 390 190 90 290 90 390 90
31481}
31482do_execsql_test joinD-1073 {
31483  SELECT t1.*, t2.*, t3.*, t4.*
31484  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31485  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31486  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31487  WHERE (t2.x>0 OR t2.x IS NULL)
31488  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31489} {
31490  15 115 215 315   -  - 215 15 315 15
31491  30 130 230 330 130 30 230 30 330 30
31492  45 145 245 345   -  - 245 45 345 45
31493  60 160 260 360 160 60 260 60 360 60
31494  75 175 275 375   -  - 275 75 375 75
31495  90 190 290 390 190 90 290 90 390 90
31496   -   -   -   -   -  -   -  - 300  0
31497   -   -   -   -   -  -   -  - 305  5
31498   -   -   -   -   -  -   -  - 310 10
31499   -   -   -   -   -  -   -  - 320 20
31500   -   -   -   -   -  -   -  - 325 25
31501   -   -   -   -   -  -   -  - 335 35
31502   -   -   -   -   -  -   -  - 340 40
31503   -   -   -   -   -  -   -  - 350 50
31504   -   -   -   -   -  -   -  - 355 55
31505   -   -   -   -   -  -   -  - 365 65
31506   -   -   -   -   -  -   -  - 370 70
31507   -   -   -   -   -  -   -  - 380 80
31508   -   -   -   -   -  -   -  - 385 85
31509   -   -   -   -   -  -   -  - 395 95
31510}
31511do_execsql_test joinD-1074 {
31512  SELECT t1.*, t2.*, t3.*, t4.*
31513  FROM t1 FULL JOIN t2 ON true
31514  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31515  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31516  WHERE t1.b=t2.b AND t2.x>0
31517  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31518} {
31519  30 130 230 330 130 30 230 30 330 30
31520  60 160 260 360 160 60 260 60 360 60
31521  90 190 290 390 190 90 290 90 390 90
31522}
31523do_execsql_test joinD-1075 {
31524  SELECT t1.*, t2.*, t3.*, t4.*
31525  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31526  RIGHT JOIN t3 ON t1.c=t3.c
31527  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31528  WHERE t3.y>0
31529  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31530} {
31531  15 115 215 315   -  - 215 15 315 15
31532  30 130 230 330 130 30 230 30 330 30
31533  45 145 245 345   -  - 245 45 345 45
31534  60 160 260 360 160 60 260 60 360 60
31535  75 175 275 375   -  - 275 75 375 75
31536  90 190 290 390 190 90 290 90 390 90
31537}
31538do_execsql_test joinD-1076 {
31539  SELECT t1.*, t2.*, t3.*, t4.*
31540  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31541  RIGHT JOIN t3 ON t1.c=t3.c
31542  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31543  WHERE t3.y>0 OR t3.y IS NULL
31544  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31545} {
31546  15 115 215 315   -  - 215 15 315 15
31547  30 130 230 330 130 30 230 30 330 30
31548  45 145 245 345   -  - 245 45 345 45
31549  60 160 260 360 160 60 260 60 360 60
31550  75 175 275 375   -  - 275 75 375 75
31551  90 190 290 390 190 90 290 90 390 90
31552   -   -   -   -   -  -   -  - 300  0
31553   -   -   -   -   -  -   -  - 305  5
31554   -   -   -   -   -  -   -  - 310 10
31555   -   -   -   -   -  -   -  - 320 20
31556   -   -   -   -   -  -   -  - 325 25
31557   -   -   -   -   -  -   -  - 335 35
31558   -   -   -   -   -  -   -  - 340 40
31559   -   -   -   -   -  -   -  - 350 50
31560   -   -   -   -   -  -   -  - 355 55
31561   -   -   -   -   -  -   -  - 365 65
31562   -   -   -   -   -  -   -  - 370 70
31563   -   -   -   -   -  -   -  - 380 80
31564   -   -   -   -   -  -   -  - 385 85
31565   -   -   -   -   -  -   -  - 395 95
31566}
31567do_execsql_test joinD-1077 {
31568  SELECT t1.*, t2.*, t3.*, t4.*
31569  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31570  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31571  RIGHT JOIN t4 ON t1.d=t4.d
31572  WHERE t4.z>0
31573  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31574} {
31575  15 115 215 315   -  - 215 15 315 15
31576  30 130 230 330 130 30 230 30 330 30
31577  45 145 245 345   -  - 245 45 345 45
31578  60 160 260 360 160 60 260 60 360 60
31579  75 175 275 375   -  - 275 75 375 75
31580  90 190 290 390 190 90 290 90 390 90
31581   -   -   -   -   -  -   -  - 305  5
31582   -   -   -   -   -  -   -  - 310 10
31583   -   -   -   -   -  -   -  - 320 20
31584   -   -   -   -   -  -   -  - 325 25
31585   -   -   -   -   -  -   -  - 335 35
31586   -   -   -   -   -  -   -  - 340 40
31587   -   -   -   -   -  -   -  - 350 50
31588   -   -   -   -   -  -   -  - 355 55
31589   -   -   -   -   -  -   -  - 365 65
31590   -   -   -   -   -  -   -  - 370 70
31591   -   -   -   -   -  -   -  - 380 80
31592   -   -   -   -   -  -   -  - 385 85
31593   -   -   -   -   -  -   -  - 395 95
31594}
31595do_execsql_test joinD-1078 {
31596  SELECT t1.*, t2.*, t3.*, t4.*
31597  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31598  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31599  RIGHT JOIN t4 ON t1.d=t4.d
31600  WHERE t4.z IS NULL OR t4.z>0
31601  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31602} {
31603  15 115 215 315   -  - 215 15 315 15
31604  30 130 230 330 130 30 230 30 330 30
31605  45 145 245 345   -  - 245 45 345 45
31606  60 160 260 360 160 60 260 60 360 60
31607  75 175 275 375   -  - 275 75 375 75
31608  90 190 290 390 190 90 290 90 390 90
31609   -   -   -   -   -  -   -  - 305  5
31610   -   -   -   -   -  -   -  - 310 10
31611   -   -   -   -   -  -   -  - 320 20
31612   -   -   -   -   -  -   -  - 325 25
31613   -   -   -   -   -  -   -  - 335 35
31614   -   -   -   -   -  -   -  - 340 40
31615   -   -   -   -   -  -   -  - 350 50
31616   -   -   -   -   -  -   -  - 355 55
31617   -   -   -   -   -  -   -  - 365 65
31618   -   -   -   -   -  -   -  - 370 70
31619   -   -   -   -   -  -   -  - 380 80
31620   -   -   -   -   -  -   -  - 385 85
31621   -   -   -   -   -  -   -  - 395 95
31622}
31623do_execsql_test joinD-1079 {
31624  SELECT t1.*, t2.*, t3.*, t4.*
31625  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31626  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31627  RIGHT JOIN t4 ON t1.d=t4.d
31628  WHERE t2.x>0 AND t4.z>0
31629  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31630} {
31631  30 130 230 330 130 30 230 30 330 30
31632  60 160 260 360 160 60 260 60 360 60
31633  90 190 290 390 190 90 290 90 390 90
31634}
31635do_execsql_test joinD-1080 {
31636  SELECT t1.*, t2.*, t3.*, t4.*
31637  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31638  RIGHT JOIN t3 ON t1.c=t3.c
31639  RIGHT JOIN t4 ON t1.d=t4.d
31640  WHERE t4.z>0 AND t3.y>0
31641  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31642} {
31643  15 115 215 315   -  - 215 15 315 15
31644  30 130 230 330 130 30 230 30 330 30
31645  45 145 245 345   -  - 245 45 345 45
31646  60 160 260 360 160 60 260 60 360 60
31647  75 175 275 375   -  - 275 75 375 75
31648  90 190 290 390 190 90 290 90 390 90
31649}
31650do_execsql_test joinD-1081 {
31651  SELECT t1.*, t2.*, t3.*, t4.*
31652  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31653  RIGHT JOIN t3 ON t1.c=t3.c
31654  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31655  WHERE t2.x>0 AND t3.y>0
31656  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31657} {
31658  30 130 230 330 130 30 230 30 330 30
31659  60 160 260 360 160 60 260 60 360 60
31660  90 190 290 390 190 90 290 90 390 90
31661}
31662do_execsql_test joinD-1082 {
31663  SELECT t1.*, t2.*, t3.*, t4.*
31664  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31665  RIGHT JOIN t3 ON t1.c=t3.c
31666  RIGHT JOIN t4 ON t1.d=t4.d
31667  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
31668  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31669} {
31670  30 130 230 330 130 30 230 30 330 30
31671  60 160 260 360 160 60 260 60 360 60
31672  90 190 290 390 190 90 290 90 390 90
31673}
31674do_execsql_test joinD-1083 {
31675  SELECT t1.*, t2.*, t3.*, t4.*
31676  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
31677  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31678  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31679  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31680} {
31681  15 115 215 315   -  - 215 15 315 15
31682  30 130 230 330 130 30 230 30 330 30
31683  45 145 245 345   -  - 245 45 345 45
31684  60 160 260 360 160 60 260 60 360 60
31685  75 175 275 375   -  - 275 75 375 75
31686  90 190 290 390 190 90 290 90 390 90
31687   -   -   -   -   -  -   -  - 300  0
31688   -   -   -   -   -  -   -  - 305  5
31689   -   -   -   -   -  -   -  - 310 10
31690   -   -   -   -   -  -   -  - 320 20
31691   -   -   -   -   -  -   -  - 325 25
31692   -   -   -   -   -  -   -  - 335 35
31693   -   -   -   -   -  -   -  - 340 40
31694   -   -   -   -   -  -   -  - 350 50
31695   -   -   -   -   -  -   -  - 355 55
31696   -   -   -   -   -  -   -  - 365 65
31697   -   -   -   -   -  -   -  - 370 70
31698   -   -   -   -   -  -   -  - 380 80
31699   -   -   -   -   -  -   -  - 385 85
31700   -   -   -   -   -  -   -  - 395 95
31701}
31702do_execsql_test joinD-1084 {
31703  SELECT t1.*, t2.*, t3.*, t4.*
31704  FROM t1 FULL JOIN t2 ON t2.x>0
31705  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31706  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31707  WHERE t1.b = t2.b
31708  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31709} {
31710  30 130 230 330 130 30 230 30 330 30
31711  60 160 260 360 160 60 260 60 360 60
31712  90 190 290 390 190 90 290 90 390 90
31713}
31714do_execsql_test joinD-1085 {
31715  SELECT t1.*, t2.*, t3.*, t4.*
31716  FROM t1 FULL JOIN t2 ON t2.x>0
31717  RIGHT JOIN t3 ON t3.y>0
31718  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31719  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
31720  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31721} {
31722  30 130 230 330 130 30 230 30 330 30
31723  60 160 260 360 160 60 260 60 360 60
31724  90 190 290 390 190 90 290 90 390 90
31725}
31726do_execsql_test joinD-1086 {
31727  SELECT t1.*, t2.*, t3.*, t4.*
31728  FROM t1 FULL JOIN t2 ON t2.x>0
31729  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31730  RIGHT JOIN t4 ON t4.z>0
31731  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
31732  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31733} {
31734  30 130 230 330 130 30 230 30 330 30
31735  60 160 260 360 160 60 260 60 360 60
31736  90 190 290 390 190 90 290 90 390 90
31737}
31738do_execsql_test joinD-1087 {
31739  SELECT t1.*, t2.*, t3.*, t4.*
31740  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31741  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
31742  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31743  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31744} {
31745  15 115 215 315   -  - 215 15 315 15
31746  30 130 230 330 130 30 230 30 330 30
31747  45 145 245 345   -  - 245 45 345 45
31748  60 160 260 360 160 60 260 60 360 60
31749  75 175 275 375   -  - 275 75 375 75
31750  90 190 290 390 190 90 290 90 390 90
31751   -   -   -   -   -  -   -  - 300  0
31752   -   -   -   -   -  -   -  - 305  5
31753   -   -   -   -   -  -   -  - 310 10
31754   -   -   -   -   -  -   -  - 320 20
31755   -   -   -   -   -  -   -  - 325 25
31756   -   -   -   -   -  -   -  - 335 35
31757   -   -   -   -   -  -   -  - 340 40
31758   -   -   -   -   -  -   -  - 350 50
31759   -   -   -   -   -  -   -  - 355 55
31760   -   -   -   -   -  -   -  - 365 65
31761   -   -   -   -   -  -   -  - 370 70
31762   -   -   -   -   -  -   -  - 380 80
31763   -   -   -   -   -  -   -  - 385 85
31764   -   -   -   -   -  -   -  - 395 95
31765}
31766do_execsql_test joinD-1088 {
31767  SELECT t1.*, t2.*, t3.*, t4.*
31768  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31769  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31770  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31771  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31772} {
31773   3 103 203 303   -  - 203  3   -  -
31774   6 106 206 306 106  6 206  6   -  -
31775   9 109 209 309   -  - 209  9   -  -
31776  12 112 212 312 112 12 212 12   -  -
31777  15 115 215 315   -  - 215 15 315 15
31778  18 118 218 318 118 18 218 18   -  -
31779  21 121 221 321   -  - 221 21   -  -
31780  24 124 224 324 124 24 224 24   -  -
31781  27 127 227 327   -  - 227 27   -  -
31782  30 130 230 330 130 30 230 30 330 30
31783  33 133 233 333   -  - 233 33   -  -
31784  36 136 236 336 136 36 236 36   -  -
31785  39 139 239 339   -  - 239 39   -  -
31786  42 142 242 342 142 42 242 42   -  -
31787  45 145 245 345   -  - 245 45 345 45
31788  48 148 248 348 148 48 248 48   -  -
31789  51 151 251 351   -  - 251 51   -  -
31790  54 154 254 354 154 54 254 54   -  -
31791  57 157 257 357   -  - 257 57   -  -
31792  60 160 260 360 160 60 260 60 360 60
31793  63 163 263 363   -  - 263 63   -  -
31794  66 166 266 366 166 66 266 66   -  -
31795  69 169 269 369   -  - 269 69   -  -
31796  72 172 272 372 172 72 272 72   -  -
31797  75 175 275 375   -  - 275 75 375 75
31798  78 178 278 378 178 78 278 78   -  -
31799  81 181 281 381   -  - 281 81   -  -
31800  84 184 284 384 184 84 284 84   -  -
31801  87 187 287 387   -  - 287 87   -  -
31802  90 190 290 390 190 90 290 90 390 90
31803  93 193 293 393   -  - 293 93   -  -
31804   -   -   -   -   -  - 200  0   -  -
31805   -   -   -   -   -  -   -  - 300  0
31806   -   -   -   -   -  -   -  - 305  5
31807   -   -   -   -   -  -   -  - 310 10
31808   -   -   -   -   -  -   -  - 320 20
31809   -   -   -   -   -  -   -  - 325 25
31810   -   -   -   -   -  -   -  - 335 35
31811   -   -   -   -   -  -   -  - 340 40
31812   -   -   -   -   -  -   -  - 350 50
31813   -   -   -   -   -  -   -  - 355 55
31814   -   -   -   -   -  -   -  - 365 65
31815   -   -   -   -   -  -   -  - 370 70
31816   -   -   -   -   -  -   -  - 380 80
31817   -   -   -   -   -  -   -  - 385 85
31818   -   -   -   -   -  -   -  - 395 95
31819}
31820do_execsql_test joinD-1089 {
31821  SELECT t1.*, t2.*, t3.*, t4.*
31822  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31823  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31824  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31825  WHERE t2.x>0
31826  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31827} {
31828   6 106 206 306 106  6 206  6   -  -
31829  12 112 212 312 112 12 212 12   -  -
31830  18 118 218 318 118 18 218 18   -  -
31831  24 124 224 324 124 24 224 24   -  -
31832  30 130 230 330 130 30 230 30 330 30
31833  36 136 236 336 136 36 236 36   -  -
31834  42 142 242 342 142 42 242 42   -  -
31835  48 148 248 348 148 48 248 48   -  -
31836  54 154 254 354 154 54 254 54   -  -
31837  60 160 260 360 160 60 260 60 360 60
31838  66 166 266 366 166 66 266 66   -  -
31839  72 172 272 372 172 72 272 72   -  -
31840  78 178 278 378 178 78 278 78   -  -
31841  84 184 284 384 184 84 284 84   -  -
31842  90 190 290 390 190 90 290 90 390 90
31843}
31844do_execsql_test joinD-1090 {
31845  SELECT t1.*, t2.*, t3.*, t4.*
31846  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31847  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31848  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31849  WHERE (t2.x>0 OR t2.x IS NULL)
31850  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31851} {
31852   3 103 203 303   -  - 203  3   -  -
31853   6 106 206 306 106  6 206  6   -  -
31854   9 109 209 309   -  - 209  9   -  -
31855  12 112 212 312 112 12 212 12   -  -
31856  15 115 215 315   -  - 215 15 315 15
31857  18 118 218 318 118 18 218 18   -  -
31858  21 121 221 321   -  - 221 21   -  -
31859  24 124 224 324 124 24 224 24   -  -
31860  27 127 227 327   -  - 227 27   -  -
31861  30 130 230 330 130 30 230 30 330 30
31862  33 133 233 333   -  - 233 33   -  -
31863  36 136 236 336 136 36 236 36   -  -
31864  39 139 239 339   -  - 239 39   -  -
31865  42 142 242 342 142 42 242 42   -  -
31866  45 145 245 345   -  - 245 45 345 45
31867  48 148 248 348 148 48 248 48   -  -
31868  51 151 251 351   -  - 251 51   -  -
31869  54 154 254 354 154 54 254 54   -  -
31870  57 157 257 357   -  - 257 57   -  -
31871  60 160 260 360 160 60 260 60 360 60
31872  63 163 263 363   -  - 263 63   -  -
31873  66 166 266 366 166 66 266 66   -  -
31874  69 169 269 369   -  - 269 69   -  -
31875  72 172 272 372 172 72 272 72   -  -
31876  75 175 275 375   -  - 275 75 375 75
31877  78 178 278 378 178 78 278 78   -  -
31878  81 181 281 381   -  - 281 81   -  -
31879  84 184 284 384 184 84 284 84   -  -
31880  87 187 287 387   -  - 287 87   -  -
31881  90 190 290 390 190 90 290 90 390 90
31882  93 193 293 393   -  - 293 93   -  -
31883   -   -   -   -   -  - 200  0   -  -
31884   -   -   -   -   -  -   -  - 300  0
31885   -   -   -   -   -  -   -  - 305  5
31886   -   -   -   -   -  -   -  - 310 10
31887   -   -   -   -   -  -   -  - 320 20
31888   -   -   -   -   -  -   -  - 325 25
31889   -   -   -   -   -  -   -  - 335 35
31890   -   -   -   -   -  -   -  - 340 40
31891   -   -   -   -   -  -   -  - 350 50
31892   -   -   -   -   -  -   -  - 355 55
31893   -   -   -   -   -  -   -  - 365 65
31894   -   -   -   -   -  -   -  - 370 70
31895   -   -   -   -   -  -   -  - 380 80
31896   -   -   -   -   -  -   -  - 385 85
31897   -   -   -   -   -  -   -  - 395 95
31898}
31899do_execsql_test joinD-1091 {
31900  SELECT t1.*, t2.*, t3.*, t4.*
31901  FROM t1 FULL JOIN t2 ON true
31902  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31903  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31904  WHERE t1.b=t2.b AND t2.x>0
31905  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31906} {
31907   6 106 206 306 106  6 206  6   -  -
31908  12 112 212 312 112 12 212 12   -  -
31909  18 118 218 318 118 18 218 18   -  -
31910  24 124 224 324 124 24 224 24   -  -
31911  30 130 230 330 130 30 230 30 330 30
31912  36 136 236 336 136 36 236 36   -  -
31913  42 142 242 342 142 42 242 42   -  -
31914  48 148 248 348 148 48 248 48   -  -
31915  54 154 254 354 154 54 254 54   -  -
31916  60 160 260 360 160 60 260 60 360 60
31917  66 166 266 366 166 66 266 66   -  -
31918  72 172 272 372 172 72 272 72   -  -
31919  78 178 278 378 178 78 278 78   -  -
31920  84 184 284 384 184 84 284 84   -  -
31921  90 190 290 390 190 90 290 90 390 90
31922}
31923do_execsql_test joinD-1092 {
31924  SELECT t1.*, t2.*, t3.*, t4.*
31925  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31926  RIGHT JOIN t3 ON t1.c=t3.c
31927  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31928  WHERE t3.y>0
31929  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31930} {
31931   3 103 203 303   -  - 203  3   -  -
31932   6 106 206 306 106  6 206  6   -  -
31933   9 109 209 309   -  - 209  9   -  -
31934  12 112 212 312 112 12 212 12   -  -
31935  15 115 215 315   -  - 215 15 315 15
31936  18 118 218 318 118 18 218 18   -  -
31937  21 121 221 321   -  - 221 21   -  -
31938  24 124 224 324 124 24 224 24   -  -
31939  27 127 227 327   -  - 227 27   -  -
31940  30 130 230 330 130 30 230 30 330 30
31941  33 133 233 333   -  - 233 33   -  -
31942  36 136 236 336 136 36 236 36   -  -
31943  39 139 239 339   -  - 239 39   -  -
31944  42 142 242 342 142 42 242 42   -  -
31945  45 145 245 345   -  - 245 45 345 45
31946  48 148 248 348 148 48 248 48   -  -
31947  51 151 251 351   -  - 251 51   -  -
31948  54 154 254 354 154 54 254 54   -  -
31949  57 157 257 357   -  - 257 57   -  -
31950  60 160 260 360 160 60 260 60 360 60
31951  63 163 263 363   -  - 263 63   -  -
31952  66 166 266 366 166 66 266 66   -  -
31953  69 169 269 369   -  - 269 69   -  -
31954  72 172 272 372 172 72 272 72   -  -
31955  75 175 275 375   -  - 275 75 375 75
31956  78 178 278 378 178 78 278 78   -  -
31957  81 181 281 381   -  - 281 81   -  -
31958  84 184 284 384 184 84 284 84   -  -
31959  87 187 287 387   -  - 287 87   -  -
31960  90 190 290 390 190 90 290 90 390 90
31961  93 193 293 393   -  - 293 93   -  -
31962}
31963do_execsql_test joinD-1093 {
31964  SELECT t1.*, t2.*, t3.*, t4.*
31965  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31966  RIGHT JOIN t3 ON t1.c=t3.c
31967  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31968  WHERE t3.y>0 OR t3.y IS NULL
31969  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31970} {
31971   3 103 203 303   -  - 203  3   -  -
31972   6 106 206 306 106  6 206  6   -  -
31973   9 109 209 309   -  - 209  9   -  -
31974  12 112 212 312 112 12 212 12   -  -
31975  15 115 215 315   -  - 215 15 315 15
31976  18 118 218 318 118 18 218 18   -  -
31977  21 121 221 321   -  - 221 21   -  -
31978  24 124 224 324 124 24 224 24   -  -
31979  27 127 227 327   -  - 227 27   -  -
31980  30 130 230 330 130 30 230 30 330 30
31981  33 133 233 333   -  - 233 33   -  -
31982  36 136 236 336 136 36 236 36   -  -
31983  39 139 239 339   -  - 239 39   -  -
31984  42 142 242 342 142 42 242 42   -  -
31985  45 145 245 345   -  - 245 45 345 45
31986  48 148 248 348 148 48 248 48   -  -
31987  51 151 251 351   -  - 251 51   -  -
31988  54 154 254 354 154 54 254 54   -  -
31989  57 157 257 357   -  - 257 57   -  -
31990  60 160 260 360 160 60 260 60 360 60
31991  63 163 263 363   -  - 263 63   -  -
31992  66 166 266 366 166 66 266 66   -  -
31993  69 169 269 369   -  - 269 69   -  -
31994  72 172 272 372 172 72 272 72   -  -
31995  75 175 275 375   -  - 275 75 375 75
31996  78 178 278 378 178 78 278 78   -  -
31997  81 181 281 381   -  - 281 81   -  -
31998  84 184 284 384 184 84 284 84   -  -
31999  87 187 287 387   -  - 287 87   -  -
32000  90 190 290 390 190 90 290 90 390 90
32001  93 193 293 393   -  - 293 93   -  -
32002   -   -   -   -   -  -   -  - 300  0
32003   -   -   -   -   -  -   -  - 305  5
32004   -   -   -   -   -  -   -  - 310 10
32005   -   -   -   -   -  -   -  - 320 20
32006   -   -   -   -   -  -   -  - 325 25
32007   -   -   -   -   -  -   -  - 335 35
32008   -   -   -   -   -  -   -  - 340 40
32009   -   -   -   -   -  -   -  - 350 50
32010   -   -   -   -   -  -   -  - 355 55
32011   -   -   -   -   -  -   -  - 365 65
32012   -   -   -   -   -  -   -  - 370 70
32013   -   -   -   -   -  -   -  - 380 80
32014   -   -   -   -   -  -   -  - 385 85
32015   -   -   -   -   -  -   -  - 395 95
32016}
32017do_execsql_test joinD-1094 {
32018  SELECT t1.*, t2.*, t3.*, t4.*
32019  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32020  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
32021  FULL JOIN t4 ON t1.d=t4.d
32022  WHERE t4.z>0
32023  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32024} {
32025  15 115 215 315   -  - 215 15 315 15
32026  30 130 230 330 130 30 230 30 330 30
32027  45 145 245 345   -  - 245 45 345 45
32028  60 160 260 360 160 60 260 60 360 60
32029  75 175 275 375   -  - 275 75 375 75
32030  90 190 290 390 190 90 290 90 390 90
32031   -   -   -   -   -  -   -  - 305  5
32032   -   -   -   -   -  -   -  - 310 10
32033   -   -   -   -   -  -   -  - 320 20
32034   -   -   -   -   -  -   -  - 325 25
32035   -   -   -   -   -  -   -  - 335 35
32036   -   -   -   -   -  -   -  - 340 40
32037   -   -   -   -   -  -   -  - 350 50
32038   -   -   -   -   -  -   -  - 355 55
32039   -   -   -   -   -  -   -  - 365 65
32040   -   -   -   -   -  -   -  - 370 70
32041   -   -   -   -   -  -   -  - 380 80
32042   -   -   -   -   -  -   -  - 385 85
32043   -   -   -   -   -  -   -  - 395 95
32044}
32045do_execsql_test joinD-1095 {
32046  SELECT t1.*, t2.*, t3.*, t4.*
32047  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32048  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
32049  FULL JOIN t4 ON t1.d=t4.d
32050  WHERE t4.z IS NULL OR t4.z>0
32051  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32052} {
32053   3 103 203 303   -  - 203  3   -  -
32054   6 106 206 306 106  6 206  6   -  -
32055   9 109 209 309   -  - 209  9   -  -
32056  12 112 212 312 112 12 212 12   -  -
32057  15 115 215 315   -  - 215 15 315 15
32058  18 118 218 318 118 18 218 18   -  -
32059  21 121 221 321   -  - 221 21   -  -
32060  24 124 224 324 124 24 224 24   -  -
32061  27 127 227 327   -  - 227 27   -  -
32062  30 130 230 330 130 30 230 30 330 30
32063  33 133 233 333   -  - 233 33   -  -
32064  36 136 236 336 136 36 236 36   -  -
32065  39 139 239 339   -  - 239 39   -  -
32066  42 142 242 342 142 42 242 42   -  -
32067  45 145 245 345   -  - 245 45 345 45
32068  48 148 248 348 148 48 248 48   -  -
32069  51 151 251 351   -  - 251 51   -  -
32070  54 154 254 354 154 54 254 54   -  -
32071  57 157 257 357   -  - 257 57   -  -
32072  60 160 260 360 160 60 260 60 360 60
32073  63 163 263 363   -  - 263 63   -  -
32074  66 166 266 366 166 66 266 66   -  -
32075  69 169 269 369   -  - 269 69   -  -
32076  72 172 272 372 172 72 272 72   -  -
32077  75 175 275 375   -  - 275 75 375 75
32078  78 178 278 378 178 78 278 78   -  -
32079  81 181 281 381   -  - 281 81   -  -
32080  84 184 284 384 184 84 284 84   -  -
32081  87 187 287 387   -  - 287 87   -  -
32082  90 190 290 390 190 90 290 90 390 90
32083  93 193 293 393   -  - 293 93   -  -
32084   -   -   -   -   -  - 200  0   -  -
32085   -   -   -   -   -  -   -  - 305  5
32086   -   -   -   -   -  -   -  - 310 10
32087   -   -   -   -   -  -   -  - 320 20
32088   -   -   -   -   -  -   -  - 325 25
32089   -   -   -   -   -  -   -  - 335 35
32090   -   -   -   -   -  -   -  - 340 40
32091   -   -   -   -   -  -   -  - 350 50
32092   -   -   -   -   -  -   -  - 355 55
32093   -   -   -   -   -  -   -  - 365 65
32094   -   -   -   -   -  -   -  - 370 70
32095   -   -   -   -   -  -   -  - 380 80
32096   -   -   -   -   -  -   -  - 385 85
32097   -   -   -   -   -  -   -  - 395 95
32098}
32099do_execsql_test joinD-1096 {
32100  SELECT t1.*, t2.*, t3.*, t4.*
32101  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32102  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
32103  FULL JOIN t4 ON t1.d=t4.d
32104  WHERE t2.x>0 AND t4.z>0
32105  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32106} {
32107  30 130 230 330 130 30 230 30 330 30
32108  60 160 260 360 160 60 260 60 360 60
32109  90 190 290 390 190 90 290 90 390 90
32110}
32111do_execsql_test joinD-1097 {
32112  SELECT t1.*, t2.*, t3.*, t4.*
32113  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32114  RIGHT JOIN t3 ON t1.c=t3.c
32115  FULL JOIN t4 ON t1.d=t4.d
32116  WHERE t4.z>0 AND t3.y>0
32117  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32118} {
32119  15 115 215 315   -  - 215 15 315 15
32120  30 130 230 330 130 30 230 30 330 30
32121  45 145 245 345   -  - 245 45 345 45
32122  60 160 260 360 160 60 260 60 360 60
32123  75 175 275 375   -  - 275 75 375 75
32124  90 190 290 390 190 90 290 90 390 90
32125}
32126do_execsql_test joinD-1098 {
32127  SELECT t1.*, t2.*, t3.*, t4.*
32128  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32129  RIGHT JOIN t3 ON t1.c=t3.c
32130  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
32131  WHERE t2.x>0 AND t3.y>0
32132  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32133} {
32134   6 106 206 306 106  6 206  6   -  -
32135  12 112 212 312 112 12 212 12   -  -
32136  18 118 218 318 118 18 218 18   -  -
32137  24 124 224 324 124 24 224 24   -  -
32138  30 130 230 330 130 30 230 30 330 30
32139  36 136 236 336 136 36 236 36   -  -
32140  42 142 242 342 142 42 242 42   -  -
32141  48 148 248 348 148 48 248 48   -  -
32142  54 154 254 354 154 54 254 54   -  -
32143  60 160 260 360 160 60 260 60 360 60
32144  66 166 266 366 166 66 266 66   -  -
32145  72 172 272 372 172 72 272 72   -  -
32146  78 178 278 378 178 78 278 78   -  -
32147  84 184 284 384 184 84 284 84   -  -
32148  90 190 290 390 190 90 290 90 390 90
32149}
32150do_execsql_test joinD-1099 {
32151  SELECT t1.*, t2.*, t3.*, t4.*
32152  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32153  RIGHT JOIN t3 ON t1.c=t3.c
32154  FULL JOIN t4 ON t1.d=t4.d
32155  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
32156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32157} {
32158  30 130 230 330 130 30 230 30 330 30
32159  60 160 260 360 160 60 260 60 360 60
32160  90 190 290 390 190 90 290 90 390 90
32161}
32162do_execsql_test joinD-1100 {
32163  SELECT t1.*, t2.*, t3.*, t4.*
32164  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
32165  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
32166  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
32167  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32168} {
32169   3 103 203 303   -  - 203  3   -  -
32170   6 106 206 306 106  6 206  6   -  -
32171   9 109 209 309   -  - 209  9   -  -
32172  12 112 212 312 112 12 212 12   -  -
32173  15 115 215 315   -  - 215 15 315 15
32174  18 118 218 318 118 18 218 18   -  -
32175  21 121 221 321   -  - 221 21   -  -
32176  24 124 224 324 124 24 224 24   -  -
32177  27 127 227 327   -  - 227 27   -  -
32178  30 130 230 330 130 30 230 30 330 30
32179  33 133 233 333   -  - 233 33   -  -
32180  36 136 236 336 136 36 236 36   -  -
32181  39 139 239 339   -  - 239 39   -  -
32182  42 142 242 342 142 42 242 42   -  -
32183  45 145 245 345   -  - 245 45 345 45
32184  48 148 248 348 148 48 248 48   -  -
32185  51 151 251 351   -  - 251 51   -  -
32186  54 154 254 354 154 54 254 54   -  -
32187  57 157 257 357   -  - 257 57   -  -
32188  60 160 260 360 160 60 260 60 360 60
32189  63 163 263 363   -  - 263 63   -  -
32190  66 166 266 366 166 66 266 66   -  -
32191  69 169 269 369   -  - 269 69   -  -
32192  72 172 272 372 172 72 272 72   -  -
32193  75 175 275 375   -  - 275 75 375 75
32194  78 178 278 378 178 78 278 78   -  -
32195  81 181 281 381   -  - 281 81   -  -
32196  84 184 284 384 184 84 284 84   -  -
32197  87 187 287 387   -  - 287 87   -  -
32198  90 190 290 390 190 90 290 90 390 90
32199  93 193 293 393   -  - 293 93   -  -
32200   -   -   -   -   -  - 200  0   -  -
32201   -   -   -   -   -  -   -  - 300  0
32202   -   -   -   -   -  -   -  - 305  5
32203   -   -   -   -   -  -   -  - 310 10
32204   -   -   -   -   -  -   -  - 320 20
32205   -   -   -   -   -  -   -  - 325 25
32206   -   -   -   -   -  -   -  - 335 35
32207   -   -   -   -   -  -   -  - 340 40
32208   -   -   -   -   -  -   -  - 350 50
32209   -   -   -   -   -  -   -  - 355 55
32210   -   -   -   -   -  -   -  - 365 65
32211   -   -   -   -   -  -   -  - 370 70
32212   -   -   -   -   -  -   -  - 380 80
32213   -   -   -   -   -  -   -  - 385 85
32214   -   -   -   -   -  -   -  - 395 95
32215}
32216do_execsql_test joinD-1101 {
32217  SELECT t1.*, t2.*, t3.*, t4.*
32218  FROM t1 FULL JOIN t2 ON t2.x>0
32219  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
32220  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
32221  WHERE t1.b = t2.b
32222  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32223} {
32224   6 106 206 306 106  6 206  6   -  -
32225  12 112 212 312 112 12 212 12   -  -
32226  18 118 218 318 118 18 218 18   -  -
32227  24 124 224 324 124 24 224 24   -  -
32228  30 130 230 330 130 30 230 30 330 30
32229  36 136 236 336 136 36 236 36   -  -
32230  42 142 242 342 142 42 242 42   -  -
32231  48 148 248 348 148 48 248 48   -  -
32232  54 154 254 354 154 54 254 54   -  -
32233  60 160 260 360 160 60 260 60 360 60
32234  66 166 266 366 166 66 266 66   -  -
32235  72 172 272 372 172 72 272 72   -  -
32236  78 178 278 378 178 78 278 78   -  -
32237  84 184 284 384 184 84 284 84   -  -
32238  90 190 290 390 190 90 290 90 390 90
32239}
32240do_execsql_test joinD-1102 {
32241  SELECT t1.*, t2.*, t3.*, t4.*
32242  FROM t1 FULL JOIN t2 ON t2.x>0
32243  RIGHT JOIN t3 ON t3.y>0
32244  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
32245  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
32246  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32247} {
32248   6 106 206 306 106  6 206  6   -  -
32249  12 112 212 312 112 12 212 12   -  -
32250  18 118 218 318 118 18 218 18   -  -
32251  24 124 224 324 124 24 224 24   -  -
32252  30 130 230 330 130 30 230 30 330 30
32253  36 136 236 336 136 36 236 36   -  -
32254  42 142 242 342 142 42 242 42   -  -
32255  48 148 248 348 148 48 248 48   -  -
32256  54 154 254 354 154 54 254 54   -  -
32257  60 160 260 360 160 60 260 60 360 60
32258  66 166 266 366 166 66 266 66   -  -
32259  72 172 272 372 172 72 272 72   -  -
32260  78 178 278 378 178 78 278 78   -  -
32261  84 184 284 384 184 84 284 84   -  -
32262  90 190 290 390 190 90 290 90 390 90
32263}
32264do_execsql_test joinD-1103 {
32265  SELECT t1.*, t2.*, t3.*, t4.*
32266  FROM t1 FULL JOIN t2 ON t2.x>0
32267  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
32268  FULL JOIN t4 ON t4.z>0
32269  WHERE t1.b = t2.b AND t1.d = t4.d
32270  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32271} {
32272  30 130 230 330 130 30 230 30 330 30
32273  60 160 260 360 160 60 260 60 360 60
32274  90 190 290 390 190 90 290 90 390 90
32275}
32276do_execsql_test joinD-1104 {
32277  SELECT t1.*, t2.*, t3.*, t4.*
32278  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32279  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
32280  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
32281  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32282} {
32283   3 103 203 303   -  - 203  3   -  -
32284   6 106 206 306 106  6 206  6   -  -
32285   9 109 209 309   -  - 209  9   -  -
32286  12 112 212 312 112 12 212 12   -  -
32287  15 115 215 315   -  - 215 15 315 15
32288  18 118 218 318 118 18 218 18   -  -
32289  21 121 221 321   -  - 221 21   -  -
32290  24 124 224 324 124 24 224 24   -  -
32291  27 127 227 327   -  - 227 27   -  -
32292  30 130 230 330 130 30 230 30 330 30
32293  33 133 233 333   -  - 233 33   -  -
32294  36 136 236 336 136 36 236 36   -  -
32295  39 139 239 339   -  - 239 39   -  -
32296  42 142 242 342 142 42 242 42   -  -
32297  45 145 245 345   -  - 245 45 345 45
32298  48 148 248 348 148 48 248 48   -  -
32299  51 151 251 351   -  - 251 51   -  -
32300  54 154 254 354 154 54 254 54   -  -
32301  57 157 257 357   -  - 257 57   -  -
32302  60 160 260 360 160 60 260 60 360 60
32303  63 163 263 363   -  - 263 63   -  -
32304  66 166 266 366 166 66 266 66   -  -
32305  69 169 269 369   -  - 269 69   -  -
32306  72 172 272 372 172 72 272 72   -  -
32307  75 175 275 375   -  - 275 75 375 75
32308  78 178 278 378 178 78 278 78   -  -
32309  81 181 281 381   -  - 281 81   -  -
32310  84 184 284 384 184 84 284 84   -  -
32311  87 187 287 387   -  - 287 87   -  -
32312  90 190 290 390 190 90 290 90 390 90
32313  93 193 293 393   -  - 293 93   -  -
32314   -   -   -   -   -  - 200  0   -  -
32315   -   -   -   -   -  -   -  - 300  0
32316   -   -   -   -   -  -   -  - 305  5
32317   -   -   -   -   -  -   -  - 310 10
32318   -   -   -   -   -  -   -  - 320 20
32319   -   -   -   -   -  -   -  - 325 25
32320   -   -   -   -   -  -   -  - 335 35
32321   -   -   -   -   -  -   -  - 340 40
32322   -   -   -   -   -  -   -  - 350 50
32323   -   -   -   -   -  -   -  - 355 55
32324   -   -   -   -   -  -   -  - 365 65
32325   -   -   -   -   -  -   -  - 370 70
32326   -   -   -   -   -  -   -  - 380 80
32327   -   -   -   -   -  -   -  - 385 85
32328   -   -   -   -   -  -   -  - 395 95
32329}
32330do_execsql_test joinD-1105 {
32331  SELECT t1.*, t2.*, t3.*, t4.*
32332  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32333  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32334  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32335  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32336} {
32337   5 105 205 305   -  -   -  - 305  5
32338  10 110 210 310 110 10   -  - 310 10
32339  15 115 215 315   -  - 215 15 315 15
32340  20 120 220 320 120 20   -  - 320 20
32341  25 125 225 325   -  -   -  - 325 25
32342  30 130 230 330 130 30 230 30 330 30
32343  35 135 235 335   -  -   -  - 335 35
32344  40 140 240 340 140 40   -  - 340 40
32345  45 145 245 345   -  - 245 45 345 45
32346  50 150 250 350 150 50   -  - 350 50
32347  55 155 255 355   -  -   -  - 355 55
32348  60 160 260 360 160 60 260 60 360 60
32349  65 165 265 365   -  -   -  - 365 65
32350  70 170 270 370 170 70   -  - 370 70
32351  75 175 275 375   -  - 275 75 375 75
32352  80 180 280 380 180 80   -  - 380 80
32353  85 185 285 385   -  -   -  - 385 85
32354  90 190 290 390 190 90 290 90 390 90
32355  95 195 295 395   -  -   -  - 395 95
32356}
32357do_execsql_test joinD-1106 {
32358  SELECT t1.*, t2.*, t3.*, t4.*
32359  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32360  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32361  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32362  WHERE t2.x>0
32363  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32364} {
32365  10 110 210 310 110 10   -  - 310 10
32366  20 120 220 320 120 20   -  - 320 20
32367  30 130 230 330 130 30 230 30 330 30
32368  40 140 240 340 140 40   -  - 340 40
32369  50 150 250 350 150 50   -  - 350 50
32370  60 160 260 360 160 60 260 60 360 60
32371  70 170 270 370 170 70   -  - 370 70
32372  80 180 280 380 180 80   -  - 380 80
32373  90 190 290 390 190 90 290 90 390 90
32374}
32375do_execsql_test joinD-1107 {
32376  SELECT t1.*, t2.*, t3.*, t4.*
32377  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32378  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32379  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32380  WHERE (t2.x>0 OR t2.x IS NULL)
32381  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32382} {
32383   5 105 205 305   -  -   -  - 305  5
32384  10 110 210 310 110 10   -  - 310 10
32385  15 115 215 315   -  - 215 15 315 15
32386  20 120 220 320 120 20   -  - 320 20
32387  25 125 225 325   -  -   -  - 325 25
32388  30 130 230 330 130 30 230 30 330 30
32389  35 135 235 335   -  -   -  - 335 35
32390  40 140 240 340 140 40   -  - 340 40
32391  45 145 245 345   -  - 245 45 345 45
32392  50 150 250 350 150 50   -  - 350 50
32393  55 155 255 355   -  -   -  - 355 55
32394  60 160 260 360 160 60 260 60 360 60
32395  65 165 265 365   -  -   -  - 365 65
32396  70 170 270 370 170 70   -  - 370 70
32397  75 175 275 375   -  - 275 75 375 75
32398  80 180 280 380 180 80   -  - 380 80
32399  85 185 285 385   -  -   -  - 385 85
32400  90 190 290 390 190 90 290 90 390 90
32401  95 195 295 395   -  -   -  - 395 95
32402}
32403do_execsql_test joinD-1108 {
32404  SELECT t1.*, t2.*, t3.*, t4.*
32405  FROM t1 FULL JOIN t2 ON true
32406  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32407  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32408  WHERE t1.b=t2.b AND t2.x>0
32409  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32410} {
32411  10 110 210 310 110 10   -  - 310 10
32412  20 120 220 320 120 20   -  - 320 20
32413  30 130 230 330 130 30 230 30 330 30
32414  40 140 240 340 140 40   -  - 340 40
32415  50 150 250 350 150 50   -  - 350 50
32416  60 160 260 360 160 60 260 60 360 60
32417  70 170 270 370 170 70   -  - 370 70
32418  80 180 280 380 180 80   -  - 380 80
32419  90 190 290 390 190 90 290 90 390 90
32420}
32421do_execsql_test joinD-1109 {
32422  SELECT t1.*, t2.*, t3.*, t4.*
32423  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32424  FULL JOIN t3 ON t1.c=t3.c
32425  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32426  WHERE t3.y>0
32427  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32428} {
32429  15 115 215 315   -  - 215 15 315 15
32430  30 130 230 330 130 30 230 30 330 30
32431  45 145 245 345   -  - 245 45 345 45
32432  60 160 260 360 160 60 260 60 360 60
32433  75 175 275 375   -  - 275 75 375 75
32434  90 190 290 390 190 90 290 90 390 90
32435}
32436do_execsql_test joinD-1110 {
32437  SELECT t1.*, t2.*, t3.*, t4.*
32438  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32439  FULL JOIN t3 ON t1.c=t3.c
32440  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32441  WHERE t3.y>0 OR t3.y IS NULL
32442  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32443} {
32444   5 105 205 305   -  -   -  - 305  5
32445  10 110 210 310 110 10   -  - 310 10
32446  15 115 215 315   -  - 215 15 315 15
32447  20 120 220 320 120 20   -  - 320 20
32448  25 125 225 325   -  -   -  - 325 25
32449  30 130 230 330 130 30 230 30 330 30
32450  35 135 235 335   -  -   -  - 335 35
32451  40 140 240 340 140 40   -  - 340 40
32452  45 145 245 345   -  - 245 45 345 45
32453  50 150 250 350 150 50   -  - 350 50
32454  55 155 255 355   -  -   -  - 355 55
32455  60 160 260 360 160 60 260 60 360 60
32456  65 165 265 365   -  -   -  - 365 65
32457  70 170 270 370 170 70   -  - 370 70
32458  75 175 275 375   -  - 275 75 375 75
32459  80 180 280 380 180 80   -  - 380 80
32460  85 185 285 385   -  -   -  - 385 85
32461  90 190 290 390 190 90 290 90 390 90
32462  95 195 295 395   -  -   -  - 395 95
32463}
32464do_execsql_test joinD-1111 {
32465  SELECT t1.*, t2.*, t3.*, t4.*
32466  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32467  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32468  INNER JOIN t4 ON t1.d=t4.d
32469  WHERE t4.z>0
32470  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32471} {
32472   5 105 205 305   -  -   -  - 305  5
32473  10 110 210 310 110 10   -  - 310 10
32474  15 115 215 315   -  - 215 15 315 15
32475  20 120 220 320 120 20   -  - 320 20
32476  25 125 225 325   -  -   -  - 325 25
32477  30 130 230 330 130 30 230 30 330 30
32478  35 135 235 335   -  -   -  - 335 35
32479  40 140 240 340 140 40   -  - 340 40
32480  45 145 245 345   -  - 245 45 345 45
32481  50 150 250 350 150 50   -  - 350 50
32482  55 155 255 355   -  -   -  - 355 55
32483  60 160 260 360 160 60 260 60 360 60
32484  65 165 265 365   -  -   -  - 365 65
32485  70 170 270 370 170 70   -  - 370 70
32486  75 175 275 375   -  - 275 75 375 75
32487  80 180 280 380 180 80   -  - 380 80
32488  85 185 285 385   -  -   -  - 385 85
32489  90 190 290 390 190 90 290 90 390 90
32490  95 195 295 395   -  -   -  - 395 95
32491}
32492do_execsql_test joinD-1112 {
32493  SELECT t1.*, t2.*, t3.*, t4.*
32494  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32495  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32496  INNER JOIN t4 ON t1.d=t4.d
32497  WHERE t4.z IS NULL OR t4.z>0
32498  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32499} {
32500   5 105 205 305   -  -   -  - 305  5
32501  10 110 210 310 110 10   -  - 310 10
32502  15 115 215 315   -  - 215 15 315 15
32503  20 120 220 320 120 20   -  - 320 20
32504  25 125 225 325   -  -   -  - 325 25
32505  30 130 230 330 130 30 230 30 330 30
32506  35 135 235 335   -  -   -  - 335 35
32507  40 140 240 340 140 40   -  - 340 40
32508  45 145 245 345   -  - 245 45 345 45
32509  50 150 250 350 150 50   -  - 350 50
32510  55 155 255 355   -  -   -  - 355 55
32511  60 160 260 360 160 60 260 60 360 60
32512  65 165 265 365   -  -   -  - 365 65
32513  70 170 270 370 170 70   -  - 370 70
32514  75 175 275 375   -  - 275 75 375 75
32515  80 180 280 380 180 80   -  - 380 80
32516  85 185 285 385   -  -   -  - 385 85
32517  90 190 290 390 190 90 290 90 390 90
32518  95 195 295 395   -  -   -  - 395 95
32519}
32520do_execsql_test joinD-1113 {
32521  SELECT t1.*, t2.*, t3.*, t4.*
32522  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32523  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32524  INNER JOIN t4 ON t1.d=t4.d
32525  WHERE t2.x>0 AND t4.z>0
32526  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32527} {
32528  10 110 210 310 110 10   -  - 310 10
32529  20 120 220 320 120 20   -  - 320 20
32530  30 130 230 330 130 30 230 30 330 30
32531  40 140 240 340 140 40   -  - 340 40
32532  50 150 250 350 150 50   -  - 350 50
32533  60 160 260 360 160 60 260 60 360 60
32534  70 170 270 370 170 70   -  - 370 70
32535  80 180 280 380 180 80   -  - 380 80
32536  90 190 290 390 190 90 290 90 390 90
32537}
32538do_execsql_test joinD-1114 {
32539  SELECT t1.*, t2.*, t3.*, t4.*
32540  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32541  FULL JOIN t3 ON t1.c=t3.c
32542  INNER JOIN t4 ON t1.d=t4.d
32543  WHERE t4.z>0 AND t3.y>0
32544  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32545} {
32546  15 115 215 315   -  - 215 15 315 15
32547  30 130 230 330 130 30 230 30 330 30
32548  45 145 245 345   -  - 245 45 345 45
32549  60 160 260 360 160 60 260 60 360 60
32550  75 175 275 375   -  - 275 75 375 75
32551  90 190 290 390 190 90 290 90 390 90
32552}
32553do_execsql_test joinD-1115 {
32554  SELECT t1.*, t2.*, t3.*, t4.*
32555  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32556  FULL JOIN t3 ON t1.c=t3.c
32557  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32558  WHERE t2.x>0 AND t3.y>0
32559  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32560} {
32561  30 130 230 330 130 30 230 30 330 30
32562  60 160 260 360 160 60 260 60 360 60
32563  90 190 290 390 190 90 290 90 390 90
32564}
32565do_execsql_test joinD-1116 {
32566  SELECT t1.*, t2.*, t3.*, t4.*
32567  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32568  FULL JOIN t3 ON t1.c=t3.c
32569  INNER JOIN t4 ON t1.d=t4.d
32570  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
32571  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32572} {
32573  30 130 230 330 130 30 230 30 330 30
32574  60 160 260 360 160 60 260 60 360 60
32575  90 190 290 390 190 90 290 90 390 90
32576}
32577do_execsql_test joinD-1117 {
32578  SELECT t1.*, t2.*, t3.*, t4.*
32579  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
32580  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
32581  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
32582  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32583} {
32584   5 105 205 305   -  -   -  - 305  5
32585  10 110 210 310 110 10   -  - 310 10
32586  15 115 215 315   -  - 215 15 315 15
32587  20 120 220 320 120 20   -  - 320 20
32588  25 125 225 325   -  -   -  - 325 25
32589  30 130 230 330 130 30 230 30 330 30
32590  35 135 235 335   -  -   -  - 335 35
32591  40 140 240 340 140 40   -  - 340 40
32592  45 145 245 345   -  - 245 45 345 45
32593  50 150 250 350 150 50   -  - 350 50
32594  55 155 255 355   -  -   -  - 355 55
32595  60 160 260 360 160 60 260 60 360 60
32596  65 165 265 365   -  -   -  - 365 65
32597  70 170 270 370 170 70   -  - 370 70
32598  75 175 275 375   -  - 275 75 375 75
32599  80 180 280 380 180 80   -  - 380 80
32600  85 185 285 385   -  -   -  - 385 85
32601  90 190 290 390 190 90 290 90 390 90
32602  95 195 295 395   -  -   -  - 395 95
32603}
32604do_execsql_test joinD-1118 {
32605  SELECT t1.*, t2.*, t3.*, t4.*
32606  FROM t1 FULL JOIN t2 ON t2.x>0
32607  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
32608  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
32609  WHERE t1.b = t2.b
32610  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32611} {
32612  10 110 210 310 110 10   -  - 310 10
32613  20 120 220 320 120 20   -  - 320 20
32614  30 130 230 330 130 30 230 30 330 30
32615  40 140 240 340 140 40   -  - 340 40
32616  50 150 250 350 150 50   -  - 350 50
32617  60 160 260 360 160 60 260 60 360 60
32618  70 170 270 370 170 70   -  - 370 70
32619  80 180 280 380 180 80   -  - 380 80
32620  90 190 290 390 190 90 290 90 390 90
32621}
32622do_execsql_test joinD-1119 {
32623  SELECT t1.*, t2.*, t3.*, t4.*
32624  FROM t1 FULL JOIN t2 ON t2.x>0
32625  FULL JOIN t3 ON t3.y>0
32626  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
32627  WHERE t1.b = t2.b AND t1.c = t3.c
32628  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32629} {
32630  30 130 230 330 130 30 230 30 330 30
32631  60 160 260 360 160 60 260 60 360 60
32632  90 190 290 390 190 90 290 90 390 90
32633}
32634do_execsql_test joinD-1120 {
32635  SELECT t1.*, t2.*, t3.*, t4.*
32636  FROM t1 FULL JOIN t2 ON t2.x>0
32637  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
32638  INNER JOIN t4 ON t4.z>0
32639  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
32640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32641} {
32642  10 110 210 310 110 10   -  - 310 10
32643  20 120 220 320 120 20   -  - 320 20
32644  30 130 230 330 130 30 230 30 330 30
32645  40 140 240 340 140 40   -  - 340 40
32646  50 150 250 350 150 50   -  - 350 50
32647  60 160 260 360 160 60 260 60 360 60
32648  70 170 270 370 170 70   -  - 370 70
32649  80 180 280 380 180 80   -  - 380 80
32650  90 190 290 390 190 90 290 90 390 90
32651}
32652do_execsql_test joinD-1121 {
32653  SELECT t1.*, t2.*, t3.*, t4.*
32654  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32655  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32656  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32657  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32658} {
32659   0 100 200 300   -  -   -  -   -  -
32660   1 101 201 301   -  -   -  -   -  -
32661   2 102 202 302 102  2   -  -   -  -
32662   3 103 203 303   -  - 203  3   -  -
32663   4 104 204 304 104  4   -  -   -  -
32664   5 105 205 305   -  -   -  - 305  5
32665   6 106 206 306 106  6 206  6   -  -
32666   7 107 207 307   -  -   -  -   -  -
32667   8 108 208 308 108  8   -  -   -  -
32668   9 109 209 309   -  - 209  9   -  -
32669  10 110 210 310 110 10   -  - 310 10
32670  11 111 211 311   -  -   -  -   -  -
32671  12 112 212 312 112 12 212 12   -  -
32672  13 113 213 313   -  -   -  -   -  -
32673  14 114 214 314 114 14   -  -   -  -
32674  15 115 215 315   -  - 215 15 315 15
32675  16 116 216 316 116 16   -  -   -  -
32676  17 117 217 317   -  -   -  -   -  -
32677  18 118 218 318 118 18 218 18   -  -
32678  19 119 219 319   -  -   -  -   -  -
32679  20 120 220 320 120 20   -  - 320 20
32680  21 121 221 321   -  - 221 21   -  -
32681  22 122 222 322 122 22   -  -   -  -
32682  23 123 223 323   -  -   -  -   -  -
32683  24 124 224 324 124 24 224 24   -  -
32684  25 125 225 325   -  -   -  - 325 25
32685  26 126 226 326 126 26   -  -   -  -
32686  27 127 227 327   -  - 227 27   -  -
32687  28 128 228 328 128 28   -  -   -  -
32688  29 129 229 329   -  -   -  -   -  -
32689  30 130 230 330 130 30 230 30 330 30
32690  31 131 231 331   -  -   -  -   -  -
32691  32 132 232 332 132 32   -  -   -  -
32692  33 133 233 333   -  - 233 33   -  -
32693  34 134 234 334 134 34   -  -   -  -
32694  35 135 235 335   -  -   -  - 335 35
32695  36 136 236 336 136 36 236 36   -  -
32696  37 137 237 337   -  -   -  -   -  -
32697  38 138 238 338 138 38   -  -   -  -
32698  39 139 239 339   -  - 239 39   -  -
32699  40 140 240 340 140 40   -  - 340 40
32700  41 141 241 341   -  -   -  -   -  -
32701  42 142 242 342 142 42 242 42   -  -
32702  43 143 243 343   -  -   -  -   -  -
32703  44 144 244 344 144 44   -  -   -  -
32704  45 145 245 345   -  - 245 45 345 45
32705  46 146 246 346 146 46   -  -   -  -
32706  47 147 247 347   -  -   -  -   -  -
32707  48 148 248 348 148 48 248 48   -  -
32708  49 149 249 349   -  -   -  -   -  -
32709  50 150 250 350 150 50   -  - 350 50
32710  51 151 251 351   -  - 251 51   -  -
32711  52 152 252 352 152 52   -  -   -  -
32712  53 153 253 353   -  -   -  -   -  -
32713  54 154 254 354 154 54 254 54   -  -
32714  55 155 255 355   -  -   -  - 355 55
32715  56 156 256 356 156 56   -  -   -  -
32716  57 157 257 357   -  - 257 57   -  -
32717  58 158 258 358 158 58   -  -   -  -
32718  59 159 259 359   -  -   -  -   -  -
32719  60 160 260 360 160 60 260 60 360 60
32720  61 161 261 361   -  -   -  -   -  -
32721  62 162 262 362 162 62   -  -   -  -
32722  63 163 263 363   -  - 263 63   -  -
32723  64 164 264 364 164 64   -  -   -  -
32724  65 165 265 365   -  -   -  - 365 65
32725  66 166 266 366 166 66 266 66   -  -
32726  67 167 267 367   -  -   -  -   -  -
32727  68 168 268 368 168 68   -  -   -  -
32728  69 169 269 369   -  - 269 69   -  -
32729  70 170 270 370 170 70   -  - 370 70
32730  71 171 271 371   -  -   -  -   -  -
32731  72 172 272 372 172 72 272 72   -  -
32732  73 173 273 373   -  -   -  -   -  -
32733  74 174 274 374 174 74   -  -   -  -
32734  75 175 275 375   -  - 275 75 375 75
32735  76 176 276 376 176 76   -  -   -  -
32736  77 177 277 377   -  -   -  -   -  -
32737  78 178 278 378 178 78 278 78   -  -
32738  79 179 279 379   -  -   -  -   -  -
32739  80 180 280 380 180 80   -  - 380 80
32740  81 181 281 381   -  - 281 81   -  -
32741  82 182 282 382 182 82   -  -   -  -
32742  83 183 283 383   -  -   -  -   -  -
32743  84 184 284 384 184 84 284 84   -  -
32744  85 185 285 385   -  -   -  - 385 85
32745  86 186 286 386 186 86   -  -   -  -
32746  87 187 287 387   -  - 287 87   -  -
32747  88 188 288 388 188 88   -  -   -  -
32748  89 189 289 389   -  -   -  -   -  -
32749  90 190 290 390 190 90 290 90 390 90
32750  91 191 291 391   -  -   -  -   -  -
32751  92 192 292 392 192 92   -  -   -  -
32752  93 193 293 393   -  - 293 93   -  -
32753  94 194 294 394 194 94   -  -   -  -
32754  95 195 295 395   -  -   -  - 395 95
32755  96   - 296 396   -  -   -  -   -  -
32756  97 197   - 397   -  -   -  -   -  -
32757  98 198 298   -   -  -   -  -   -  -
32758  99   -   -   -   -  -   -  -   -  -
32759   -   -   -   - 100  0   -  -   -  -
32760   -   -   -   -   -  - 200  0   -  -
32761}
32762do_execsql_test joinD-1122 {
32763  SELECT t1.*, t2.*, t3.*, t4.*
32764  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32765  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32766  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32767  WHERE t2.x>0
32768  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32769} {
32770   2 102 202 302 102  2   -  -   -  -
32771   4 104 204 304 104  4   -  -   -  -
32772   6 106 206 306 106  6 206  6   -  -
32773   8 108 208 308 108  8   -  -   -  -
32774  10 110 210 310 110 10   -  - 310 10
32775  12 112 212 312 112 12 212 12   -  -
32776  14 114 214 314 114 14   -  -   -  -
32777  16 116 216 316 116 16   -  -   -  -
32778  18 118 218 318 118 18 218 18   -  -
32779  20 120 220 320 120 20   -  - 320 20
32780  22 122 222 322 122 22   -  -   -  -
32781  24 124 224 324 124 24 224 24   -  -
32782  26 126 226 326 126 26   -  -   -  -
32783  28 128 228 328 128 28   -  -   -  -
32784  30 130 230 330 130 30 230 30 330 30
32785  32 132 232 332 132 32   -  -   -  -
32786  34 134 234 334 134 34   -  -   -  -
32787  36 136 236 336 136 36 236 36   -  -
32788  38 138 238 338 138 38   -  -   -  -
32789  40 140 240 340 140 40   -  - 340 40
32790  42 142 242 342 142 42 242 42   -  -
32791  44 144 244 344 144 44   -  -   -  -
32792  46 146 246 346 146 46   -  -   -  -
32793  48 148 248 348 148 48 248 48   -  -
32794  50 150 250 350 150 50   -  - 350 50
32795  52 152 252 352 152 52   -  -   -  -
32796  54 154 254 354 154 54 254 54   -  -
32797  56 156 256 356 156 56   -  -   -  -
32798  58 158 258 358 158 58   -  -   -  -
32799  60 160 260 360 160 60 260 60 360 60
32800  62 162 262 362 162 62   -  -   -  -
32801  64 164 264 364 164 64   -  -   -  -
32802  66 166 266 366 166 66 266 66   -  -
32803  68 168 268 368 168 68   -  -   -  -
32804  70 170 270 370 170 70   -  - 370 70
32805  72 172 272 372 172 72 272 72   -  -
32806  74 174 274 374 174 74   -  -   -  -
32807  76 176 276 376 176 76   -  -   -  -
32808  78 178 278 378 178 78 278 78   -  -
32809  80 180 280 380 180 80   -  - 380 80
32810  82 182 282 382 182 82   -  -   -  -
32811  84 184 284 384 184 84 284 84   -  -
32812  86 186 286 386 186 86   -  -   -  -
32813  88 188 288 388 188 88   -  -   -  -
32814  90 190 290 390 190 90 290 90 390 90
32815  92 192 292 392 192 92   -  -   -  -
32816  94 194 294 394 194 94   -  -   -  -
32817}
32818do_execsql_test joinD-1123 {
32819  SELECT t1.*, t2.*, t3.*, t4.*
32820  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32821  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32822  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32823  WHERE (t2.x>0 OR t2.x IS NULL)
32824  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32825} {
32826   1 101 201 301   -  -   -  -   -  -
32827   2 102 202 302 102  2   -  -   -  -
32828   3 103 203 303   -  - 203  3   -  -
32829   4 104 204 304 104  4   -  -   -  -
32830   5 105 205 305   -  -   -  - 305  5
32831   6 106 206 306 106  6 206  6   -  -
32832   7 107 207 307   -  -   -  -   -  -
32833   8 108 208 308 108  8   -  -   -  -
32834   9 109 209 309   -  - 209  9   -  -
32835  10 110 210 310 110 10   -  - 310 10
32836  11 111 211 311   -  -   -  -   -  -
32837  12 112 212 312 112 12 212 12   -  -
32838  13 113 213 313   -  -   -  -   -  -
32839  14 114 214 314 114 14   -  -   -  -
32840  15 115 215 315   -  - 215 15 315 15
32841  16 116 216 316 116 16   -  -   -  -
32842  17 117 217 317   -  -   -  -   -  -
32843  18 118 218 318 118 18 218 18   -  -
32844  19 119 219 319   -  -   -  -   -  -
32845  20 120 220 320 120 20   -  - 320 20
32846  21 121 221 321   -  - 221 21   -  -
32847  22 122 222 322 122 22   -  -   -  -
32848  23 123 223 323   -  -   -  -   -  -
32849  24 124 224 324 124 24 224 24   -  -
32850  25 125 225 325   -  -   -  - 325 25
32851  26 126 226 326 126 26   -  -   -  -
32852  27 127 227 327   -  - 227 27   -  -
32853  28 128 228 328 128 28   -  -   -  -
32854  29 129 229 329   -  -   -  -   -  -
32855  30 130 230 330 130 30 230 30 330 30
32856  31 131 231 331   -  -   -  -   -  -
32857  32 132 232 332 132 32   -  -   -  -
32858  33 133 233 333   -  - 233 33   -  -
32859  34 134 234 334 134 34   -  -   -  -
32860  35 135 235 335   -  -   -  - 335 35
32861  36 136 236 336 136 36 236 36   -  -
32862  37 137 237 337   -  -   -  -   -  -
32863  38 138 238 338 138 38   -  -   -  -
32864  39 139 239 339   -  - 239 39   -  -
32865  40 140 240 340 140 40   -  - 340 40
32866  41 141 241 341   -  -   -  -   -  -
32867  42 142 242 342 142 42 242 42   -  -
32868  43 143 243 343   -  -   -  -   -  -
32869  44 144 244 344 144 44   -  -   -  -
32870  45 145 245 345   -  - 245 45 345 45
32871  46 146 246 346 146 46   -  -   -  -
32872  47 147 247 347   -  -   -  -   -  -
32873  48 148 248 348 148 48 248 48   -  -
32874  49 149 249 349   -  -   -  -   -  -
32875  50 150 250 350 150 50   -  - 350 50
32876  51 151 251 351   -  - 251 51   -  -
32877  52 152 252 352 152 52   -  -   -  -
32878  53 153 253 353   -  -   -  -   -  -
32879  54 154 254 354 154 54 254 54   -  -
32880  55 155 255 355   -  -   -  - 355 55
32881  56 156 256 356 156 56   -  -   -  -
32882  57 157 257 357   -  - 257 57   -  -
32883  58 158 258 358 158 58   -  -   -  -
32884  59 159 259 359   -  -   -  -   -  -
32885  60 160 260 360 160 60 260 60 360 60
32886  61 161 261 361   -  -   -  -   -  -
32887  62 162 262 362 162 62   -  -   -  -
32888  63 163 263 363   -  - 263 63   -  -
32889  64 164 264 364 164 64   -  -   -  -
32890  65 165 265 365   -  -   -  - 365 65
32891  66 166 266 366 166 66 266 66   -  -
32892  67 167 267 367   -  -   -  -   -  -
32893  68 168 268 368 168 68   -  -   -  -
32894  69 169 269 369   -  - 269 69   -  -
32895  70 170 270 370 170 70   -  - 370 70
32896  71 171 271 371   -  -   -  -   -  -
32897  72 172 272 372 172 72 272 72   -  -
32898  73 173 273 373   -  -   -  -   -  -
32899  74 174 274 374 174 74   -  -   -  -
32900  75 175 275 375   -  - 275 75 375 75
32901  76 176 276 376 176 76   -  -   -  -
32902  77 177 277 377   -  -   -  -   -  -
32903  78 178 278 378 178 78 278 78   -  -
32904  79 179 279 379   -  -   -  -   -  -
32905  80 180 280 380 180 80   -  - 380 80
32906  81 181 281 381   -  - 281 81   -  -
32907  82 182 282 382 182 82   -  -   -  -
32908  83 183 283 383   -  -   -  -   -  -
32909  84 184 284 384 184 84 284 84   -  -
32910  85 185 285 385   -  -   -  - 385 85
32911  86 186 286 386 186 86   -  -   -  -
32912  87 187 287 387   -  - 287 87   -  -
32913  88 188 288 388 188 88   -  -   -  -
32914  89 189 289 389   -  -   -  -   -  -
32915  90 190 290 390 190 90 290 90 390 90
32916  91 191 291 391   -  -   -  -   -  -
32917  92 192 292 392 192 92   -  -   -  -
32918  93 193 293 393   -  - 293 93   -  -
32919  94 194 294 394 194 94   -  -   -  -
32920  95 195 295 395   -  -   -  - 395 95
32921  96   - 296 396   -  -   -  -   -  -
32922  97 197   - 397   -  -   -  -   -  -
32923  98 198 298   -   -  -   -  -   -  -
32924  99   -   -   -   -  -   -  -   -  -
32925   -   -   -   -   -  - 200  0   -  -
32926}
32927do_execsql_test joinD-1124 {
32928  SELECT t1.*, t2.*, t3.*, t4.*
32929  FROM t1 FULL JOIN t2 ON true
32930  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32931  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32932  WHERE t1.b=t2.b AND t2.x>0
32933  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32934} {
32935   2 102 202 302 102  2   -  -   -  -
32936   4 104 204 304 104  4   -  -   -  -
32937   6 106 206 306 106  6 206  6   -  -
32938   8 108 208 308 108  8   -  -   -  -
32939  10 110 210 310 110 10   -  - 310 10
32940  12 112 212 312 112 12 212 12   -  -
32941  14 114 214 314 114 14   -  -   -  -
32942  16 116 216 316 116 16   -  -   -  -
32943  18 118 218 318 118 18 218 18   -  -
32944  20 120 220 320 120 20   -  - 320 20
32945  22 122 222 322 122 22   -  -   -  -
32946  24 124 224 324 124 24 224 24   -  -
32947  26 126 226 326 126 26   -  -   -  -
32948  28 128 228 328 128 28   -  -   -  -
32949  30 130 230 330 130 30 230 30 330 30
32950  32 132 232 332 132 32   -  -   -  -
32951  34 134 234 334 134 34   -  -   -  -
32952  36 136 236 336 136 36 236 36   -  -
32953  38 138 238 338 138 38   -  -   -  -
32954  40 140 240 340 140 40   -  - 340 40
32955  42 142 242 342 142 42 242 42   -  -
32956  44 144 244 344 144 44   -  -   -  -
32957  46 146 246 346 146 46   -  -   -  -
32958  48 148 248 348 148 48 248 48   -  -
32959  50 150 250 350 150 50   -  - 350 50
32960  52 152 252 352 152 52   -  -   -  -
32961  54 154 254 354 154 54 254 54   -  -
32962  56 156 256 356 156 56   -  -   -  -
32963  58 158 258 358 158 58   -  -   -  -
32964  60 160 260 360 160 60 260 60 360 60
32965  62 162 262 362 162 62   -  -   -  -
32966  64 164 264 364 164 64   -  -   -  -
32967  66 166 266 366 166 66 266 66   -  -
32968  68 168 268 368 168 68   -  -   -  -
32969  70 170 270 370 170 70   -  - 370 70
32970  72 172 272 372 172 72 272 72   -  -
32971  74 174 274 374 174 74   -  -   -  -
32972  76 176 276 376 176 76   -  -   -  -
32973  78 178 278 378 178 78 278 78   -  -
32974  80 180 280 380 180 80   -  - 380 80
32975  82 182 282 382 182 82   -  -   -  -
32976  84 184 284 384 184 84 284 84   -  -
32977  86 186 286 386 186 86   -  -   -  -
32978  88 188 288 388 188 88   -  -   -  -
32979  90 190 290 390 190 90 290 90 390 90
32980  92 192 292 392 192 92   -  -   -  -
32981  94 194 294 394 194 94   -  -   -  -
32982}
32983do_execsql_test joinD-1125 {
32984  SELECT t1.*, t2.*, t3.*, t4.*
32985  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32986  FULL JOIN t3 ON t1.c=t3.c
32987  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32988  WHERE t3.y>0
32989  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32990} {
32991   3 103 203 303   -  - 203  3   -  -
32992   6 106 206 306 106  6 206  6   -  -
32993   9 109 209 309   -  - 209  9   -  -
32994  12 112 212 312 112 12 212 12   -  -
32995  15 115 215 315   -  - 215 15 315 15
32996  18 118 218 318 118 18 218 18   -  -
32997  21 121 221 321   -  - 221 21   -  -
32998  24 124 224 324 124 24 224 24   -  -
32999  27 127 227 327   -  - 227 27   -  -
33000  30 130 230 330 130 30 230 30 330 30
33001  33 133 233 333   -  - 233 33   -  -
33002  36 136 236 336 136 36 236 36   -  -
33003  39 139 239 339   -  - 239 39   -  -
33004  42 142 242 342 142 42 242 42   -  -
33005  45 145 245 345   -  - 245 45 345 45
33006  48 148 248 348 148 48 248 48   -  -
33007  51 151 251 351   -  - 251 51   -  -
33008  54 154 254 354 154 54 254 54   -  -
33009  57 157 257 357   -  - 257 57   -  -
33010  60 160 260 360 160 60 260 60 360 60
33011  63 163 263 363   -  - 263 63   -  -
33012  66 166 266 366 166 66 266 66   -  -
33013  69 169 269 369   -  - 269 69   -  -
33014  72 172 272 372 172 72 272 72   -  -
33015  75 175 275 375   -  - 275 75 375 75
33016  78 178 278 378 178 78 278 78   -  -
33017  81 181 281 381   -  - 281 81   -  -
33018  84 184 284 384 184 84 284 84   -  -
33019  87 187 287 387   -  - 287 87   -  -
33020  90 190 290 390 190 90 290 90 390 90
33021  93 193 293 393   -  - 293 93   -  -
33022}
33023do_execsql_test joinD-1126 {
33024  SELECT t1.*, t2.*, t3.*, t4.*
33025  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33026  FULL JOIN t3 ON t1.c=t3.c
33027  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
33028  WHERE t3.y>0 OR t3.y IS NULL
33029  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33030} {
33031   1 101 201 301   -  -   -  -   -  -
33032   2 102 202 302 102  2   -  -   -  -
33033   3 103 203 303   -  - 203  3   -  -
33034   4 104 204 304 104  4   -  -   -  -
33035   5 105 205 305   -  -   -  - 305  5
33036   6 106 206 306 106  6 206  6   -  -
33037   7 107 207 307   -  -   -  -   -  -
33038   8 108 208 308 108  8   -  -   -  -
33039   9 109 209 309   -  - 209  9   -  -
33040  10 110 210 310 110 10   -  - 310 10
33041  11 111 211 311   -  -   -  -   -  -
33042  12 112 212 312 112 12 212 12   -  -
33043  13 113 213 313   -  -   -  -   -  -
33044  14 114 214 314 114 14   -  -   -  -
33045  15 115 215 315   -  - 215 15 315 15
33046  16 116 216 316 116 16   -  -   -  -
33047  17 117 217 317   -  -   -  -   -  -
33048  18 118 218 318 118 18 218 18   -  -
33049  19 119 219 319   -  -   -  -   -  -
33050  20 120 220 320 120 20   -  - 320 20
33051  21 121 221 321   -  - 221 21   -  -
33052  22 122 222 322 122 22   -  -   -  -
33053  23 123 223 323   -  -   -  -   -  -
33054  24 124 224 324 124 24 224 24   -  -
33055  25 125 225 325   -  -   -  - 325 25
33056  26 126 226 326 126 26   -  -   -  -
33057  27 127 227 327   -  - 227 27   -  -
33058  28 128 228 328 128 28   -  -   -  -
33059  29 129 229 329   -  -   -  -   -  -
33060  30 130 230 330 130 30 230 30 330 30
33061  31 131 231 331   -  -   -  -   -  -
33062  32 132 232 332 132 32   -  -   -  -
33063  33 133 233 333   -  - 233 33   -  -
33064  34 134 234 334 134 34   -  -   -  -
33065  35 135 235 335   -  -   -  - 335 35
33066  36 136 236 336 136 36 236 36   -  -
33067  37 137 237 337   -  -   -  -   -  -
33068  38 138 238 338 138 38   -  -   -  -
33069  39 139 239 339   -  - 239 39   -  -
33070  40 140 240 340 140 40   -  - 340 40
33071  41 141 241 341   -  -   -  -   -  -
33072  42 142 242 342 142 42 242 42   -  -
33073  43 143 243 343   -  -   -  -   -  -
33074  44 144 244 344 144 44   -  -   -  -
33075  45 145 245 345   -  - 245 45 345 45
33076  46 146 246 346 146 46   -  -   -  -
33077  47 147 247 347   -  -   -  -   -  -
33078  48 148 248 348 148 48 248 48   -  -
33079  49 149 249 349   -  -   -  -   -  -
33080  50 150 250 350 150 50   -  - 350 50
33081  51 151 251 351   -  - 251 51   -  -
33082  52 152 252 352 152 52   -  -   -  -
33083  53 153 253 353   -  -   -  -   -  -
33084  54 154 254 354 154 54 254 54   -  -
33085  55 155 255 355   -  -   -  - 355 55
33086  56 156 256 356 156 56   -  -   -  -
33087  57 157 257 357   -  - 257 57   -  -
33088  58 158 258 358 158 58   -  -   -  -
33089  59 159 259 359   -  -   -  -   -  -
33090  60 160 260 360 160 60 260 60 360 60
33091  61 161 261 361   -  -   -  -   -  -
33092  62 162 262 362 162 62   -  -   -  -
33093  63 163 263 363   -  - 263 63   -  -
33094  64 164 264 364 164 64   -  -   -  -
33095  65 165 265 365   -  -   -  - 365 65
33096  66 166 266 366 166 66 266 66   -  -
33097  67 167 267 367   -  -   -  -   -  -
33098  68 168 268 368 168 68   -  -   -  -
33099  69 169 269 369   -  - 269 69   -  -
33100  70 170 270 370 170 70   -  - 370 70
33101  71 171 271 371   -  -   -  -   -  -
33102  72 172 272 372 172 72 272 72   -  -
33103  73 173 273 373   -  -   -  -   -  -
33104  74 174 274 374 174 74   -  -   -  -
33105  75 175 275 375   -  - 275 75 375 75
33106  76 176 276 376 176 76   -  -   -  -
33107  77 177 277 377   -  -   -  -   -  -
33108  78 178 278 378 178 78 278 78   -  -
33109  79 179 279 379   -  -   -  -   -  -
33110  80 180 280 380 180 80   -  - 380 80
33111  81 181 281 381   -  - 281 81   -  -
33112  82 182 282 382 182 82   -  -   -  -
33113  83 183 283 383   -  -   -  -   -  -
33114  84 184 284 384 184 84 284 84   -  -
33115  85 185 285 385   -  -   -  - 385 85
33116  86 186 286 386 186 86   -  -   -  -
33117  87 187 287 387   -  - 287 87   -  -
33118  88 188 288 388 188 88   -  -   -  -
33119  89 189 289 389   -  -   -  -   -  -
33120  90 190 290 390 190 90 290 90 390 90
33121  91 191 291 391   -  -   -  -   -  -
33122  92 192 292 392 192 92   -  -   -  -
33123  93 193 293 393   -  - 293 93   -  -
33124  94 194 294 394 194 94   -  -   -  -
33125  95 195 295 395   -  -   -  - 395 95
33126  96   - 296 396   -  -   -  -   -  -
33127  97 197   - 397   -  -   -  -   -  -
33128  98 198 298   -   -  -   -  -   -  -
33129  99   -   -   -   -  -   -  -   -  -
33130   -   -   -   - 100  0   -  -   -  -
33131}
33132do_execsql_test joinD-1127 {
33133  SELECT t1.*, t2.*, t3.*, t4.*
33134  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33135  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33136  LEFT JOIN t4 ON t1.d=t4.d
33137  WHERE t4.z>0
33138  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33139} {
33140   5 105 205 305   -  -   -  - 305  5
33141  10 110 210 310 110 10   -  - 310 10
33142  15 115 215 315   -  - 215 15 315 15
33143  20 120 220 320 120 20   -  - 320 20
33144  25 125 225 325   -  -   -  - 325 25
33145  30 130 230 330 130 30 230 30 330 30
33146  35 135 235 335   -  -   -  - 335 35
33147  40 140 240 340 140 40   -  - 340 40
33148  45 145 245 345   -  - 245 45 345 45
33149  50 150 250 350 150 50   -  - 350 50
33150  55 155 255 355   -  -   -  - 355 55
33151  60 160 260 360 160 60 260 60 360 60
33152  65 165 265 365   -  -   -  - 365 65
33153  70 170 270 370 170 70   -  - 370 70
33154  75 175 275 375   -  - 275 75 375 75
33155  80 180 280 380 180 80   -  - 380 80
33156  85 185 285 385   -  -   -  - 385 85
33157  90 190 290 390 190 90 290 90 390 90
33158  95 195 295 395   -  -   -  - 395 95
33159}
33160do_execsql_test joinD-1128 {
33161  SELECT t1.*, t2.*, t3.*, t4.*
33162  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33163  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33164  LEFT JOIN t4 ON t1.d=t4.d
33165  WHERE t4.z IS NULL OR t4.z>0
33166  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33167} {
33168   1 101 201 301   -  -   -  -   -  -
33169   2 102 202 302 102  2   -  -   -  -
33170   3 103 203 303   -  - 203  3   -  -
33171   4 104 204 304 104  4   -  -   -  -
33172   5 105 205 305   -  -   -  - 305  5
33173   6 106 206 306 106  6 206  6   -  -
33174   7 107 207 307   -  -   -  -   -  -
33175   8 108 208 308 108  8   -  -   -  -
33176   9 109 209 309   -  - 209  9   -  -
33177  10 110 210 310 110 10   -  - 310 10
33178  11 111 211 311   -  -   -  -   -  -
33179  12 112 212 312 112 12 212 12   -  -
33180  13 113 213 313   -  -   -  -   -  -
33181  14 114 214 314 114 14   -  -   -  -
33182  15 115 215 315   -  - 215 15 315 15
33183  16 116 216 316 116 16   -  -   -  -
33184  17 117 217 317   -  -   -  -   -  -
33185  18 118 218 318 118 18 218 18   -  -
33186  19 119 219 319   -  -   -  -   -  -
33187  20 120 220 320 120 20   -  - 320 20
33188  21 121 221 321   -  - 221 21   -  -
33189  22 122 222 322 122 22   -  -   -  -
33190  23 123 223 323   -  -   -  -   -  -
33191  24 124 224 324 124 24 224 24   -  -
33192  25 125 225 325   -  -   -  - 325 25
33193  26 126 226 326 126 26   -  -   -  -
33194  27 127 227 327   -  - 227 27   -  -
33195  28 128 228 328 128 28   -  -   -  -
33196  29 129 229 329   -  -   -  -   -  -
33197  30 130 230 330 130 30 230 30 330 30
33198  31 131 231 331   -  -   -  -   -  -
33199  32 132 232 332 132 32   -  -   -  -
33200  33 133 233 333   -  - 233 33   -  -
33201  34 134 234 334 134 34   -  -   -  -
33202  35 135 235 335   -  -   -  - 335 35
33203  36 136 236 336 136 36 236 36   -  -
33204  37 137 237 337   -  -   -  -   -  -
33205  38 138 238 338 138 38   -  -   -  -
33206  39 139 239 339   -  - 239 39   -  -
33207  40 140 240 340 140 40   -  - 340 40
33208  41 141 241 341   -  -   -  -   -  -
33209  42 142 242 342 142 42 242 42   -  -
33210  43 143 243 343   -  -   -  -   -  -
33211  44 144 244 344 144 44   -  -   -  -
33212  45 145 245 345   -  - 245 45 345 45
33213  46 146 246 346 146 46   -  -   -  -
33214  47 147 247 347   -  -   -  -   -  -
33215  48 148 248 348 148 48 248 48   -  -
33216  49 149 249 349   -  -   -  -   -  -
33217  50 150 250 350 150 50   -  - 350 50
33218  51 151 251 351   -  - 251 51   -  -
33219  52 152 252 352 152 52   -  -   -  -
33220  53 153 253 353   -  -   -  -   -  -
33221  54 154 254 354 154 54 254 54   -  -
33222  55 155 255 355   -  -   -  - 355 55
33223  56 156 256 356 156 56   -  -   -  -
33224  57 157 257 357   -  - 257 57   -  -
33225  58 158 258 358 158 58   -  -   -  -
33226  59 159 259 359   -  -   -  -   -  -
33227  60 160 260 360 160 60 260 60 360 60
33228  61 161 261 361   -  -   -  -   -  -
33229  62 162 262 362 162 62   -  -   -  -
33230  63 163 263 363   -  - 263 63   -  -
33231  64 164 264 364 164 64   -  -   -  -
33232  65 165 265 365   -  -   -  - 365 65
33233  66 166 266 366 166 66 266 66   -  -
33234  67 167 267 367   -  -   -  -   -  -
33235  68 168 268 368 168 68   -  -   -  -
33236  69 169 269 369   -  - 269 69   -  -
33237  70 170 270 370 170 70   -  - 370 70
33238  71 171 271 371   -  -   -  -   -  -
33239  72 172 272 372 172 72 272 72   -  -
33240  73 173 273 373   -  -   -  -   -  -
33241  74 174 274 374 174 74   -  -   -  -
33242  75 175 275 375   -  - 275 75 375 75
33243  76 176 276 376 176 76   -  -   -  -
33244  77 177 277 377   -  -   -  -   -  -
33245  78 178 278 378 178 78 278 78   -  -
33246  79 179 279 379   -  -   -  -   -  -
33247  80 180 280 380 180 80   -  - 380 80
33248  81 181 281 381   -  - 281 81   -  -
33249  82 182 282 382 182 82   -  -   -  -
33250  83 183 283 383   -  -   -  -   -  -
33251  84 184 284 384 184 84 284 84   -  -
33252  85 185 285 385   -  -   -  - 385 85
33253  86 186 286 386 186 86   -  -   -  -
33254  87 187 287 387   -  - 287 87   -  -
33255  88 188 288 388 188 88   -  -   -  -
33256  89 189 289 389   -  -   -  -   -  -
33257  90 190 290 390 190 90 290 90 390 90
33258  91 191 291 391   -  -   -  -   -  -
33259  92 192 292 392 192 92   -  -   -  -
33260  93 193 293 393   -  - 293 93   -  -
33261  94 194 294 394 194 94   -  -   -  -
33262  95 195 295 395   -  -   -  - 395 95
33263  96   - 296 396   -  -   -  -   -  -
33264  97 197   - 397   -  -   -  -   -  -
33265  98 198 298   -   -  -   -  -   -  -
33266  99   -   -   -   -  -   -  -   -  -
33267   -   -   -   - 100  0   -  -   -  -
33268   -   -   -   -   -  - 200  0   -  -
33269}
33270do_execsql_test joinD-1129 {
33271  SELECT t1.*, t2.*, t3.*, t4.*
33272  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33273  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33274  LEFT JOIN t4 ON t1.d=t4.d
33275  WHERE t2.x>0 AND t4.z>0
33276  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33277} {
33278  10 110 210 310 110 10   -  - 310 10
33279  20 120 220 320 120 20   -  - 320 20
33280  30 130 230 330 130 30 230 30 330 30
33281  40 140 240 340 140 40   -  - 340 40
33282  50 150 250 350 150 50   -  - 350 50
33283  60 160 260 360 160 60 260 60 360 60
33284  70 170 270 370 170 70   -  - 370 70
33285  80 180 280 380 180 80   -  - 380 80
33286  90 190 290 390 190 90 290 90 390 90
33287}
33288do_execsql_test joinD-1130 {
33289  SELECT t1.*, t2.*, t3.*, t4.*
33290  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33291  FULL JOIN t3 ON t1.c=t3.c
33292  LEFT JOIN t4 ON t1.d=t4.d
33293  WHERE t4.z>0 AND t3.y>0
33294  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33295} {
33296  15 115 215 315   -  - 215 15 315 15
33297  30 130 230 330 130 30 230 30 330 30
33298  45 145 245 345   -  - 245 45 345 45
33299  60 160 260 360 160 60 260 60 360 60
33300  75 175 275 375   -  - 275 75 375 75
33301  90 190 290 390 190 90 290 90 390 90
33302}
33303do_execsql_test joinD-1131 {
33304  SELECT t1.*, t2.*, t3.*, t4.*
33305  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33306  FULL JOIN t3 ON t1.c=t3.c
33307  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
33308  WHERE t2.x>0 AND t3.y>0
33309  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33310} {
33311   6 106 206 306 106  6 206  6   -  -
33312  12 112 212 312 112 12 212 12   -  -
33313  18 118 218 318 118 18 218 18   -  -
33314  24 124 224 324 124 24 224 24   -  -
33315  30 130 230 330 130 30 230 30 330 30
33316  36 136 236 336 136 36 236 36   -  -
33317  42 142 242 342 142 42 242 42   -  -
33318  48 148 248 348 148 48 248 48   -  -
33319  54 154 254 354 154 54 254 54   -  -
33320  60 160 260 360 160 60 260 60 360 60
33321  66 166 266 366 166 66 266 66   -  -
33322  72 172 272 372 172 72 272 72   -  -
33323  78 178 278 378 178 78 278 78   -  -
33324  84 184 284 384 184 84 284 84   -  -
33325  90 190 290 390 190 90 290 90 390 90
33326}
33327do_execsql_test joinD-1132 {
33328  SELECT t1.*, t2.*, t3.*, t4.*
33329  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33330  FULL JOIN t3 ON t1.c=t3.c
33331  LEFT JOIN t4 ON t1.d=t4.d
33332  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
33333  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33334} {
33335  30 130 230 330 130 30 230 30 330 30
33336  60 160 260 360 160 60 260 60 360 60
33337  90 190 290 390 190 90 290 90 390 90
33338}
33339do_execsql_test joinD-1133 {
33340  SELECT t1.*, t2.*, t3.*, t4.*
33341  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
33342  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33343  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33344  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33345} {
33346   0 100 200 300   -  -   -  -   -  -
33347   1 101 201 301   -  -   -  -   -  -
33348   2 102 202 302 102  2   -  -   -  -
33349   3 103 203 303   -  - 203  3   -  -
33350   4 104 204 304 104  4   -  -   -  -
33351   5 105 205 305   -  -   -  - 305  5
33352   6 106 206 306 106  6 206  6   -  -
33353   7 107 207 307   -  -   -  -   -  -
33354   8 108 208 308 108  8   -  -   -  -
33355   9 109 209 309   -  - 209  9   -  -
33356  10 110 210 310 110 10   -  - 310 10
33357  11 111 211 311   -  -   -  -   -  -
33358  12 112 212 312 112 12 212 12   -  -
33359  13 113 213 313   -  -   -  -   -  -
33360  14 114 214 314 114 14   -  -   -  -
33361  15 115 215 315   -  - 215 15 315 15
33362  16 116 216 316 116 16   -  -   -  -
33363  17 117 217 317   -  -   -  -   -  -
33364  18 118 218 318 118 18 218 18   -  -
33365  19 119 219 319   -  -   -  -   -  -
33366  20 120 220 320 120 20   -  - 320 20
33367  21 121 221 321   -  - 221 21   -  -
33368  22 122 222 322 122 22   -  -   -  -
33369  23 123 223 323   -  -   -  -   -  -
33370  24 124 224 324 124 24 224 24   -  -
33371  25 125 225 325   -  -   -  - 325 25
33372  26 126 226 326 126 26   -  -   -  -
33373  27 127 227 327   -  - 227 27   -  -
33374  28 128 228 328 128 28   -  -   -  -
33375  29 129 229 329   -  -   -  -   -  -
33376  30 130 230 330 130 30 230 30 330 30
33377  31 131 231 331   -  -   -  -   -  -
33378  32 132 232 332 132 32   -  -   -  -
33379  33 133 233 333   -  - 233 33   -  -
33380  34 134 234 334 134 34   -  -   -  -
33381  35 135 235 335   -  -   -  - 335 35
33382  36 136 236 336 136 36 236 36   -  -
33383  37 137 237 337   -  -   -  -   -  -
33384  38 138 238 338 138 38   -  -   -  -
33385  39 139 239 339   -  - 239 39   -  -
33386  40 140 240 340 140 40   -  - 340 40
33387  41 141 241 341   -  -   -  -   -  -
33388  42 142 242 342 142 42 242 42   -  -
33389  43 143 243 343   -  -   -  -   -  -
33390  44 144 244 344 144 44   -  -   -  -
33391  45 145 245 345   -  - 245 45 345 45
33392  46 146 246 346 146 46   -  -   -  -
33393  47 147 247 347   -  -   -  -   -  -
33394  48 148 248 348 148 48 248 48   -  -
33395  49 149 249 349   -  -   -  -   -  -
33396  50 150 250 350 150 50   -  - 350 50
33397  51 151 251 351   -  - 251 51   -  -
33398  52 152 252 352 152 52   -  -   -  -
33399  53 153 253 353   -  -   -  -   -  -
33400  54 154 254 354 154 54 254 54   -  -
33401  55 155 255 355   -  -   -  - 355 55
33402  56 156 256 356 156 56   -  -   -  -
33403  57 157 257 357   -  - 257 57   -  -
33404  58 158 258 358 158 58   -  -   -  -
33405  59 159 259 359   -  -   -  -   -  -
33406  60 160 260 360 160 60 260 60 360 60
33407  61 161 261 361   -  -   -  -   -  -
33408  62 162 262 362 162 62   -  -   -  -
33409  63 163 263 363   -  - 263 63   -  -
33410  64 164 264 364 164 64   -  -   -  -
33411  65 165 265 365   -  -   -  - 365 65
33412  66 166 266 366 166 66 266 66   -  -
33413  67 167 267 367   -  -   -  -   -  -
33414  68 168 268 368 168 68   -  -   -  -
33415  69 169 269 369   -  - 269 69   -  -
33416  70 170 270 370 170 70   -  - 370 70
33417  71 171 271 371   -  -   -  -   -  -
33418  72 172 272 372 172 72 272 72   -  -
33419  73 173 273 373   -  -   -  -   -  -
33420  74 174 274 374 174 74   -  -   -  -
33421  75 175 275 375   -  - 275 75 375 75
33422  76 176 276 376 176 76   -  -   -  -
33423  77 177 277 377   -  -   -  -   -  -
33424  78 178 278 378 178 78 278 78   -  -
33425  79 179 279 379   -  -   -  -   -  -
33426  80 180 280 380 180 80   -  - 380 80
33427  81 181 281 381   -  - 281 81   -  -
33428  82 182 282 382 182 82   -  -   -  -
33429  83 183 283 383   -  -   -  -   -  -
33430  84 184 284 384 184 84 284 84   -  -
33431  85 185 285 385   -  -   -  - 385 85
33432  86 186 286 386 186 86   -  -   -  -
33433  87 187 287 387   -  - 287 87   -  -
33434  88 188 288 388 188 88   -  -   -  -
33435  89 189 289 389   -  -   -  -   -  -
33436  90 190 290 390 190 90 290 90 390 90
33437  91 191 291 391   -  -   -  -   -  -
33438  92 192 292 392 192 92   -  -   -  -
33439  93 193 293 393   -  - 293 93   -  -
33440  94 194 294 394 194 94   -  -   -  -
33441  95 195 295 395   -  -   -  - 395 95
33442  96   - 296 396   -  -   -  -   -  -
33443  97 197   - 397   -  -   -  -   -  -
33444  98 198 298   -   -  -   -  -   -  -
33445  99   -   -   -   -  -   -  -   -  -
33446   -   -   -   - 100  0   -  -   -  -
33447   -   -   -   -   -  - 200  0   -  -
33448}
33449do_execsql_test joinD-1134 {
33450  SELECT t1.*, t2.*, t3.*, t4.*
33451  FROM t1 FULL JOIN t2 ON t2.x>0
33452  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33453  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33454  WHERE t1.b = t2.b
33455  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33456} {
33457   2 102 202 302 102  2   -  -   -  -
33458   4 104 204 304 104  4   -  -   -  -
33459   6 106 206 306 106  6 206  6   -  -
33460   8 108 208 308 108  8   -  -   -  -
33461  10 110 210 310 110 10   -  - 310 10
33462  12 112 212 312 112 12 212 12   -  -
33463  14 114 214 314 114 14   -  -   -  -
33464  16 116 216 316 116 16   -  -   -  -
33465  18 118 218 318 118 18 218 18   -  -
33466  20 120 220 320 120 20   -  - 320 20
33467  22 122 222 322 122 22   -  -   -  -
33468  24 124 224 324 124 24 224 24   -  -
33469  26 126 226 326 126 26   -  -   -  -
33470  28 128 228 328 128 28   -  -   -  -
33471  30 130 230 330 130 30 230 30 330 30
33472  32 132 232 332 132 32   -  -   -  -
33473  34 134 234 334 134 34   -  -   -  -
33474  36 136 236 336 136 36 236 36   -  -
33475  38 138 238 338 138 38   -  -   -  -
33476  40 140 240 340 140 40   -  - 340 40
33477  42 142 242 342 142 42 242 42   -  -
33478  44 144 244 344 144 44   -  -   -  -
33479  46 146 246 346 146 46   -  -   -  -
33480  48 148 248 348 148 48 248 48   -  -
33481  50 150 250 350 150 50   -  - 350 50
33482  52 152 252 352 152 52   -  -   -  -
33483  54 154 254 354 154 54 254 54   -  -
33484  56 156 256 356 156 56   -  -   -  -
33485  58 158 258 358 158 58   -  -   -  -
33486  60 160 260 360 160 60 260 60 360 60
33487  62 162 262 362 162 62   -  -   -  -
33488  64 164 264 364 164 64   -  -   -  -
33489  66 166 266 366 166 66 266 66   -  -
33490  68 168 268 368 168 68   -  -   -  -
33491  70 170 270 370 170 70   -  - 370 70
33492  72 172 272 372 172 72 272 72   -  -
33493  74 174 274 374 174 74   -  -   -  -
33494  76 176 276 376 176 76   -  -   -  -
33495  78 178 278 378 178 78 278 78   -  -
33496  80 180 280 380 180 80   -  - 380 80
33497  82 182 282 382 182 82   -  -   -  -
33498  84 184 284 384 184 84 284 84   -  -
33499  86 186 286 386 186 86   -  -   -  -
33500  88 188 288 388 188 88   -  -   -  -
33501  90 190 290 390 190 90 290 90 390 90
33502  92 192 292 392 192 92   -  -   -  -
33503  94 194 294 394 194 94   -  -   -  -
33504}
33505do_execsql_test joinD-1135 {
33506  SELECT t1.*, t2.*, t3.*, t4.*
33507  FROM t1 FULL JOIN t2 ON t2.x>0
33508  FULL JOIN t3 ON t3.y>0
33509  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33510  WHERE t1.b = t2.b AND t1.c = t3.c
33511  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33512} {
33513   6 106 206 306 106  6 206  6   -  -
33514  12 112 212 312 112 12 212 12   -  -
33515  18 118 218 318 118 18 218 18   -  -
33516  24 124 224 324 124 24 224 24   -  -
33517  30 130 230 330 130 30 230 30 330 30
33518  36 136 236 336 136 36 236 36   -  -
33519  42 142 242 342 142 42 242 42   -  -
33520  48 148 248 348 148 48 248 48   -  -
33521  54 154 254 354 154 54 254 54   -  -
33522  60 160 260 360 160 60 260 60 360 60
33523  66 166 266 366 166 66 266 66   -  -
33524  72 172 272 372 172 72 272 72   -  -
33525  78 178 278 378 178 78 278 78   -  -
33526  84 184 284 384 184 84 284 84   -  -
33527  90 190 290 390 190 90 290 90 390 90
33528}
33529do_execsql_test joinD-1136 {
33530  SELECT t1.*, t2.*, t3.*, t4.*
33531  FROM t1 FULL JOIN t2 ON t2.x>0
33532  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33533  LEFT JOIN t4 ON t4.z>0
33534  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
33535  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33536} {
33537  10 110 210 310 110 10   -  - 310 10
33538  20 120 220 320 120 20   -  - 320 20
33539  30 130 230 330 130 30 230 30 330 30
33540  40 140 240 340 140 40   -  - 340 40
33541  50 150 250 350 150 50   -  - 350 50
33542  60 160 260 360 160 60 260 60 360 60
33543  70 170 270 370 170 70   -  - 370 70
33544  80 180 280 380 180 80   -  - 380 80
33545  90 190 290 390 190 90 290 90 390 90
33546}
33547do_execsql_test joinD-1137 {
33548  SELECT t1.*, t2.*, t3.*, t4.*
33549  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33550  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33551  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33552  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33553} {
33554   5 105 205 305   -  -   -  - 305  5
33555  10 110 210 310 110 10   -  - 310 10
33556  15 115 215 315   -  - 215 15 315 15
33557  20 120 220 320 120 20   -  - 320 20
33558  25 125 225 325   -  -   -  - 325 25
33559  30 130 230 330 130 30 230 30 330 30
33560  35 135 235 335   -  -   -  - 335 35
33561  40 140 240 340 140 40   -  - 340 40
33562  45 145 245 345   -  - 245 45 345 45
33563  50 150 250 350 150 50   -  - 350 50
33564  55 155 255 355   -  -   -  - 355 55
33565  60 160 260 360 160 60 260 60 360 60
33566  65 165 265 365   -  -   -  - 365 65
33567  70 170 270 370 170 70   -  - 370 70
33568  75 175 275 375   -  - 275 75 375 75
33569  80 180 280 380 180 80   -  - 380 80
33570  85 185 285 385   -  -   -  - 385 85
33571  90 190 290 390 190 90 290 90 390 90
33572  95 195 295 395   -  -   -  - 395 95
33573   -   -   -   -   -  -   -  - 300  0
33574}
33575do_execsql_test joinD-1138 {
33576  SELECT t1.*, t2.*, t3.*, t4.*
33577  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33578  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33579  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33580  WHERE t2.x>0
33581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33582} {
33583  10 110 210 310 110 10   -  - 310 10
33584  20 120 220 320 120 20   -  - 320 20
33585  30 130 230 330 130 30 230 30 330 30
33586  40 140 240 340 140 40   -  - 340 40
33587  50 150 250 350 150 50   -  - 350 50
33588  60 160 260 360 160 60 260 60 360 60
33589  70 170 270 370 170 70   -  - 370 70
33590  80 180 280 380 180 80   -  - 380 80
33591  90 190 290 390 190 90 290 90 390 90
33592}
33593do_execsql_test joinD-1139 {
33594  SELECT t1.*, t2.*, t3.*, t4.*
33595  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33596  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33597  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33598  WHERE (t2.x>0 OR t2.x IS NULL)
33599  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33600} {
33601   5 105 205 305   -  -   -  - 305  5
33602  10 110 210 310 110 10   -  - 310 10
33603  15 115 215 315   -  - 215 15 315 15
33604  20 120 220 320 120 20   -  - 320 20
33605  25 125 225 325   -  -   -  - 325 25
33606  30 130 230 330 130 30 230 30 330 30
33607  35 135 235 335   -  -   -  - 335 35
33608  40 140 240 340 140 40   -  - 340 40
33609  45 145 245 345   -  - 245 45 345 45
33610  50 150 250 350 150 50   -  - 350 50
33611  55 155 255 355   -  -   -  - 355 55
33612  60 160 260 360 160 60 260 60 360 60
33613  65 165 265 365   -  -   -  - 365 65
33614  70 170 270 370 170 70   -  - 370 70
33615  75 175 275 375   -  - 275 75 375 75
33616  80 180 280 380 180 80   -  - 380 80
33617  85 185 285 385   -  -   -  - 385 85
33618  90 190 290 390 190 90 290 90 390 90
33619  95 195 295 395   -  -   -  - 395 95
33620   -   -   -   -   -  -   -  - 300  0
33621}
33622do_execsql_test joinD-1140 {
33623  SELECT t1.*, t2.*, t3.*, t4.*
33624  FROM t1 FULL JOIN t2 ON true
33625  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33626  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33627  WHERE t1.b=t2.b AND t2.x>0
33628  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33629} {
33630  10 110 210 310 110 10   -  - 310 10
33631  20 120 220 320 120 20   -  - 320 20
33632  30 130 230 330 130 30 230 30 330 30
33633  40 140 240 340 140 40   -  - 340 40
33634  50 150 250 350 150 50   -  - 350 50
33635  60 160 260 360 160 60 260 60 360 60
33636  70 170 270 370 170 70   -  - 370 70
33637  80 180 280 380 180 80   -  - 380 80
33638  90 190 290 390 190 90 290 90 390 90
33639}
33640do_execsql_test joinD-1141 {
33641  SELECT t1.*, t2.*, t3.*, t4.*
33642  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33643  FULL JOIN t3 ON t1.c=t3.c
33644  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33645  WHERE t3.y>0
33646  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33647} {
33648  15 115 215 315   -  - 215 15 315 15
33649  30 130 230 330 130 30 230 30 330 30
33650  45 145 245 345   -  - 245 45 345 45
33651  60 160 260 360 160 60 260 60 360 60
33652  75 175 275 375   -  - 275 75 375 75
33653  90 190 290 390 190 90 290 90 390 90
33654}
33655do_execsql_test joinD-1142 {
33656  SELECT t1.*, t2.*, t3.*, t4.*
33657  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33658  FULL JOIN t3 ON t1.c=t3.c
33659  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33660  WHERE t3.y>0 OR t3.y IS NULL
33661  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33662} {
33663   5 105 205 305   -  -   -  - 305  5
33664  10 110 210 310 110 10   -  - 310 10
33665  15 115 215 315   -  - 215 15 315 15
33666  20 120 220 320 120 20   -  - 320 20
33667  25 125 225 325   -  -   -  - 325 25
33668  30 130 230 330 130 30 230 30 330 30
33669  35 135 235 335   -  -   -  - 335 35
33670  40 140 240 340 140 40   -  - 340 40
33671  45 145 245 345   -  - 245 45 345 45
33672  50 150 250 350 150 50   -  - 350 50
33673  55 155 255 355   -  -   -  - 355 55
33674  60 160 260 360 160 60 260 60 360 60
33675  65 165 265 365   -  -   -  - 365 65
33676  70 170 270 370 170 70   -  - 370 70
33677  75 175 275 375   -  - 275 75 375 75
33678  80 180 280 380 180 80   -  - 380 80
33679  85 185 285 385   -  -   -  - 385 85
33680  90 190 290 390 190 90 290 90 390 90
33681  95 195 295 395   -  -   -  - 395 95
33682   -   -   -   -   -  -   -  - 300  0
33683}
33684do_execsql_test joinD-1143 {
33685  SELECT t1.*, t2.*, t3.*, t4.*
33686  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33687  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33688  RIGHT JOIN t4 ON t1.d=t4.d
33689  WHERE t4.z>0
33690  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33691} {
33692   5 105 205 305   -  -   -  - 305  5
33693  10 110 210 310 110 10   -  - 310 10
33694  15 115 215 315   -  - 215 15 315 15
33695  20 120 220 320 120 20   -  - 320 20
33696  25 125 225 325   -  -   -  - 325 25
33697  30 130 230 330 130 30 230 30 330 30
33698  35 135 235 335   -  -   -  - 335 35
33699  40 140 240 340 140 40   -  - 340 40
33700  45 145 245 345   -  - 245 45 345 45
33701  50 150 250 350 150 50   -  - 350 50
33702  55 155 255 355   -  -   -  - 355 55
33703  60 160 260 360 160 60 260 60 360 60
33704  65 165 265 365   -  -   -  - 365 65
33705  70 170 270 370 170 70   -  - 370 70
33706  75 175 275 375   -  - 275 75 375 75
33707  80 180 280 380 180 80   -  - 380 80
33708  85 185 285 385   -  -   -  - 385 85
33709  90 190 290 390 190 90 290 90 390 90
33710  95 195 295 395   -  -   -  - 395 95
33711}
33712do_execsql_test joinD-1144 {
33713  SELECT t1.*, t2.*, t3.*, t4.*
33714  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33715  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33716  RIGHT JOIN t4 ON t1.d=t4.d
33717  WHERE t4.z IS NULL OR t4.z>0
33718  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33719} {
33720   5 105 205 305   -  -   -  - 305  5
33721  10 110 210 310 110 10   -  - 310 10
33722  15 115 215 315   -  - 215 15 315 15
33723  20 120 220 320 120 20   -  - 320 20
33724  25 125 225 325   -  -   -  - 325 25
33725  30 130 230 330 130 30 230 30 330 30
33726  35 135 235 335   -  -   -  - 335 35
33727  40 140 240 340 140 40   -  - 340 40
33728  45 145 245 345   -  - 245 45 345 45
33729  50 150 250 350 150 50   -  - 350 50
33730  55 155 255 355   -  -   -  - 355 55
33731  60 160 260 360 160 60 260 60 360 60
33732  65 165 265 365   -  -   -  - 365 65
33733  70 170 270 370 170 70   -  - 370 70
33734  75 175 275 375   -  - 275 75 375 75
33735  80 180 280 380 180 80   -  - 380 80
33736  85 185 285 385   -  -   -  - 385 85
33737  90 190 290 390 190 90 290 90 390 90
33738  95 195 295 395   -  -   -  - 395 95
33739}
33740do_execsql_test joinD-1145 {
33741  SELECT t1.*, t2.*, t3.*, t4.*
33742  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33743  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33744  RIGHT JOIN t4 ON t1.d=t4.d
33745  WHERE t2.x>0 AND t4.z>0
33746  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33747} {
33748  10 110 210 310 110 10   -  - 310 10
33749  20 120 220 320 120 20   -  - 320 20
33750  30 130 230 330 130 30 230 30 330 30
33751  40 140 240 340 140 40   -  - 340 40
33752  50 150 250 350 150 50   -  - 350 50
33753  60 160 260 360 160 60 260 60 360 60
33754  70 170 270 370 170 70   -  - 370 70
33755  80 180 280 380 180 80   -  - 380 80
33756  90 190 290 390 190 90 290 90 390 90
33757}
33758do_execsql_test joinD-1146 {
33759  SELECT t1.*, t2.*, t3.*, t4.*
33760  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33761  FULL JOIN t3 ON t1.c=t3.c
33762  RIGHT JOIN t4 ON t1.d=t4.d
33763  WHERE t4.z>0 AND t3.y>0
33764  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33765} {
33766  15 115 215 315   -  - 215 15 315 15
33767  30 130 230 330 130 30 230 30 330 30
33768  45 145 245 345   -  - 245 45 345 45
33769  60 160 260 360 160 60 260 60 360 60
33770  75 175 275 375   -  - 275 75 375 75
33771  90 190 290 390 190 90 290 90 390 90
33772}
33773do_execsql_test joinD-1147 {
33774  SELECT t1.*, t2.*, t3.*, t4.*
33775  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33776  FULL JOIN t3 ON t1.c=t3.c
33777  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33778  WHERE t2.x>0 AND t3.y>0
33779  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33780} {
33781  30 130 230 330 130 30 230 30 330 30
33782  60 160 260 360 160 60 260 60 360 60
33783  90 190 290 390 190 90 290 90 390 90
33784}
33785do_execsql_test joinD-1148 {
33786  SELECT t1.*, t2.*, t3.*, t4.*
33787  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33788  FULL JOIN t3 ON t1.c=t3.c
33789  RIGHT JOIN t4 ON t1.d=t4.d
33790  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
33791  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33792} {
33793  30 130 230 330 130 30 230 30 330 30
33794  60 160 260 360 160 60 260 60 360 60
33795  90 190 290 390 190 90 290 90 390 90
33796}
33797do_execsql_test joinD-1149 {
33798  SELECT t1.*, t2.*, t3.*, t4.*
33799  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
33800  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33801  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33802  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33803} {
33804   5 105 205 305   -  -   -  - 305  5
33805  10 110 210 310 110 10   -  - 310 10
33806  15 115 215 315   -  - 215 15 315 15
33807  20 120 220 320 120 20   -  - 320 20
33808  25 125 225 325   -  -   -  - 325 25
33809  30 130 230 330 130 30 230 30 330 30
33810  35 135 235 335   -  -   -  - 335 35
33811  40 140 240 340 140 40   -  - 340 40
33812  45 145 245 345   -  - 245 45 345 45
33813  50 150 250 350 150 50   -  - 350 50
33814  55 155 255 355   -  -   -  - 355 55
33815  60 160 260 360 160 60 260 60 360 60
33816  65 165 265 365   -  -   -  - 365 65
33817  70 170 270 370 170 70   -  - 370 70
33818  75 175 275 375   -  - 275 75 375 75
33819  80 180 280 380 180 80   -  - 380 80
33820  85 185 285 385   -  -   -  - 385 85
33821  90 190 290 390 190 90 290 90 390 90
33822  95 195 295 395   -  -   -  - 395 95
33823   -   -   -   -   -  -   -  - 300  0
33824}
33825do_execsql_test joinD-1150 {
33826  SELECT t1.*, t2.*, t3.*, t4.*
33827  FROM t1 FULL JOIN t2 ON t2.x>0
33828  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33829  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33830  WHERE t1.b = t2.b
33831  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33832} {
33833  10 110 210 310 110 10   -  - 310 10
33834  20 120 220 320 120 20   -  - 320 20
33835  30 130 230 330 130 30 230 30 330 30
33836  40 140 240 340 140 40   -  - 340 40
33837  50 150 250 350 150 50   -  - 350 50
33838  60 160 260 360 160 60 260 60 360 60
33839  70 170 270 370 170 70   -  - 370 70
33840  80 180 280 380 180 80   -  - 380 80
33841  90 190 290 390 190 90 290 90 390 90
33842}
33843do_execsql_test joinD-1151 {
33844  SELECT t1.*, t2.*, t3.*, t4.*
33845  FROM t1 FULL JOIN t2 ON t2.x>0
33846  FULL JOIN t3 ON t3.y>0
33847  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33848  WHERE t1.b = t2.b AND t1.c = t3.c
33849  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33850} {
33851  30 130 230 330 130 30 230 30 330 30
33852  60 160 260 360 160 60 260 60 360 60
33853  90 190 290 390 190 90 290 90 390 90
33854}
33855do_execsql_test joinD-1152 {
33856  SELECT t1.*, t2.*, t3.*, t4.*
33857  FROM t1 FULL JOIN t2 ON t2.x>0
33858  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33859  RIGHT JOIN t4 ON t4.z>0
33860  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
33861  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33862} {
33863  10 110 210 310 110 10   -  - 310 10
33864  20 120 220 320 120 20   -  - 320 20
33865  30 130 230 330 130 30 230 30 330 30
33866  40 140 240 340 140 40   -  - 340 40
33867  50 150 250 350 150 50   -  - 350 50
33868  60 160 260 360 160 60 260 60 360 60
33869  70 170 270 370 170 70   -  - 370 70
33870  80 180 280 380 180 80   -  - 380 80
33871  90 190 290 390 190 90 290 90 390 90
33872}
33873do_execsql_test joinD-1153 {
33874  SELECT t1.*, t2.*, t3.*, t4.*
33875  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33876  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33877  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
33878  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33879} {
33880   0 100 200 300   -  -   -  -   -  -
33881   1 101 201 301   -  -   -  -   -  -
33882   2 102 202 302 102  2   -  -   -  -
33883   3 103 203 303   -  - 203  3   -  -
33884   4 104 204 304 104  4   -  -   -  -
33885   5 105 205 305   -  -   -  - 305  5
33886   6 106 206 306 106  6 206  6   -  -
33887   7 107 207 307   -  -   -  -   -  -
33888   8 108 208 308 108  8   -  -   -  -
33889   9 109 209 309   -  - 209  9   -  -
33890  10 110 210 310 110 10   -  - 310 10
33891  11 111 211 311   -  -   -  -   -  -
33892  12 112 212 312 112 12 212 12   -  -
33893  13 113 213 313   -  -   -  -   -  -
33894  14 114 214 314 114 14   -  -   -  -
33895  15 115 215 315   -  - 215 15 315 15
33896  16 116 216 316 116 16   -  -   -  -
33897  17 117 217 317   -  -   -  -   -  -
33898  18 118 218 318 118 18 218 18   -  -
33899  19 119 219 319   -  -   -  -   -  -
33900  20 120 220 320 120 20   -  - 320 20
33901  21 121 221 321   -  - 221 21   -  -
33902  22 122 222 322 122 22   -  -   -  -
33903  23 123 223 323   -  -   -  -   -  -
33904  24 124 224 324 124 24 224 24   -  -
33905  25 125 225 325   -  -   -  - 325 25
33906  26 126 226 326 126 26   -  -   -  -
33907  27 127 227 327   -  - 227 27   -  -
33908  28 128 228 328 128 28   -  -   -  -
33909  29 129 229 329   -  -   -  -   -  -
33910  30 130 230 330 130 30 230 30 330 30
33911  31 131 231 331   -  -   -  -   -  -
33912  32 132 232 332 132 32   -  -   -  -
33913  33 133 233 333   -  - 233 33   -  -
33914  34 134 234 334 134 34   -  -   -  -
33915  35 135 235 335   -  -   -  - 335 35
33916  36 136 236 336 136 36 236 36   -  -
33917  37 137 237 337   -  -   -  -   -  -
33918  38 138 238 338 138 38   -  -   -  -
33919  39 139 239 339   -  - 239 39   -  -
33920  40 140 240 340 140 40   -  - 340 40
33921  41 141 241 341   -  -   -  -   -  -
33922  42 142 242 342 142 42 242 42   -  -
33923  43 143 243 343   -  -   -  -   -  -
33924  44 144 244 344 144 44   -  -   -  -
33925  45 145 245 345   -  - 245 45 345 45
33926  46 146 246 346 146 46   -  -   -  -
33927  47 147 247 347   -  -   -  -   -  -
33928  48 148 248 348 148 48 248 48   -  -
33929  49 149 249 349   -  -   -  -   -  -
33930  50 150 250 350 150 50   -  - 350 50
33931  51 151 251 351   -  - 251 51   -  -
33932  52 152 252 352 152 52   -  -   -  -
33933  53 153 253 353   -  -   -  -   -  -
33934  54 154 254 354 154 54 254 54   -  -
33935  55 155 255 355   -  -   -  - 355 55
33936  56 156 256 356 156 56   -  -   -  -
33937  57 157 257 357   -  - 257 57   -  -
33938  58 158 258 358 158 58   -  -   -  -
33939  59 159 259 359   -  -   -  -   -  -
33940  60 160 260 360 160 60 260 60 360 60
33941  61 161 261 361   -  -   -  -   -  -
33942  62 162 262 362 162 62   -  -   -  -
33943  63 163 263 363   -  - 263 63   -  -
33944  64 164 264 364 164 64   -  -   -  -
33945  65 165 265 365   -  -   -  - 365 65
33946  66 166 266 366 166 66 266 66   -  -
33947  67 167 267 367   -  -   -  -   -  -
33948  68 168 268 368 168 68   -  -   -  -
33949  69 169 269 369   -  - 269 69   -  -
33950  70 170 270 370 170 70   -  - 370 70
33951  71 171 271 371   -  -   -  -   -  -
33952  72 172 272 372 172 72 272 72   -  -
33953  73 173 273 373   -  -   -  -   -  -
33954  74 174 274 374 174 74   -  -   -  -
33955  75 175 275 375   -  - 275 75 375 75
33956  76 176 276 376 176 76   -  -   -  -
33957  77 177 277 377   -  -   -  -   -  -
33958  78 178 278 378 178 78 278 78   -  -
33959  79 179 279 379   -  -   -  -   -  -
33960  80 180 280 380 180 80   -  - 380 80
33961  81 181 281 381   -  - 281 81   -  -
33962  82 182 282 382 182 82   -  -   -  -
33963  83 183 283 383   -  -   -  -   -  -
33964  84 184 284 384 184 84 284 84   -  -
33965  85 185 285 385   -  -   -  - 385 85
33966  86 186 286 386 186 86   -  -   -  -
33967  87 187 287 387   -  - 287 87   -  -
33968  88 188 288 388 188 88   -  -   -  -
33969  89 189 289 389   -  -   -  -   -  -
33970  90 190 290 390 190 90 290 90 390 90
33971  91 191 291 391   -  -   -  -   -  -
33972  92 192 292 392 192 92   -  -   -  -
33973  93 193 293 393   -  - 293 93   -  -
33974  94 194 294 394 194 94   -  -   -  -
33975  95 195 295 395   -  -   -  - 395 95
33976  96   - 296 396   -  -   -  -   -  -
33977  97 197   - 397   -  -   -  -   -  -
33978  98 198 298   -   -  -   -  -   -  -
33979  99   -   -   -   -  -   -  -   -  -
33980   -   -   -   - 100  0   -  -   -  -
33981   -   -   -   -   -  - 200  0   -  -
33982   -   -   -   -   -  -   -  - 300  0
33983}
33984do_execsql_test joinD-1154 {
33985  SELECT t1.*, t2.*, t3.*, t4.*
33986  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33987  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33988  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
33989  WHERE t2.x>0
33990  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33991} {
33992   2 102 202 302 102  2   -  -   -  -
33993   4 104 204 304 104  4   -  -   -  -
33994   6 106 206 306 106  6 206  6   -  -
33995   8 108 208 308 108  8   -  -   -  -
33996  10 110 210 310 110 10   -  - 310 10
33997  12 112 212 312 112 12 212 12   -  -
33998  14 114 214 314 114 14   -  -   -  -
33999  16 116 216 316 116 16   -  -   -  -
34000  18 118 218 318 118 18 218 18   -  -
34001  20 120 220 320 120 20   -  - 320 20
34002  22 122 222 322 122 22   -  -   -  -
34003  24 124 224 324 124 24 224 24   -  -
34004  26 126 226 326 126 26   -  -   -  -
34005  28 128 228 328 128 28   -  -   -  -
34006  30 130 230 330 130 30 230 30 330 30
34007  32 132 232 332 132 32   -  -   -  -
34008  34 134 234 334 134 34   -  -   -  -
34009  36 136 236 336 136 36 236 36   -  -
34010  38 138 238 338 138 38   -  -   -  -
34011  40 140 240 340 140 40   -  - 340 40
34012  42 142 242 342 142 42 242 42   -  -
34013  44 144 244 344 144 44   -  -   -  -
34014  46 146 246 346 146 46   -  -   -  -
34015  48 148 248 348 148 48 248 48   -  -
34016  50 150 250 350 150 50   -  - 350 50
34017  52 152 252 352 152 52   -  -   -  -
34018  54 154 254 354 154 54 254 54   -  -
34019  56 156 256 356 156 56   -  -   -  -
34020  58 158 258 358 158 58   -  -   -  -
34021  60 160 260 360 160 60 260 60 360 60
34022  62 162 262 362 162 62   -  -   -  -
34023  64 164 264 364 164 64   -  -   -  -
34024  66 166 266 366 166 66 266 66   -  -
34025  68 168 268 368 168 68   -  -   -  -
34026  70 170 270 370 170 70   -  - 370 70
34027  72 172 272 372 172 72 272 72   -  -
34028  74 174 274 374 174 74   -  -   -  -
34029  76 176 276 376 176 76   -  -   -  -
34030  78 178 278 378 178 78 278 78   -  -
34031  80 180 280 380 180 80   -  - 380 80
34032  82 182 282 382 182 82   -  -   -  -
34033  84 184 284 384 184 84 284 84   -  -
34034  86 186 286 386 186 86   -  -   -  -
34035  88 188 288 388 188 88   -  -   -  -
34036  90 190 290 390 190 90 290 90 390 90
34037  92 192 292 392 192 92   -  -   -  -
34038  94 194 294 394 194 94   -  -   -  -
34039}
34040do_execsql_test joinD-1155 {
34041  SELECT t1.*, t2.*, t3.*, t4.*
34042  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34043  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34044  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34045  WHERE (t2.x>0 OR t2.x IS NULL)
34046  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34047} {
34048   1 101 201 301   -  -   -  -   -  -
34049   2 102 202 302 102  2   -  -   -  -
34050   3 103 203 303   -  - 203  3   -  -
34051   4 104 204 304 104  4   -  -   -  -
34052   5 105 205 305   -  -   -  - 305  5
34053   6 106 206 306 106  6 206  6   -  -
34054   7 107 207 307   -  -   -  -   -  -
34055   8 108 208 308 108  8   -  -   -  -
34056   9 109 209 309   -  - 209  9   -  -
34057  10 110 210 310 110 10   -  - 310 10
34058  11 111 211 311   -  -   -  -   -  -
34059  12 112 212 312 112 12 212 12   -  -
34060  13 113 213 313   -  -   -  -   -  -
34061  14 114 214 314 114 14   -  -   -  -
34062  15 115 215 315   -  - 215 15 315 15
34063  16 116 216 316 116 16   -  -   -  -
34064  17 117 217 317   -  -   -  -   -  -
34065  18 118 218 318 118 18 218 18   -  -
34066  19 119 219 319   -  -   -  -   -  -
34067  20 120 220 320 120 20   -  - 320 20
34068  21 121 221 321   -  - 221 21   -  -
34069  22 122 222 322 122 22   -  -   -  -
34070  23 123 223 323   -  -   -  -   -  -
34071  24 124 224 324 124 24 224 24   -  -
34072  25 125 225 325   -  -   -  - 325 25
34073  26 126 226 326 126 26   -  -   -  -
34074  27 127 227 327   -  - 227 27   -  -
34075  28 128 228 328 128 28   -  -   -  -
34076  29 129 229 329   -  -   -  -   -  -
34077  30 130 230 330 130 30 230 30 330 30
34078  31 131 231 331   -  -   -  -   -  -
34079  32 132 232 332 132 32   -  -   -  -
34080  33 133 233 333   -  - 233 33   -  -
34081  34 134 234 334 134 34   -  -   -  -
34082  35 135 235 335   -  -   -  - 335 35
34083  36 136 236 336 136 36 236 36   -  -
34084  37 137 237 337   -  -   -  -   -  -
34085  38 138 238 338 138 38   -  -   -  -
34086  39 139 239 339   -  - 239 39   -  -
34087  40 140 240 340 140 40   -  - 340 40
34088  41 141 241 341   -  -   -  -   -  -
34089  42 142 242 342 142 42 242 42   -  -
34090  43 143 243 343   -  -   -  -   -  -
34091  44 144 244 344 144 44   -  -   -  -
34092  45 145 245 345   -  - 245 45 345 45
34093  46 146 246 346 146 46   -  -   -  -
34094  47 147 247 347   -  -   -  -   -  -
34095  48 148 248 348 148 48 248 48   -  -
34096  49 149 249 349   -  -   -  -   -  -
34097  50 150 250 350 150 50   -  - 350 50
34098  51 151 251 351   -  - 251 51   -  -
34099  52 152 252 352 152 52   -  -   -  -
34100  53 153 253 353   -  -   -  -   -  -
34101  54 154 254 354 154 54 254 54   -  -
34102  55 155 255 355   -  -   -  - 355 55
34103  56 156 256 356 156 56   -  -   -  -
34104  57 157 257 357   -  - 257 57   -  -
34105  58 158 258 358 158 58   -  -   -  -
34106  59 159 259 359   -  -   -  -   -  -
34107  60 160 260 360 160 60 260 60 360 60
34108  61 161 261 361   -  -   -  -   -  -
34109  62 162 262 362 162 62   -  -   -  -
34110  63 163 263 363   -  - 263 63   -  -
34111  64 164 264 364 164 64   -  -   -  -
34112  65 165 265 365   -  -   -  - 365 65
34113  66 166 266 366 166 66 266 66   -  -
34114  67 167 267 367   -  -   -  -   -  -
34115  68 168 268 368 168 68   -  -   -  -
34116  69 169 269 369   -  - 269 69   -  -
34117  70 170 270 370 170 70   -  - 370 70
34118  71 171 271 371   -  -   -  -   -  -
34119  72 172 272 372 172 72 272 72   -  -
34120  73 173 273 373   -  -   -  -   -  -
34121  74 174 274 374 174 74   -  -   -  -
34122  75 175 275 375   -  - 275 75 375 75
34123  76 176 276 376 176 76   -  -   -  -
34124  77 177 277 377   -  -   -  -   -  -
34125  78 178 278 378 178 78 278 78   -  -
34126  79 179 279 379   -  -   -  -   -  -
34127  80 180 280 380 180 80   -  - 380 80
34128  81 181 281 381   -  - 281 81   -  -
34129  82 182 282 382 182 82   -  -   -  -
34130  83 183 283 383   -  -   -  -   -  -
34131  84 184 284 384 184 84 284 84   -  -
34132  85 185 285 385   -  -   -  - 385 85
34133  86 186 286 386 186 86   -  -   -  -
34134  87 187 287 387   -  - 287 87   -  -
34135  88 188 288 388 188 88   -  -   -  -
34136  89 189 289 389   -  -   -  -   -  -
34137  90 190 290 390 190 90 290 90 390 90
34138  91 191 291 391   -  -   -  -   -  -
34139  92 192 292 392 192 92   -  -   -  -
34140  93 193 293 393   -  - 293 93   -  -
34141  94 194 294 394 194 94   -  -   -  -
34142  95 195 295 395   -  -   -  - 395 95
34143  96   - 296 396   -  -   -  -   -  -
34144  97 197   - 397   -  -   -  -   -  -
34145  98 198 298   -   -  -   -  -   -  -
34146  99   -   -   -   -  -   -  -   -  -
34147   -   -   -   -   -  - 200  0   -  -
34148   -   -   -   -   -  -   -  - 300  0
34149}
34150do_execsql_test joinD-1156 {
34151  SELECT t1.*, t2.*, t3.*, t4.*
34152  FROM t1 FULL JOIN t2 ON true
34153  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34154  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34155  WHERE t1.b=t2.b AND t2.x>0
34156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34157} {
34158   2 102 202 302 102  2   -  -   -  -
34159   4 104 204 304 104  4   -  -   -  -
34160   6 106 206 306 106  6 206  6   -  -
34161   8 108 208 308 108  8   -  -   -  -
34162  10 110 210 310 110 10   -  - 310 10
34163  12 112 212 312 112 12 212 12   -  -
34164  14 114 214 314 114 14   -  -   -  -
34165  16 116 216 316 116 16   -  -   -  -
34166  18 118 218 318 118 18 218 18   -  -
34167  20 120 220 320 120 20   -  - 320 20
34168  22 122 222 322 122 22   -  -   -  -
34169  24 124 224 324 124 24 224 24   -  -
34170  26 126 226 326 126 26   -  -   -  -
34171  28 128 228 328 128 28   -  -   -  -
34172  30 130 230 330 130 30 230 30 330 30
34173  32 132 232 332 132 32   -  -   -  -
34174  34 134 234 334 134 34   -  -   -  -
34175  36 136 236 336 136 36 236 36   -  -
34176  38 138 238 338 138 38   -  -   -  -
34177  40 140 240 340 140 40   -  - 340 40
34178  42 142 242 342 142 42 242 42   -  -
34179  44 144 244 344 144 44   -  -   -  -
34180  46 146 246 346 146 46   -  -   -  -
34181  48 148 248 348 148 48 248 48   -  -
34182  50 150 250 350 150 50   -  - 350 50
34183  52 152 252 352 152 52   -  -   -  -
34184  54 154 254 354 154 54 254 54   -  -
34185  56 156 256 356 156 56   -  -   -  -
34186  58 158 258 358 158 58   -  -   -  -
34187  60 160 260 360 160 60 260 60 360 60
34188  62 162 262 362 162 62   -  -   -  -
34189  64 164 264 364 164 64   -  -   -  -
34190  66 166 266 366 166 66 266 66   -  -
34191  68 168 268 368 168 68   -  -   -  -
34192  70 170 270 370 170 70   -  - 370 70
34193  72 172 272 372 172 72 272 72   -  -
34194  74 174 274 374 174 74   -  -   -  -
34195  76 176 276 376 176 76   -  -   -  -
34196  78 178 278 378 178 78 278 78   -  -
34197  80 180 280 380 180 80   -  - 380 80
34198  82 182 282 382 182 82   -  -   -  -
34199  84 184 284 384 184 84 284 84   -  -
34200  86 186 286 386 186 86   -  -   -  -
34201  88 188 288 388 188 88   -  -   -  -
34202  90 190 290 390 190 90 290 90 390 90
34203  92 192 292 392 192 92   -  -   -  -
34204  94 194 294 394 194 94   -  -   -  -
34205}
34206do_execsql_test joinD-1157 {
34207  SELECT t1.*, t2.*, t3.*, t4.*
34208  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34209  FULL JOIN t3 ON t1.c=t3.c
34210  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34211  WHERE t3.y>0
34212  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34213} {
34214   3 103 203 303   -  - 203  3   -  -
34215   6 106 206 306 106  6 206  6   -  -
34216   9 109 209 309   -  - 209  9   -  -
34217  12 112 212 312 112 12 212 12   -  -
34218  15 115 215 315   -  - 215 15 315 15
34219  18 118 218 318 118 18 218 18   -  -
34220  21 121 221 321   -  - 221 21   -  -
34221  24 124 224 324 124 24 224 24   -  -
34222  27 127 227 327   -  - 227 27   -  -
34223  30 130 230 330 130 30 230 30 330 30
34224  33 133 233 333   -  - 233 33   -  -
34225  36 136 236 336 136 36 236 36   -  -
34226  39 139 239 339   -  - 239 39   -  -
34227  42 142 242 342 142 42 242 42   -  -
34228  45 145 245 345   -  - 245 45 345 45
34229  48 148 248 348 148 48 248 48   -  -
34230  51 151 251 351   -  - 251 51   -  -
34231  54 154 254 354 154 54 254 54   -  -
34232  57 157 257 357   -  - 257 57   -  -
34233  60 160 260 360 160 60 260 60 360 60
34234  63 163 263 363   -  - 263 63   -  -
34235  66 166 266 366 166 66 266 66   -  -
34236  69 169 269 369   -  - 269 69   -  -
34237  72 172 272 372 172 72 272 72   -  -
34238  75 175 275 375   -  - 275 75 375 75
34239  78 178 278 378 178 78 278 78   -  -
34240  81 181 281 381   -  - 281 81   -  -
34241  84 184 284 384 184 84 284 84   -  -
34242  87 187 287 387   -  - 287 87   -  -
34243  90 190 290 390 190 90 290 90 390 90
34244  93 193 293 393   -  - 293 93   -  -
34245}
34246do_execsql_test joinD-1158 {
34247  SELECT t1.*, t2.*, t3.*, t4.*
34248  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34249  FULL JOIN t3 ON t1.c=t3.c
34250  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34251  WHERE t3.y>0 OR t3.y IS NULL
34252  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34253} {
34254   1 101 201 301   -  -   -  -   -  -
34255   2 102 202 302 102  2   -  -   -  -
34256   3 103 203 303   -  - 203  3   -  -
34257   4 104 204 304 104  4   -  -   -  -
34258   5 105 205 305   -  -   -  - 305  5
34259   6 106 206 306 106  6 206  6   -  -
34260   7 107 207 307   -  -   -  -   -  -
34261   8 108 208 308 108  8   -  -   -  -
34262   9 109 209 309   -  - 209  9   -  -
34263  10 110 210 310 110 10   -  - 310 10
34264  11 111 211 311   -  -   -  -   -  -
34265  12 112 212 312 112 12 212 12   -  -
34266  13 113 213 313   -  -   -  -   -  -
34267  14 114 214 314 114 14   -  -   -  -
34268  15 115 215 315   -  - 215 15 315 15
34269  16 116 216 316 116 16   -  -   -  -
34270  17 117 217 317   -  -   -  -   -  -
34271  18 118 218 318 118 18 218 18   -  -
34272  19 119 219 319   -  -   -  -   -  -
34273  20 120 220 320 120 20   -  - 320 20
34274  21 121 221 321   -  - 221 21   -  -
34275  22 122 222 322 122 22   -  -   -  -
34276  23 123 223 323   -  -   -  -   -  -
34277  24 124 224 324 124 24 224 24   -  -
34278  25 125 225 325   -  -   -  - 325 25
34279  26 126 226 326 126 26   -  -   -  -
34280  27 127 227 327   -  - 227 27   -  -
34281  28 128 228 328 128 28   -  -   -  -
34282  29 129 229 329   -  -   -  -   -  -
34283  30 130 230 330 130 30 230 30 330 30
34284  31 131 231 331   -  -   -  -   -  -
34285  32 132 232 332 132 32   -  -   -  -
34286  33 133 233 333   -  - 233 33   -  -
34287  34 134 234 334 134 34   -  -   -  -
34288  35 135 235 335   -  -   -  - 335 35
34289  36 136 236 336 136 36 236 36   -  -
34290  37 137 237 337   -  -   -  -   -  -
34291  38 138 238 338 138 38   -  -   -  -
34292  39 139 239 339   -  - 239 39   -  -
34293  40 140 240 340 140 40   -  - 340 40
34294  41 141 241 341   -  -   -  -   -  -
34295  42 142 242 342 142 42 242 42   -  -
34296  43 143 243 343   -  -   -  -   -  -
34297  44 144 244 344 144 44   -  -   -  -
34298  45 145 245 345   -  - 245 45 345 45
34299  46 146 246 346 146 46   -  -   -  -
34300  47 147 247 347   -  -   -  -   -  -
34301  48 148 248 348 148 48 248 48   -  -
34302  49 149 249 349   -  -   -  -   -  -
34303  50 150 250 350 150 50   -  - 350 50
34304  51 151 251 351   -  - 251 51   -  -
34305  52 152 252 352 152 52   -  -   -  -
34306  53 153 253 353   -  -   -  -   -  -
34307  54 154 254 354 154 54 254 54   -  -
34308  55 155 255 355   -  -   -  - 355 55
34309  56 156 256 356 156 56   -  -   -  -
34310  57 157 257 357   -  - 257 57   -  -
34311  58 158 258 358 158 58   -  -   -  -
34312  59 159 259 359   -  -   -  -   -  -
34313  60 160 260 360 160 60 260 60 360 60
34314  61 161 261 361   -  -   -  -   -  -
34315  62 162 262 362 162 62   -  -   -  -
34316  63 163 263 363   -  - 263 63   -  -
34317  64 164 264 364 164 64   -  -   -  -
34318  65 165 265 365   -  -   -  - 365 65
34319  66 166 266 366 166 66 266 66   -  -
34320  67 167 267 367   -  -   -  -   -  -
34321  68 168 268 368 168 68   -  -   -  -
34322  69 169 269 369   -  - 269 69   -  -
34323  70 170 270 370 170 70   -  - 370 70
34324  71 171 271 371   -  -   -  -   -  -
34325  72 172 272 372 172 72 272 72   -  -
34326  73 173 273 373   -  -   -  -   -  -
34327  74 174 274 374 174 74   -  -   -  -
34328  75 175 275 375   -  - 275 75 375 75
34329  76 176 276 376 176 76   -  -   -  -
34330  77 177 277 377   -  -   -  -   -  -
34331  78 178 278 378 178 78 278 78   -  -
34332  79 179 279 379   -  -   -  -   -  -
34333  80 180 280 380 180 80   -  - 380 80
34334  81 181 281 381   -  - 281 81   -  -
34335  82 182 282 382 182 82   -  -   -  -
34336  83 183 283 383   -  -   -  -   -  -
34337  84 184 284 384 184 84 284 84   -  -
34338  85 185 285 385   -  -   -  - 385 85
34339  86 186 286 386 186 86   -  -   -  -
34340  87 187 287 387   -  - 287 87   -  -
34341  88 188 288 388 188 88   -  -   -  -
34342  89 189 289 389   -  -   -  -   -  -
34343  90 190 290 390 190 90 290 90 390 90
34344  91 191 291 391   -  -   -  -   -  -
34345  92 192 292 392 192 92   -  -   -  -
34346  93 193 293 393   -  - 293 93   -  -
34347  94 194 294 394 194 94   -  -   -  -
34348  95 195 295 395   -  -   -  - 395 95
34349  96   - 296 396   -  -   -  -   -  -
34350  97 197   - 397   -  -   -  -   -  -
34351  98 198 298   -   -  -   -  -   -  -
34352  99   -   -   -   -  -   -  -   -  -
34353   -   -   -   - 100  0   -  -   -  -
34354   -   -   -   -   -  -   -  - 300  0
34355}
34356do_execsql_test joinD-1159 {
34357  SELECT t1.*, t2.*, t3.*, t4.*
34358  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34359  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34360  FULL JOIN t4 ON t1.d=t4.d
34361  WHERE t4.z>0
34362  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34363} {
34364   5 105 205 305   -  -   -  - 305  5
34365  10 110 210 310 110 10   -  - 310 10
34366  15 115 215 315   -  - 215 15 315 15
34367  20 120 220 320 120 20   -  - 320 20
34368  25 125 225 325   -  -   -  - 325 25
34369  30 130 230 330 130 30 230 30 330 30
34370  35 135 235 335   -  -   -  - 335 35
34371  40 140 240 340 140 40   -  - 340 40
34372  45 145 245 345   -  - 245 45 345 45
34373  50 150 250 350 150 50   -  - 350 50
34374  55 155 255 355   -  -   -  - 355 55
34375  60 160 260 360 160 60 260 60 360 60
34376  65 165 265 365   -  -   -  - 365 65
34377  70 170 270 370 170 70   -  - 370 70
34378  75 175 275 375   -  - 275 75 375 75
34379  80 180 280 380 180 80   -  - 380 80
34380  85 185 285 385   -  -   -  - 385 85
34381  90 190 290 390 190 90 290 90 390 90
34382  95 195 295 395   -  -   -  - 395 95
34383}
34384do_execsql_test joinD-1160 {
34385  SELECT t1.*, t2.*, t3.*, t4.*
34386  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34387  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34388  FULL JOIN t4 ON t1.d=t4.d
34389  WHERE t4.z IS NULL OR t4.z>0
34390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34391} {
34392   1 101 201 301   -  -   -  -   -  -
34393   2 102 202 302 102  2   -  -   -  -
34394   3 103 203 303   -  - 203  3   -  -
34395   4 104 204 304 104  4   -  -   -  -
34396   5 105 205 305   -  -   -  - 305  5
34397   6 106 206 306 106  6 206  6   -  -
34398   7 107 207 307   -  -   -  -   -  -
34399   8 108 208 308 108  8   -  -   -  -
34400   9 109 209 309   -  - 209  9   -  -
34401  10 110 210 310 110 10   -  - 310 10
34402  11 111 211 311   -  -   -  -   -  -
34403  12 112 212 312 112 12 212 12   -  -
34404  13 113 213 313   -  -   -  -   -  -
34405  14 114 214 314 114 14   -  -   -  -
34406  15 115 215 315   -  - 215 15 315 15
34407  16 116 216 316 116 16   -  -   -  -
34408  17 117 217 317   -  -   -  -   -  -
34409  18 118 218 318 118 18 218 18   -  -
34410  19 119 219 319   -  -   -  -   -  -
34411  20 120 220 320 120 20   -  - 320 20
34412  21 121 221 321   -  - 221 21   -  -
34413  22 122 222 322 122 22   -  -   -  -
34414  23 123 223 323   -  -   -  -   -  -
34415  24 124 224 324 124 24 224 24   -  -
34416  25 125 225 325   -  -   -  - 325 25
34417  26 126 226 326 126 26   -  -   -  -
34418  27 127 227 327   -  - 227 27   -  -
34419  28 128 228 328 128 28   -  -   -  -
34420  29 129 229 329   -  -   -  -   -  -
34421  30 130 230 330 130 30 230 30 330 30
34422  31 131 231 331   -  -   -  -   -  -
34423  32 132 232 332 132 32   -  -   -  -
34424  33 133 233 333   -  - 233 33   -  -
34425  34 134 234 334 134 34   -  -   -  -
34426  35 135 235 335   -  -   -  - 335 35
34427  36 136 236 336 136 36 236 36   -  -
34428  37 137 237 337   -  -   -  -   -  -
34429  38 138 238 338 138 38   -  -   -  -
34430  39 139 239 339   -  - 239 39   -  -
34431  40 140 240 340 140 40   -  - 340 40
34432  41 141 241 341   -  -   -  -   -  -
34433  42 142 242 342 142 42 242 42   -  -
34434  43 143 243 343   -  -   -  -   -  -
34435  44 144 244 344 144 44   -  -   -  -
34436  45 145 245 345   -  - 245 45 345 45
34437  46 146 246 346 146 46   -  -   -  -
34438  47 147 247 347   -  -   -  -   -  -
34439  48 148 248 348 148 48 248 48   -  -
34440  49 149 249 349   -  -   -  -   -  -
34441  50 150 250 350 150 50   -  - 350 50
34442  51 151 251 351   -  - 251 51   -  -
34443  52 152 252 352 152 52   -  -   -  -
34444  53 153 253 353   -  -   -  -   -  -
34445  54 154 254 354 154 54 254 54   -  -
34446  55 155 255 355   -  -   -  - 355 55
34447  56 156 256 356 156 56   -  -   -  -
34448  57 157 257 357   -  - 257 57   -  -
34449  58 158 258 358 158 58   -  -   -  -
34450  59 159 259 359   -  -   -  -   -  -
34451  60 160 260 360 160 60 260 60 360 60
34452  61 161 261 361   -  -   -  -   -  -
34453  62 162 262 362 162 62   -  -   -  -
34454  63 163 263 363   -  - 263 63   -  -
34455  64 164 264 364 164 64   -  -   -  -
34456  65 165 265 365   -  -   -  - 365 65
34457  66 166 266 366 166 66 266 66   -  -
34458  67 167 267 367   -  -   -  -   -  -
34459  68 168 268 368 168 68   -  -   -  -
34460  69 169 269 369   -  - 269 69   -  -
34461  70 170 270 370 170 70   -  - 370 70
34462  71 171 271 371   -  -   -  -   -  -
34463  72 172 272 372 172 72 272 72   -  -
34464  73 173 273 373   -  -   -  -   -  -
34465  74 174 274 374 174 74   -  -   -  -
34466  75 175 275 375   -  - 275 75 375 75
34467  76 176 276 376 176 76   -  -   -  -
34468  77 177 277 377   -  -   -  -   -  -
34469  78 178 278 378 178 78 278 78   -  -
34470  79 179 279 379   -  -   -  -   -  -
34471  80 180 280 380 180 80   -  - 380 80
34472  81 181 281 381   -  - 281 81   -  -
34473  82 182 282 382 182 82   -  -   -  -
34474  83 183 283 383   -  -   -  -   -  -
34475  84 184 284 384 184 84 284 84   -  -
34476  85 185 285 385   -  -   -  - 385 85
34477  86 186 286 386 186 86   -  -   -  -
34478  87 187 287 387   -  - 287 87   -  -
34479  88 188 288 388 188 88   -  -   -  -
34480  89 189 289 389   -  -   -  -   -  -
34481  90 190 290 390 190 90 290 90 390 90
34482  91 191 291 391   -  -   -  -   -  -
34483  92 192 292 392 192 92   -  -   -  -
34484  93 193 293 393   -  - 293 93   -  -
34485  94 194 294 394 194 94   -  -   -  -
34486  95 195 295 395   -  -   -  - 395 95
34487  96   - 296 396   -  -   -  -   -  -
34488  97 197   - 397   -  -   -  -   -  -
34489  98 198 298   -   -  -   -  -   -  -
34490  99   -   -   -   -  -   -  -   -  -
34491   -   -   -   - 100  0   -  -   -  -
34492   -   -   -   -   -  - 200  0   -  -
34493}
34494do_execsql_test joinD-1161 {
34495  SELECT t1.*, t2.*, t3.*, t4.*
34496  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34497  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34498  FULL JOIN t4 ON t1.d=t4.d
34499  WHERE t2.x>0 AND t4.z>0
34500  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34501} {
34502  10 110 210 310 110 10   -  - 310 10
34503  20 120 220 320 120 20   -  - 320 20
34504  30 130 230 330 130 30 230 30 330 30
34505  40 140 240 340 140 40   -  - 340 40
34506  50 150 250 350 150 50   -  - 350 50
34507  60 160 260 360 160 60 260 60 360 60
34508  70 170 270 370 170 70   -  - 370 70
34509  80 180 280 380 180 80   -  - 380 80
34510  90 190 290 390 190 90 290 90 390 90
34511}
34512do_execsql_test joinD-1162 {
34513  SELECT t1.*, t2.*, t3.*, t4.*
34514  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34515  FULL JOIN t3 ON t1.c=t3.c
34516  FULL JOIN t4 ON t1.d=t4.d
34517  WHERE t4.z>0 AND t3.y>0
34518  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34519} {
34520  15 115 215 315   -  - 215 15 315 15
34521  30 130 230 330 130 30 230 30 330 30
34522  45 145 245 345   -  - 245 45 345 45
34523  60 160 260 360 160 60 260 60 360 60
34524  75 175 275 375   -  - 275 75 375 75
34525  90 190 290 390 190 90 290 90 390 90
34526}
34527do_execsql_test joinD-1163 {
34528  SELECT t1.*, t2.*, t3.*, t4.*
34529  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34530  FULL JOIN t3 ON t1.c=t3.c
34531  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34532  WHERE t2.x>0 AND t3.y>0
34533  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34534} {
34535   6 106 206 306 106  6 206  6   -  -
34536  12 112 212 312 112 12 212 12   -  -
34537  18 118 218 318 118 18 218 18   -  -
34538  24 124 224 324 124 24 224 24   -  -
34539  30 130 230 330 130 30 230 30 330 30
34540  36 136 236 336 136 36 236 36   -  -
34541  42 142 242 342 142 42 242 42   -  -
34542  48 148 248 348 148 48 248 48   -  -
34543  54 154 254 354 154 54 254 54   -  -
34544  60 160 260 360 160 60 260 60 360 60
34545  66 166 266 366 166 66 266 66   -  -
34546  72 172 272 372 172 72 272 72   -  -
34547  78 178 278 378 178 78 278 78   -  -
34548  84 184 284 384 184 84 284 84   -  -
34549  90 190 290 390 190 90 290 90 390 90
34550}
34551do_execsql_test joinD-1164 {
34552  SELECT t1.*, t2.*, t3.*, t4.*
34553  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34554  FULL JOIN t3 ON t1.c=t3.c
34555  FULL JOIN t4 ON t1.d=t4.d
34556  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
34557  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34558} {
34559  30 130 230 330 130 30 230 30 330 30
34560  60 160 260 360 160 60 260 60 360 60
34561  90 190 290 390 190 90 290 90 390 90
34562}
34563do_execsql_test joinD-1165 {
34564  SELECT t1.*, t2.*, t3.*, t4.*
34565  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
34566  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
34567  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
34568  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34569} {
34570   0 100 200 300   -  -   -  -   -  -
34571   1 101 201 301   -  -   -  -   -  -
34572   2 102 202 302 102  2   -  -   -  -
34573   3 103 203 303   -  - 203  3   -  -
34574   4 104 204 304 104  4   -  -   -  -
34575   5 105 205 305   -  -   -  - 305  5
34576   6 106 206 306 106  6 206  6   -  -
34577   7 107 207 307   -  -   -  -   -  -
34578   8 108 208 308 108  8   -  -   -  -
34579   9 109 209 309   -  - 209  9   -  -
34580  10 110 210 310 110 10   -  - 310 10
34581  11 111 211 311   -  -   -  -   -  -
34582  12 112 212 312 112 12 212 12   -  -
34583  13 113 213 313   -  -   -  -   -  -
34584  14 114 214 314 114 14   -  -   -  -
34585  15 115 215 315   -  - 215 15 315 15
34586  16 116 216 316 116 16   -  -   -  -
34587  17 117 217 317   -  -   -  -   -  -
34588  18 118 218 318 118 18 218 18   -  -
34589  19 119 219 319   -  -   -  -   -  -
34590  20 120 220 320 120 20   -  - 320 20
34591  21 121 221 321   -  - 221 21   -  -
34592  22 122 222 322 122 22   -  -   -  -
34593  23 123 223 323   -  -   -  -   -  -
34594  24 124 224 324 124 24 224 24   -  -
34595  25 125 225 325   -  -   -  - 325 25
34596  26 126 226 326 126 26   -  -   -  -
34597  27 127 227 327   -  - 227 27   -  -
34598  28 128 228 328 128 28   -  -   -  -
34599  29 129 229 329   -  -   -  -   -  -
34600  30 130 230 330 130 30 230 30 330 30
34601  31 131 231 331   -  -   -  -   -  -
34602  32 132 232 332 132 32   -  -   -  -
34603  33 133 233 333   -  - 233 33   -  -
34604  34 134 234 334 134 34   -  -   -  -
34605  35 135 235 335   -  -   -  - 335 35
34606  36 136 236 336 136 36 236 36   -  -
34607  37 137 237 337   -  -   -  -   -  -
34608  38 138 238 338 138 38   -  -   -  -
34609  39 139 239 339   -  - 239 39   -  -
34610  40 140 240 340 140 40   -  - 340 40
34611  41 141 241 341   -  -   -  -   -  -
34612  42 142 242 342 142 42 242 42   -  -
34613  43 143 243 343   -  -   -  -   -  -
34614  44 144 244 344 144 44   -  -   -  -
34615  45 145 245 345   -  - 245 45 345 45
34616  46 146 246 346 146 46   -  -   -  -
34617  47 147 247 347   -  -   -  -   -  -
34618  48 148 248 348 148 48 248 48   -  -
34619  49 149 249 349   -  -   -  -   -  -
34620  50 150 250 350 150 50   -  - 350 50
34621  51 151 251 351   -  - 251 51   -  -
34622  52 152 252 352 152 52   -  -   -  -
34623  53 153 253 353   -  -   -  -   -  -
34624  54 154 254 354 154 54 254 54   -  -
34625  55 155 255 355   -  -   -  - 355 55
34626  56 156 256 356 156 56   -  -   -  -
34627  57 157 257 357   -  - 257 57   -  -
34628  58 158 258 358 158 58   -  -   -  -
34629  59 159 259 359   -  -   -  -   -  -
34630  60 160 260 360 160 60 260 60 360 60
34631  61 161 261 361   -  -   -  -   -  -
34632  62 162 262 362 162 62   -  -   -  -
34633  63 163 263 363   -  - 263 63   -  -
34634  64 164 264 364 164 64   -  -   -  -
34635  65 165 265 365   -  -   -  - 365 65
34636  66 166 266 366 166 66 266 66   -  -
34637  67 167 267 367   -  -   -  -   -  -
34638  68 168 268 368 168 68   -  -   -  -
34639  69 169 269 369   -  - 269 69   -  -
34640  70 170 270 370 170 70   -  - 370 70
34641  71 171 271 371   -  -   -  -   -  -
34642  72 172 272 372 172 72 272 72   -  -
34643  73 173 273 373   -  -   -  -   -  -
34644  74 174 274 374 174 74   -  -   -  -
34645  75 175 275 375   -  - 275 75 375 75
34646  76 176 276 376 176 76   -  -   -  -
34647  77 177 277 377   -  -   -  -   -  -
34648  78 178 278 378 178 78 278 78   -  -
34649  79 179 279 379   -  -   -  -   -  -
34650  80 180 280 380 180 80   -  - 380 80
34651  81 181 281 381   -  - 281 81   -  -
34652  82 182 282 382 182 82   -  -   -  -
34653  83 183 283 383   -  -   -  -   -  -
34654  84 184 284 384 184 84 284 84   -  -
34655  85 185 285 385   -  -   -  - 385 85
34656  86 186 286 386 186 86   -  -   -  -
34657  87 187 287 387   -  - 287 87   -  -
34658  88 188 288 388 188 88   -  -   -  -
34659  89 189 289 389   -  -   -  -   -  -
34660  90 190 290 390 190 90 290 90 390 90
34661  91 191 291 391   -  -   -  -   -  -
34662  92 192 292 392 192 92   -  -   -  -
34663  93 193 293 393   -  - 293 93   -  -
34664  94 194 294 394 194 94   -  -   -  -
34665  95 195 295 395   -  -   -  - 395 95
34666  96   - 296 396   -  -   -  -   -  -
34667  97 197   - 397   -  -   -  -   -  -
34668  98 198 298   -   -  -   -  -   -  -
34669  99   -   -   -   -  -   -  -   -  -
34670   -   -   -   - 100  0   -  -   -  -
34671   -   -   -   -   -  - 200  0   -  -
34672   -   -   -   -   -  -   -  - 300  0
34673}
34674do_execsql_test joinD-1166 {
34675  SELECT t1.*, t2.*, t3.*, t4.*
34676  FROM t1 FULL JOIN t2 ON t2.x>0
34677  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
34678  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
34679  WHERE t1.b = t2.b
34680  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34681} {
34682   2 102 202 302 102  2   -  -   -  -
34683   4 104 204 304 104  4   -  -   -  -
34684   6 106 206 306 106  6 206  6   -  -
34685   8 108 208 308 108  8   -  -   -  -
34686  10 110 210 310 110 10   -  - 310 10
34687  12 112 212 312 112 12 212 12   -  -
34688  14 114 214 314 114 14   -  -   -  -
34689  16 116 216 316 116 16   -  -   -  -
34690  18 118 218 318 118 18 218 18   -  -
34691  20 120 220 320 120 20   -  - 320 20
34692  22 122 222 322 122 22   -  -   -  -
34693  24 124 224 324 124 24 224 24   -  -
34694  26 126 226 326 126 26   -  -   -  -
34695  28 128 228 328 128 28   -  -   -  -
34696  30 130 230 330 130 30 230 30 330 30
34697  32 132 232 332 132 32   -  -   -  -
34698  34 134 234 334 134 34   -  -   -  -
34699  36 136 236 336 136 36 236 36   -  -
34700  38 138 238 338 138 38   -  -   -  -
34701  40 140 240 340 140 40   -  - 340 40
34702  42 142 242 342 142 42 242 42   -  -
34703  44 144 244 344 144 44   -  -   -  -
34704  46 146 246 346 146 46   -  -   -  -
34705  48 148 248 348 148 48 248 48   -  -
34706  50 150 250 350 150 50   -  - 350 50
34707  52 152 252 352 152 52   -  -   -  -
34708  54 154 254 354 154 54 254 54   -  -
34709  56 156 256 356 156 56   -  -   -  -
34710  58 158 258 358 158 58   -  -   -  -
34711  60 160 260 360 160 60 260 60 360 60
34712  62 162 262 362 162 62   -  -   -  -
34713  64 164 264 364 164 64   -  -   -  -
34714  66 166 266 366 166 66 266 66   -  -
34715  68 168 268 368 168 68   -  -   -  -
34716  70 170 270 370 170 70   -  - 370 70
34717  72 172 272 372 172 72 272 72   -  -
34718  74 174 274 374 174 74   -  -   -  -
34719  76 176 276 376 176 76   -  -   -  -
34720  78 178 278 378 178 78 278 78   -  -
34721  80 180 280 380 180 80   -  - 380 80
34722  82 182 282 382 182 82   -  -   -  -
34723  84 184 284 384 184 84 284 84   -  -
34724  86 186 286 386 186 86   -  -   -  -
34725  88 188 288 388 188 88   -  -   -  -
34726  90 190 290 390 190 90 290 90 390 90
34727  92 192 292 392 192 92   -  -   -  -
34728  94 194 294 394 194 94   -  -   -  -
34729}
34730do_execsql_test joinD-1167 {
34731  SELECT t1.*, t2.*, t3.*, t4.*
34732  FROM t1 FULL JOIN t2 ON t2.x>0
34733  FULL JOIN t3 ON t3.y>0
34734  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
34735  WHERE t1.b = t2.b AND t1.c = t3.c
34736  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34737} {
34738   6 106 206 306 106  6 206  6   -  -
34739  12 112 212 312 112 12 212 12   -  -
34740  18 118 218 318 118 18 218 18   -  -
34741  24 124 224 324 124 24 224 24   -  -
34742  30 130 230 330 130 30 230 30 330 30
34743  36 136 236 336 136 36 236 36   -  -
34744  42 142 242 342 142 42 242 42   -  -
34745  48 148 248 348 148 48 248 48   -  -
34746  54 154 254 354 154 54 254 54   -  -
34747  60 160 260 360 160 60 260 60 360 60
34748  66 166 266 366 166 66 266 66   -  -
34749  72 172 272 372 172 72 272 72   -  -
34750  78 178 278 378 178 78 278 78   -  -
34751  84 184 284 384 184 84 284 84   -  -
34752  90 190 290 390 190 90 290 90 390 90
34753}
34754do_execsql_test joinD-1168 {
34755  SELECT t1.*, t2.*, t3.*, t4.*
34756  FROM t1 FULL JOIN t2 ON t2.x>0
34757  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
34758  FULL JOIN t4 ON t4.z>0
34759  WHERE t1.b = t2.b AND t1.d = t4.d
34760  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34761} {
34762  10 110 210 310 110 10   -  - 310 10
34763  20 120 220 320 120 20   -  - 320 20
34764  30 130 230 330 130 30 230 30 330 30
34765  40 140 240 340 140 40   -  - 340 40
34766  50 150 250 350 150 50   -  - 350 50
34767  60 160 260 360 160 60 260 60 360 60
34768  70 170 270 370 170 70   -  - 370 70
34769  80 180 280 380 180 80   -  - 380 80
34770  90 190 290 390 190 90 290 90 390 90
34771}
34772#############################################################################
34773# The following are extra tests added manually
34774do_execsql_test joinD-extra-1000 {
34775  CREATE VIEW v1 AS
34776    SELECT *
34777    FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
34778    RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
34779    LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0;
34780  CREATE TRIGGER v1r1 INSTEAD OF UPDATE OF c ON v1 BEGIN
34781    UPDATE t1 SET c=new.c WHERE (a,b,c,d) IS (old.a,old.b,old.c,old.d);
34782    UPDATE t3 SET c=new.c WHERE (c,y) IS (old.c,old.y);
34783  END;
34784  SELECT * FROM v1 WHERE y BETWEEN 30 AND 40 ORDER BY y;
34785} {
34786  30 130 230 330 130 30 230 30 330 30
34787   -   -   -   -   -  - 233 33   -  -
34788  36 136 236 336 136 36 236 36   -  -
34789   -   -   -   -   -  - 239 39   -  -
34790}
34791do_execsql_test joinD-extra-1010 {
34792  BEGIN;
34793  UPDATE v1 SET c=c+1000 WHERE y BETWEEN 30 and 40;
34794  SELECT * FROM v1 WHERE y BETWEEN 30 AND 40 ORDER BY y;
34795  ROLLBACK;
34796} {
34797  30 130 1230 330 130 30 1230 30 330 30
34798   -   -    -   -   -  -  233 33   -  -
34799  36 136 1236 336 136 36 1236 36   -  -
34800   -   -    -   -   -  -  239 39   -  -
34801}
34802finish_test
34803#############################################################################
34804# This is the TCL script used to generate the psql script that generated
34805# the data above.
34806#
34807# puts "
34808# \\pset border off
34809# \\pset tuples_only on
34810# \\pset null -
34811#
34812# DROP TABLE IF EXISTS t1;
34813# DROP TABLE IF EXISTS t2;
34814# DROP TABLE IF EXISTS t3;
34815# DROP TABLE IF EXISTS t4;
34816# CREATE TABLE t1(a INT, b INT, c INT, d INT);
34817# WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
34818#   INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
34819# CREATE TABLE t2(b INT, x INT);
34820# INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
34821# CREATE INDEX t2b ON t2(b);
34822# CREATE TABLE t3(c INT, y INT);
34823# INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
34824# CREATE INDEX t3c ON t3(c);
34825# CREATE TABLE t4(d INT, z INT);
34826# INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
34827# CREATE INDEX t4d ON t4(d);
34828# INSERT INTO t1(a,b,c,d) VALUES
34829#   (96,NULL,296,396),
34830#   (97,197,NULL,397),
34831#   (98,198,298,NULL),
34832#   (99,NULL,NULL,NULL);
34833# "
34834#
34835# proc echo {prefix txt} {
34836#   regsub -all {\n} $txt \n$prefix txt
34837#   puts "$prefix$txt"
34838# }
34839#
34840# set n 0
34841# foreach j1 {INNER LEFT RIGHT FULL} {
34842#   foreach j2 {INNER LEFT RIGHT FULL} {
34843#     foreach j3 {INNER LEFT RIGHT FULL} {
34844#
34845# incr n
34846# set q1 ""
34847# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34848# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34849# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34850# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34851# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34852#
34853# echo "\\qecho " "do_execsql_test joinB-$n \{"
34854# echo "\\qecho X  " $q1
34855# echo "\\qecho " "\} \{"
34856# puts $q1
34857# echo "\\qecho " "\}"
34858#
34859# if {$j1!="FULL"} {
34860#   incr n
34861#   set q1 ""
34862#   append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34863#   append q1 "  FROM t1 $j1 JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0\n"
34864#   append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34865#   append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34866#   append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34867#
34868#   echo "\\qecho " "do_execsql_test joinB-$n \{"
34869#   echo "\\qecho X  " $q1
34870#   echo "\\qecho " "\} \{"
34871#   puts $q1
34872#   echo "\\qecho " "\}"
34873# }
34874#
34875# incr n
34876# set q1 ""
34877# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34878# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
34879# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34880# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34881# append q1 " WHERE t2.x>0\n"
34882# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34883#
34884# echo "\\qecho " "do_execsql_test joinB-$n \{"
34885# echo "\\qecho X  " $q1
34886# echo "\\qecho " "\} \{"
34887# puts $q1
34888# echo "\\qecho " "\}"
34889#
34890# incr n
34891# set q1 ""
34892# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34893# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
34894# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34895# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34896# append q1 " WHERE (t2.x>0 OR t2.x IS NULL)\n"
34897# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34898#
34899# echo "\\qecho " "do_execsql_test joinB-$n \{"
34900# echo "\\qecho X  " $q1
34901# echo "\\qecho " "\} \{"
34902# puts $q1
34903# echo "\\qecho " "\}"
34904#
34905# incr n
34906# set q1 ""
34907# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34908# append q1 "  FROM t1 $j1 JOIN t2 ON true\n"
34909# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34910# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34911# append q1 " WHERE t1.b=t2.b AND t2.x>0\n"
34912# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34913#
34914# echo "\\qecho " "do_execsql_test joinB-$n \{"
34915# echo "\\qecho X  " $q1
34916# echo "\\qecho " "\} \{"
34917# puts $q1
34918# echo "\\qecho " "\}"
34919#
34920# incr n
34921# set q1 ""
34922# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34923# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34924# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
34925# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34926# append q1 " WHERE t3.y>0\n"
34927# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34928#
34929# echo "\\qecho " "do_execsql_test joinB-$n \{"
34930# echo "\\qecho X  " $q1
34931# echo "\\qecho " "\} \{"
34932# puts $q1
34933# echo "\\qecho " "\}"
34934#
34935# incr n
34936# set q1 ""
34937# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34938# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34939# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
34940# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34941# append q1 " WHERE t3.y>0 OR t3.y IS NULL\n"
34942# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34943#
34944# echo "\\qecho " "do_execsql_test joinB-$n \{"
34945# echo "\\qecho X  " $q1
34946# echo "\\qecho " "\} \{"
34947# puts $q1
34948# echo "\\qecho " "\}"
34949#
34950# incr n
34951# set q1 ""
34952# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34953# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34954# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34955# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34956# append q1 " WHERE t4.z>0\n"
34957# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34958#
34959# echo "\\qecho " "do_execsql_test joinB-$n \{"
34960# echo "\\qecho X  " $q1
34961# echo "\\qecho " "\} \{"
34962# puts $q1
34963# echo "\\qecho " "\}"
34964#
34965# incr n
34966# set q1 ""
34967# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34968# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34969# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34970# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34971# append q1 " WHERE t4.z IS NULL OR t4.z>0\n"
34972# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34973#
34974# echo "\\qecho " "do_execsql_test joinB-$n \{"
34975# echo "\\qecho X  " $q1
34976# echo "\\qecho " "\} \{"
34977# puts $q1
34978# echo "\\qecho " "\}"
34979#
34980# incr n
34981# set q1 ""
34982# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34983# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
34984# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34985# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34986# append q1 " WHERE t2.x>0 AND t4.z>0\n"
34987# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34988#
34989# echo "\\qecho " "do_execsql_test joinB-$n \{"
34990# echo "\\qecho X  " $q1
34991# echo "\\qecho " "\} \{"
34992# puts $q1
34993# echo "\\qecho " "\}"
34994#
34995# incr n
34996# set q1 ""
34997# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34998# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34999# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
35000# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
35001# append q1 " WHERE t4.z>0 AND t3.y>0\n"
35002# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35003#
35004# echo "\\qecho " "do_execsql_test joinB-$n \{"
35005# echo "\\qecho X  " $q1
35006# echo "\\qecho " "\} \{"
35007# puts $q1
35008# echo "\\qecho " "\}"
35009#
35010# incr n
35011# set q1 ""
35012# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35013# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
35014# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
35015# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
35016# append q1 " WHERE t2.x>0 AND t3.y>0\n"
35017# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35018#
35019# echo "\\qecho " "do_execsql_test joinB-$n \{"
35020# echo "\\qecho X  " $q1
35021# echo "\\qecho " "\} \{"
35022# puts $q1
35023# echo "\\qecho " "\}"
35024#
35025# incr n
35026# set q1 ""
35027# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35028# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
35029# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
35030# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
35031# append q1 " WHERE t2.x>0 AND t3.y>0 AND t4.z>0\n"
35032# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35033#
35034# echo "\\qecho " "do_execsql_test joinB-$n \{"
35035# echo "\\qecho X  " $q1
35036# echo "\\qecho " "\} \{"
35037# puts $q1
35038# echo "\\qecho " "\}"
35039#
35040# set op1 [expr {$j1=="FULL"?"=":"IS NOT DISTINCT FROM"}]
35041# set op2 [expr {$j2=="FULL"?"=":"IS NOT DISTINCT FROM"}]
35042# set op3 [expr {$j3=="FULL"?"=":"IS NOT DISTINCT FROM"}]
35043# incr n
35044# set q1 ""
35045# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35046# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b $op1 t2.b AND t2.x>0\n"
35047# append q1 "          $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
35048# append q1 "          $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
35049# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35050#
35051# echo "\\qecho " "do_execsql_test joinB-$n \{"
35052# echo "\\qecho X  " $q1
35053# echo "\\qecho " "\} \{"
35054# puts $q1
35055# echo "\\qecho " "\}"
35056#
35057# incr n
35058# set q1 ""
35059# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35060# append q1 "  FROM t1 $j1 JOIN t2 ON t2.x>0\n"
35061# append q1 "          $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
35062# append q1 "          $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
35063# append q1 " WHERE t1.b $op1 t2.b\n"
35064# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35065#
35066# echo "\\qecho " "do_execsql_test joinB-$n \{"
35067# echo "\\qecho X  " $q1
35068# echo "\\qecho " "\} \{"
35069# puts $q1
35070# echo "\\qecho " "\}"
35071#
35072# incr n
35073# set q1 ""
35074# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35075# append q1 "  FROM t1 $j1 JOIN t2 ON t2.x>0\n"
35076# append q1 "          $j2 JOIN t3 ON t3.y>0\n"
35077# append q1 "          $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
35078# append q1 " WHERE t1.b $op1 t2.b AND t1.c $op2 t3.c\n"
35079# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35080#
35081# echo "\\qecho " "do_execsql_test joinB-$n \{"
35082# echo "\\qecho X  " $q1
35083# echo "\\qecho " "\} \{"
35084# puts $q1
35085# echo "\\qecho " "\}"
35086#
35087# incr n
35088# set q1 ""
35089# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35090# append q1 "  FROM t1 $j1 JOIN t2 ON t2.x>0\n"
35091# append q1 "          $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
35092# append q1 "          $j3 JOIN t4 ON t4.z>0\n"
35093# append q1 " WHERE t1.b $op1 t2.b AND t1.d $op3 t4.d\n"
35094# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35095#
35096# echo "\\qecho " "do_execsql_test joinB-$n \{"
35097# echo "\\qecho X  " $q1
35098# echo "\\qecho " "\} \{"
35099# puts $q1
35100# echo "\\qecho " "\}"
35101#
35102# if {$j1!="FULL"} {
35103#   incr n
35104#   set q1 ""
35105#   append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35106#   append q1 "  FROM t1 $j1 JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0\n"
35107#   append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
35108#   append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
35109#   append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35110#
35111#   echo "\\qecho " "do_execsql_test joinB-$n \{"
35112#   echo "\\qecho X  " $q1
35113#   echo "\\qecho " "\} \{"
35114#   puts $q1
35115#   echo "\\qecho " "\}"
35116# }
35117#
35118# if {$j2!="FULL"} {
35119#   incr n
35120#   set q1 ""
35121#   append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35122#   append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
35123#   append q1 "          $j2 JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0\n"
35124#   append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
35125#   append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35126#
35127#   echo "\\qecho " "do_execsql_test joinB-$n \{"
35128#   echo "\\qecho X  " $q1
35129#   echo "\\qecho " "\} \{"
35130#   puts $q1
35131#   echo "\\qecho " "\}"
35132# }
35133#     }
35134#   }
35135# }
35136#
35137