xref: /sqlite-3.40.0/test/joinD.test (revision b8857447)
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# This file implements tests for JOINs that use Bloom filters.
14#
15# The test case output is (mostly) all generated by PostgreSQL 14.  This
16# test module was created as follows:
17#
18#   1.   Run a TCL script (included at the bottom of this file) that
19#        generates an input script for "psql" that will run man
20#        diverse tests on joins.
21#
22#   2.   Run the script from step (1) through psql and collect the
23#        output.
24#
25#   3.   Make a few minor global search-and-replace operations to convert
26#        the psql output into a form suitable for this test module.
27#
28#   4.   Add this header, and the script content at the footer.
29#
30# A few extra tests that were not generated from postgresql output are
31# added at the end.
32#
33set testdir [file dirname $argv0]
34source $testdir/tester.tcl
35db nullvalue -
36db eval {
37  CREATE TABLE t1(a INT, b INT, c INT, d INT);
38  WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
39    INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
40  CREATE TABLE t2(b INT, x INT);
41  INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
42  CREATE INDEX t2b ON t2(b);
43  CREATE TABLE t3(c INT, y INT);
44  INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
45  CREATE INDEX t3c ON t3(c);
46  CREATE TABLE t4(d INT, z INT);
47  INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
48  CREATE INDEX t4d ON t4(d);
49  INSERT INTO t1(a,b,c,d) VALUES
50    (96,NULL,296,396),
51    (97,197,NULL,397),
52    (98,198,298,NULL),
53    (99,NULL,NULL,NULL);
54  ANALYZE;
55}
56do_execsql_test joinD-1 {
57  SELECT t1.*, t2.*, t3.*, t4.*
58  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
59  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
60  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
61  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
62} {
63  30 130 230 330 130 30 230 30 330 30
64  60 160 260 360 160 60 260 60 360 60
65  90 190 290 390 190 90 290 90 390 90
66}
67do_execsql_test joinD-2 {
68  SELECT t1.*, t2.*, t3.*, t4.*
69  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
70  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
71  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
72  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
73} {
74  30 130 230 330 130 30 230 30 330 30
75  60 160 260 360 160 60 260 60 360 60
76  90 190 290 390 190 90 290 90 390 90
77}
78do_execsql_test joinD-3 {
79  SELECT t1.*, t2.*, t3.*, t4.*
80  FROM t1 INNER JOIN t2 ON t1.b=t2.b
81  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
82  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
83  WHERE t2.x>0
84  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
85} {
86  30 130 230 330 130 30 230 30 330 30
87  60 160 260 360 160 60 260 60 360 60
88  90 190 290 390 190 90 290 90 390 90
89}
90do_execsql_test joinD-4 {
91  SELECT t1.*, t2.*, t3.*, t4.*
92  FROM t1 INNER JOIN t2 ON t1.b=t2.b
93  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
94  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
95  WHERE (t2.x>0 OR t2.x IS NULL)
96  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
97} {
98  30 130 230 330 130 30 230 30 330 30
99  60 160 260 360 160 60 260 60 360 60
100  90 190 290 390 190 90 290 90 390 90
101}
102do_execsql_test joinD-5 {
103  SELECT t1.*, t2.*, t3.*, t4.*
104  FROM t1 INNER JOIN t2 ON true
105  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
106  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
107  WHERE t1.b=t2.b AND t2.x>0
108  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
109} {
110  30 130 230 330 130 30 230 30 330 30
111  60 160 260 360 160 60 260 60 360 60
112  90 190 290 390 190 90 290 90 390 90
113}
114do_execsql_test joinD-6 {
115  SELECT t1.*, t2.*, t3.*, t4.*
116  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
117  INNER JOIN t3 ON t1.c=t3.c
118  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
119  WHERE t3.y>0
120  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
121} {
122  30 130 230 330 130 30 230 30 330 30
123  60 160 260 360 160 60 260 60 360 60
124  90 190 290 390 190 90 290 90 390 90
125}
126do_execsql_test joinD-7 {
127  SELECT t1.*, t2.*, t3.*, t4.*
128  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
129  INNER JOIN t3 ON t1.c=t3.c
130  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
131  WHERE t3.y>0 OR t3.y IS NULL
132  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
133} {
134  30 130 230 330 130 30 230 30 330 30
135  60 160 260 360 160 60 260 60 360 60
136  90 190 290 390 190 90 290 90 390 90
137}
138do_execsql_test joinD-8 {
139  SELECT t1.*, t2.*, t3.*, t4.*
140  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
141  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
142  INNER JOIN t4 ON t1.d=t4.d
143  WHERE t4.z>0
144  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
145} {
146  30 130 230 330 130 30 230 30 330 30
147  60 160 260 360 160 60 260 60 360 60
148  90 190 290 390 190 90 290 90 390 90
149}
150do_execsql_test joinD-9 {
151  SELECT t1.*, t2.*, t3.*, t4.*
152  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
153  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
154  INNER JOIN t4 ON t1.d=t4.d
155  WHERE t4.z IS NULL OR t4.z>0
156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
157} {
158  30 130 230 330 130 30 230 30 330 30
159  60 160 260 360 160 60 260 60 360 60
160  90 190 290 390 190 90 290 90 390 90
161}
162do_execsql_test joinD-10 {
163  SELECT t1.*, t2.*, t3.*, t4.*
164  FROM t1 INNER JOIN t2 ON t1.b=t2.b
165  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
166  INNER JOIN t4 ON t1.d=t4.d
167  WHERE t2.x>0 AND t4.z>0
168  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
169} {
170  30 130 230 330 130 30 230 30 330 30
171  60 160 260 360 160 60 260 60 360 60
172  90 190 290 390 190 90 290 90 390 90
173}
174do_execsql_test joinD-11 {
175  SELECT t1.*, t2.*, t3.*, t4.*
176  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
177  INNER JOIN t3 ON t1.c=t3.c
178  INNER JOIN t4 ON t1.d=t4.d
179  WHERE t4.z>0 AND t3.y>0
180  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
181} {
182  30 130 230 330 130 30 230 30 330 30
183  60 160 260 360 160 60 260 60 360 60
184  90 190 290 390 190 90 290 90 390 90
185}
186do_execsql_test joinD-12 {
187  SELECT t1.*, t2.*, t3.*, t4.*
188  FROM t1 INNER JOIN t2 ON t1.b=t2.b
189  INNER JOIN t3 ON t1.c=t3.c
190  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
191  WHERE t2.x>0 AND t3.y>0
192  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
193} {
194  30 130 230 330 130 30 230 30 330 30
195  60 160 260 360 160 60 260 60 360 60
196  90 190 290 390 190 90 290 90 390 90
197}
198do_execsql_test joinD-13 {
199  SELECT t1.*, t2.*, t3.*, t4.*
200  FROM t1 INNER JOIN t2 ON t1.b=t2.b
201  INNER JOIN t3 ON t1.c=t3.c
202  INNER JOIN t4 ON t1.d=t4.d
203  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
205} {
206  30 130 230 330 130 30 230 30 330 30
207  60 160 260 360 160 60 260 60 360 60
208  90 190 290 390 190 90 290 90 390 90
209}
210do_execsql_test joinD-14 {
211  SELECT t1.*, t2.*, t3.*, t4.*
212  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
213  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
214  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
215  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
216} {
217  30 130 230 330 130 30 230 30 330 30
218  60 160 260 360 160 60 260 60 360 60
219  90 190 290 390 190 90 290 90 390 90
220}
221do_execsql_test joinD-15 {
222  SELECT t1.*, t2.*, t3.*, t4.*
223  FROM t1 INNER JOIN t2 ON t2.x>0
224  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
225  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
226  WHERE t1.b IS NOT DISTINCT FROM t2.b
227  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
228} {
229  30 130 230 330 130 30 230 30 330 30
230  60 160 260 360 160 60 260 60 360 60
231  90 190 290 390 190 90 290 90 390 90
232}
233do_execsql_test joinD-16 {
234  SELECT t1.*, t2.*, t3.*, t4.*
235  FROM t1 INNER JOIN t2 ON t2.x>0
236  INNER JOIN t3 ON t3.y>0
237  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
238  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
239  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
240} {
241  30 130 230 330 130 30 230 30 330 30
242  60 160 260 360 160 60 260 60 360 60
243  90 190 290 390 190 90 290 90 390 90
244}
245do_execsql_test joinD-17 {
246  SELECT t1.*, t2.*, t3.*, t4.*
247  FROM t1 INNER JOIN t2 ON t2.x>0
248  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
249  INNER JOIN t4 ON t4.z>0
250  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
251  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
252} {
253  30 130 230 330 130 30 230 30 330 30
254  60 160 260 360 160 60 260 60 360 60
255  90 190 290 390 190 90 290 90 390 90
256}
257do_execsql_test joinD-18 {
258  SELECT t1.*, t2.*, t3.*, t4.*
259  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
260  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
261  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
262  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
263} {
264  30 130 230 330 130 30 230 30 330 30
265  60 160 260 360 160 60 260 60 360 60
266  90 190 290 390 190 90 290 90 390 90
267}
268do_execsql_test joinD-19 {
269  SELECT t1.*, t2.*, t3.*, t4.*
270  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
271  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
272  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
273  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
274} {
275  30 130 230 330 130 30 230 30 330 30
276  60 160 260 360 160 60 260 60 360 60
277  90 190 290 390 190 90 290 90 390 90
278}
279do_execsql_test joinD-20 {
280  SELECT t1.*, t2.*, t3.*, t4.*
281  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
282  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
283  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
285} {
286   6 106 206 306 106  6 206  6   -  -
287  12 112 212 312 112 12 212 12   -  -
288  18 118 218 318 118 18 218 18   -  -
289  24 124 224 324 124 24 224 24   -  -
290  30 130 230 330 130 30 230 30 330 30
291  36 136 236 336 136 36 236 36   -  -
292  42 142 242 342 142 42 242 42   -  -
293  48 148 248 348 148 48 248 48   -  -
294  54 154 254 354 154 54 254 54   -  -
295  60 160 260 360 160 60 260 60 360 60
296  66 166 266 366 166 66 266 66   -  -
297  72 172 272 372 172 72 272 72   -  -
298  78 178 278 378 178 78 278 78   -  -
299  84 184 284 384 184 84 284 84   -  -
300  90 190 290 390 190 90 290 90 390 90
301}
302do_execsql_test joinD-21 {
303  SELECT t1.*, t2.*, t3.*, t4.*
304  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
305  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
306  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
307  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
308} {
309   6 106 206 306 106  6 206  6   -  -
310  12 112 212 312 112 12 212 12   -  -
311  18 118 218 318 118 18 218 18   -  -
312  24 124 224 324 124 24 224 24   -  -
313  30 130 230 330 130 30 230 30 330 30
314  36 136 236 336 136 36 236 36   -  -
315  42 142 242 342 142 42 242 42   -  -
316  48 148 248 348 148 48 248 48   -  -
317  54 154 254 354 154 54 254 54   -  -
318  60 160 260 360 160 60 260 60 360 60
319  66 166 266 366 166 66 266 66   -  -
320  72 172 272 372 172 72 272 72   -  -
321  78 178 278 378 178 78 278 78   -  -
322  84 184 284 384 184 84 284 84   -  -
323  90 190 290 390 190 90 290 90 390 90
324}
325do_execsql_test joinD-22 {
326  SELECT t1.*, t2.*, t3.*, t4.*
327  FROM t1 INNER JOIN t2 ON t1.b=t2.b
328  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
329  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
330  WHERE t2.x>0
331  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
332} {
333   6 106 206 306 106  6 206  6   -  -
334  12 112 212 312 112 12 212 12   -  -
335  18 118 218 318 118 18 218 18   -  -
336  24 124 224 324 124 24 224 24   -  -
337  30 130 230 330 130 30 230 30 330 30
338  36 136 236 336 136 36 236 36   -  -
339  42 142 242 342 142 42 242 42   -  -
340  48 148 248 348 148 48 248 48   -  -
341  54 154 254 354 154 54 254 54   -  -
342  60 160 260 360 160 60 260 60 360 60
343  66 166 266 366 166 66 266 66   -  -
344  72 172 272 372 172 72 272 72   -  -
345  78 178 278 378 178 78 278 78   -  -
346  84 184 284 384 184 84 284 84   -  -
347  90 190 290 390 190 90 290 90 390 90
348}
349do_execsql_test joinD-23 {
350  SELECT t1.*, t2.*, t3.*, t4.*
351  FROM t1 INNER JOIN t2 ON t1.b=t2.b
352  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
353  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
354  WHERE (t2.x>0 OR t2.x IS NULL)
355  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
356} {
357   6 106 206 306 106  6 206  6   -  -
358  12 112 212 312 112 12 212 12   -  -
359  18 118 218 318 118 18 218 18   -  -
360  24 124 224 324 124 24 224 24   -  -
361  30 130 230 330 130 30 230 30 330 30
362  36 136 236 336 136 36 236 36   -  -
363  42 142 242 342 142 42 242 42   -  -
364  48 148 248 348 148 48 248 48   -  -
365  54 154 254 354 154 54 254 54   -  -
366  60 160 260 360 160 60 260 60 360 60
367  66 166 266 366 166 66 266 66   -  -
368  72 172 272 372 172 72 272 72   -  -
369  78 178 278 378 178 78 278 78   -  -
370  84 184 284 384 184 84 284 84   -  -
371  90 190 290 390 190 90 290 90 390 90
372}
373do_execsql_test joinD-24 {
374  SELECT t1.*, t2.*, t3.*, t4.*
375  FROM t1 INNER JOIN t2 ON true
376  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
377  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
378  WHERE t1.b=t2.b AND t2.x>0
379  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
380} {
381   6 106 206 306 106  6 206  6   -  -
382  12 112 212 312 112 12 212 12   -  -
383  18 118 218 318 118 18 218 18   -  -
384  24 124 224 324 124 24 224 24   -  -
385  30 130 230 330 130 30 230 30 330 30
386  36 136 236 336 136 36 236 36   -  -
387  42 142 242 342 142 42 242 42   -  -
388  48 148 248 348 148 48 248 48   -  -
389  54 154 254 354 154 54 254 54   -  -
390  60 160 260 360 160 60 260 60 360 60
391  66 166 266 366 166 66 266 66   -  -
392  72 172 272 372 172 72 272 72   -  -
393  78 178 278 378 178 78 278 78   -  -
394  84 184 284 384 184 84 284 84   -  -
395  90 190 290 390 190 90 290 90 390 90
396}
397do_execsql_test joinD-25 {
398  SELECT t1.*, t2.*, t3.*, t4.*
399  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
400  INNER JOIN t3 ON t1.c=t3.c
401  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
402  WHERE t3.y>0
403  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
404} {
405   6 106 206 306 106  6 206  6   -  -
406  12 112 212 312 112 12 212 12   -  -
407  18 118 218 318 118 18 218 18   -  -
408  24 124 224 324 124 24 224 24   -  -
409  30 130 230 330 130 30 230 30 330 30
410  36 136 236 336 136 36 236 36   -  -
411  42 142 242 342 142 42 242 42   -  -
412  48 148 248 348 148 48 248 48   -  -
413  54 154 254 354 154 54 254 54   -  -
414  60 160 260 360 160 60 260 60 360 60
415  66 166 266 366 166 66 266 66   -  -
416  72 172 272 372 172 72 272 72   -  -
417  78 178 278 378 178 78 278 78   -  -
418  84 184 284 384 184 84 284 84   -  -
419  90 190 290 390 190 90 290 90 390 90
420}
421do_execsql_test joinD-26 {
422  SELECT t1.*, t2.*, t3.*, t4.*
423  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
424  INNER JOIN t3 ON t1.c=t3.c
425  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
426  WHERE t3.y>0 OR t3.y IS NULL
427  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
428} {
429   6 106 206 306 106  6 206  6   -  -
430  12 112 212 312 112 12 212 12   -  -
431  18 118 218 318 118 18 218 18   -  -
432  24 124 224 324 124 24 224 24   -  -
433  30 130 230 330 130 30 230 30 330 30
434  36 136 236 336 136 36 236 36   -  -
435  42 142 242 342 142 42 242 42   -  -
436  48 148 248 348 148 48 248 48   -  -
437  54 154 254 354 154 54 254 54   -  -
438  60 160 260 360 160 60 260 60 360 60
439  66 166 266 366 166 66 266 66   -  -
440  72 172 272 372 172 72 272 72   -  -
441  78 178 278 378 178 78 278 78   -  -
442  84 184 284 384 184 84 284 84   -  -
443  90 190 290 390 190 90 290 90 390 90
444}
445do_execsql_test joinD-27 {
446  SELECT t1.*, t2.*, t3.*, t4.*
447  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
448  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
449  LEFT JOIN t4 ON t1.d=t4.d
450  WHERE t4.z>0
451  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
452} {
453  30 130 230 330 130 30 230 30 330 30
454  60 160 260 360 160 60 260 60 360 60
455  90 190 290 390 190 90 290 90 390 90
456}
457do_execsql_test joinD-28 {
458  SELECT t1.*, t2.*, t3.*, t4.*
459  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
460  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
461  LEFT JOIN t4 ON t1.d=t4.d
462  WHERE t4.z IS NULL OR t4.z>0
463  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
464} {
465   6 106 206 306 106  6 206  6   -  -
466  12 112 212 312 112 12 212 12   -  -
467  18 118 218 318 118 18 218 18   -  -
468  24 124 224 324 124 24 224 24   -  -
469  30 130 230 330 130 30 230 30 330 30
470  36 136 236 336 136 36 236 36   -  -
471  42 142 242 342 142 42 242 42   -  -
472  48 148 248 348 148 48 248 48   -  -
473  54 154 254 354 154 54 254 54   -  -
474  60 160 260 360 160 60 260 60 360 60
475  66 166 266 366 166 66 266 66   -  -
476  72 172 272 372 172 72 272 72   -  -
477  78 178 278 378 178 78 278 78   -  -
478  84 184 284 384 184 84 284 84   -  -
479  90 190 290 390 190 90 290 90 390 90
480}
481do_execsql_test joinD-29 {
482  SELECT t1.*, t2.*, t3.*, t4.*
483  FROM t1 INNER JOIN t2 ON t1.b=t2.b
484  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
485  LEFT JOIN t4 ON t1.d=t4.d
486  WHERE t2.x>0 AND t4.z>0
487  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
488} {
489  30 130 230 330 130 30 230 30 330 30
490  60 160 260 360 160 60 260 60 360 60
491  90 190 290 390 190 90 290 90 390 90
492}
493do_execsql_test joinD-30 {
494  SELECT t1.*, t2.*, t3.*, t4.*
495  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
496  INNER JOIN t3 ON t1.c=t3.c
497  LEFT JOIN t4 ON t1.d=t4.d
498  WHERE t4.z>0 AND t3.y>0
499  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
500} {
501  30 130 230 330 130 30 230 30 330 30
502  60 160 260 360 160 60 260 60 360 60
503  90 190 290 390 190 90 290 90 390 90
504}
505do_execsql_test joinD-31 {
506  SELECT t1.*, t2.*, t3.*, t4.*
507  FROM t1 INNER JOIN t2 ON t1.b=t2.b
508  INNER JOIN t3 ON t1.c=t3.c
509  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
510  WHERE t2.x>0 AND t3.y>0
511  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
512} {
513   6 106 206 306 106  6 206  6   -  -
514  12 112 212 312 112 12 212 12   -  -
515  18 118 218 318 118 18 218 18   -  -
516  24 124 224 324 124 24 224 24   -  -
517  30 130 230 330 130 30 230 30 330 30
518  36 136 236 336 136 36 236 36   -  -
519  42 142 242 342 142 42 242 42   -  -
520  48 148 248 348 148 48 248 48   -  -
521  54 154 254 354 154 54 254 54   -  -
522  60 160 260 360 160 60 260 60 360 60
523  66 166 266 366 166 66 266 66   -  -
524  72 172 272 372 172 72 272 72   -  -
525  78 178 278 378 178 78 278 78   -  -
526  84 184 284 384 184 84 284 84   -  -
527  90 190 290 390 190 90 290 90 390 90
528}
529do_execsql_test joinD-32 {
530  SELECT t1.*, t2.*, t3.*, t4.*
531  FROM t1 INNER JOIN t2 ON t1.b=t2.b
532  INNER JOIN t3 ON t1.c=t3.c
533  LEFT JOIN t4 ON t1.d=t4.d
534  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
535  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
536} {
537  30 130 230 330 130 30 230 30 330 30
538  60 160 260 360 160 60 260 60 360 60
539  90 190 290 390 190 90 290 90 390 90
540}
541do_execsql_test joinD-33 {
542  SELECT t1.*, t2.*, t3.*, t4.*
543  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
544  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
545  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
546  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
547} {
548   6 106 206 306 106  6 206  6   -  -
549  12 112 212 312 112 12 212 12   -  -
550  18 118 218 318 118 18 218 18   -  -
551  24 124 224 324 124 24 224 24   -  -
552  30 130 230 330 130 30 230 30 330 30
553  36 136 236 336 136 36 236 36   -  -
554  42 142 242 342 142 42 242 42   -  -
555  48 148 248 348 148 48 248 48   -  -
556  54 154 254 354 154 54 254 54   -  -
557  60 160 260 360 160 60 260 60 360 60
558  66 166 266 366 166 66 266 66   -  -
559  72 172 272 372 172 72 272 72   -  -
560  78 178 278 378 178 78 278 78   -  -
561  84 184 284 384 184 84 284 84   -  -
562  90 190 290 390 190 90 290 90 390 90
563}
564do_execsql_test joinD-34 {
565  SELECT t1.*, t2.*, t3.*, t4.*
566  FROM t1 INNER JOIN t2 ON t2.x>0
567  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
568  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
569  WHERE t1.b IS NOT DISTINCT FROM t2.b
570  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
571} {
572   6 106 206 306 106  6 206  6   -  -
573  12 112 212 312 112 12 212 12   -  -
574  18 118 218 318 118 18 218 18   -  -
575  24 124 224 324 124 24 224 24   -  -
576  30 130 230 330 130 30 230 30 330 30
577  36 136 236 336 136 36 236 36   -  -
578  42 142 242 342 142 42 242 42   -  -
579  48 148 248 348 148 48 248 48   -  -
580  54 154 254 354 154 54 254 54   -  -
581  60 160 260 360 160 60 260 60 360 60
582  66 166 266 366 166 66 266 66   -  -
583  72 172 272 372 172 72 272 72   -  -
584  78 178 278 378 178 78 278 78   -  -
585  84 184 284 384 184 84 284 84   -  -
586  90 190 290 390 190 90 290 90 390 90
587}
588do_execsql_test joinD-35 {
589  SELECT t1.*, t2.*, t3.*, t4.*
590  FROM t1 INNER JOIN t2 ON t2.x>0
591  INNER JOIN t3 ON t3.y>0
592  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
593  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
594  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
595} {
596   6 106 206 306 106  6 206  6   -  -
597  12 112 212 312 112 12 212 12   -  -
598  18 118 218 318 118 18 218 18   -  -
599  24 124 224 324 124 24 224 24   -  -
600  30 130 230 330 130 30 230 30 330 30
601  36 136 236 336 136 36 236 36   -  -
602  42 142 242 342 142 42 242 42   -  -
603  48 148 248 348 148 48 248 48   -  -
604  54 154 254 354 154 54 254 54   -  -
605  60 160 260 360 160 60 260 60 360 60
606  66 166 266 366 166 66 266 66   -  -
607  72 172 272 372 172 72 272 72   -  -
608  78 178 278 378 178 78 278 78   -  -
609  84 184 284 384 184 84 284 84   -  -
610  90 190 290 390 190 90 290 90 390 90
611}
612do_execsql_test joinD-36 {
613  SELECT t1.*, t2.*, t3.*, t4.*
614  FROM t1 INNER JOIN t2 ON t2.x>0
615  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
616  LEFT JOIN t4 ON t4.z>0
617  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
618  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
619} {
620  30 130 230 330 130 30 230 30 330 30
621  60 160 260 360 160 60 260 60 360 60
622  90 190 290 390 190 90 290 90 390 90
623}
624do_execsql_test joinD-37 {
625  SELECT t1.*, t2.*, t3.*, t4.*
626  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
627  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
628  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
629  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
630} {
631   6 106 206 306 106  6 206  6   -  -
632  12 112 212 312 112 12 212 12   -  -
633  18 118 218 318 118 18 218 18   -  -
634  24 124 224 324 124 24 224 24   -  -
635  30 130 230 330 130 30 230 30 330 30
636  36 136 236 336 136 36 236 36   -  -
637  42 142 242 342 142 42 242 42   -  -
638  48 148 248 348 148 48 248 48   -  -
639  54 154 254 354 154 54 254 54   -  -
640  60 160 260 360 160 60 260 60 360 60
641  66 166 266 366 166 66 266 66   -  -
642  72 172 272 372 172 72 272 72   -  -
643  78 178 278 378 178 78 278 78   -  -
644  84 184 284 384 184 84 284 84   -  -
645  90 190 290 390 190 90 290 90 390 90
646}
647do_execsql_test joinD-38 {
648  SELECT t1.*, t2.*, t3.*, t4.*
649  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
650  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
651  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
652  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
653} {
654   6 106 206 306 106  6 206  6   -  -
655  12 112 212 312 112 12 212 12   -  -
656  18 118 218 318 118 18 218 18   -  -
657  24 124 224 324 124 24 224 24   -  -
658  30 130 230 330 130 30 230 30 330 30
659  36 136 236 336 136 36 236 36   -  -
660  42 142 242 342 142 42 242 42   -  -
661  48 148 248 348 148 48 248 48   -  -
662  54 154 254 354 154 54 254 54   -  -
663  60 160 260 360 160 60 260 60 360 60
664  66 166 266 366 166 66 266 66   -  -
665  72 172 272 372 172 72 272 72   -  -
666  78 178 278 378 178 78 278 78   -  -
667  84 184 284 384 184 84 284 84   -  -
668  90 190 290 390 190 90 290 90 390 90
669}
670do_execsql_test joinD-39 {
671  SELECT t1.*, t2.*, t3.*, t4.*
672  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
673  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
674  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
675  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
676} {
677  30 130 230 330 130 30 230 30 330 30
678  60 160 260 360 160 60 260 60 360 60
679  90 190 290 390 190 90 290 90 390 90
680   -   -   -   -   -  -   -  - 300  0
681   -   -   -   -   -  -   -  - 305  5
682   -   -   -   -   -  -   -  - 310 10
683   -   -   -   -   -  -   -  - 315 15
684   -   -   -   -   -  -   -  - 320 20
685   -   -   -   -   -  -   -  - 325 25
686   -   -   -   -   -  -   -  - 335 35
687   -   -   -   -   -  -   -  - 340 40
688   -   -   -   -   -  -   -  - 345 45
689   -   -   -   -   -  -   -  - 350 50
690   -   -   -   -   -  -   -  - 355 55
691   -   -   -   -   -  -   -  - 365 65
692   -   -   -   -   -  -   -  - 370 70
693   -   -   -   -   -  -   -  - 375 75
694   -   -   -   -   -  -   -  - 380 80
695   -   -   -   -   -  -   -  - 385 85
696   -   -   -   -   -  -   -  - 395 95
697}
698do_execsql_test joinD-40 {
699  SELECT t1.*, t2.*, t3.*, t4.*
700  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
701  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
702  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
703  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
704} {
705  30 130 230 330 130 30 230 30 330 30
706  60 160 260 360 160 60 260 60 360 60
707  90 190 290 390 190 90 290 90 390 90
708   -   -   -   -   -  -   -  - 300  0
709   -   -   -   -   -  -   -  - 305  5
710   -   -   -   -   -  -   -  - 310 10
711   -   -   -   -   -  -   -  - 315 15
712   -   -   -   -   -  -   -  - 320 20
713   -   -   -   -   -  -   -  - 325 25
714   -   -   -   -   -  -   -  - 335 35
715   -   -   -   -   -  -   -  - 340 40
716   -   -   -   -   -  -   -  - 345 45
717   -   -   -   -   -  -   -  - 350 50
718   -   -   -   -   -  -   -  - 355 55
719   -   -   -   -   -  -   -  - 365 65
720   -   -   -   -   -  -   -  - 370 70
721   -   -   -   -   -  -   -  - 375 75
722   -   -   -   -   -  -   -  - 380 80
723   -   -   -   -   -  -   -  - 385 85
724   -   -   -   -   -  -   -  - 395 95
725}
726do_execsql_test joinD-41 {
727  SELECT t1.*, t2.*, t3.*, t4.*
728  FROM t1 INNER JOIN t2 ON t1.b=t2.b
729  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
730  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
731  WHERE t2.x>0
732  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
733} {
734  30 130 230 330 130 30 230 30 330 30
735  60 160 260 360 160 60 260 60 360 60
736  90 190 290 390 190 90 290 90 390 90
737}
738do_execsql_test joinD-42 {
739  SELECT t1.*, t2.*, t3.*, t4.*
740  FROM t1 INNER JOIN t2 ON t1.b=t2.b
741  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
742  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
743  WHERE (t2.x>0 OR t2.x IS NULL)
744  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
745} {
746  30 130 230 330 130 30 230 30 330 30
747  60 160 260 360 160 60 260 60 360 60
748  90 190 290 390 190 90 290 90 390 90
749   -   -   -   -   -  -   -  - 300  0
750   -   -   -   -   -  -   -  - 305  5
751   -   -   -   -   -  -   -  - 310 10
752   -   -   -   -   -  -   -  - 315 15
753   -   -   -   -   -  -   -  - 320 20
754   -   -   -   -   -  -   -  - 325 25
755   -   -   -   -   -  -   -  - 335 35
756   -   -   -   -   -  -   -  - 340 40
757   -   -   -   -   -  -   -  - 345 45
758   -   -   -   -   -  -   -  - 350 50
759   -   -   -   -   -  -   -  - 355 55
760   -   -   -   -   -  -   -  - 365 65
761   -   -   -   -   -  -   -  - 370 70
762   -   -   -   -   -  -   -  - 375 75
763   -   -   -   -   -  -   -  - 380 80
764   -   -   -   -   -  -   -  - 385 85
765   -   -   -   -   -  -   -  - 395 95
766}
767do_execsql_test joinD-43 {
768  SELECT t1.*, t2.*, t3.*, t4.*
769  FROM t1 INNER JOIN t2 ON true
770  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
771  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
772  WHERE t1.b=t2.b AND t2.x>0
773  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
774} {
775  30 130 230 330 130 30 230 30 330 30
776  60 160 260 360 160 60 260 60 360 60
777  90 190 290 390 190 90 290 90 390 90
778}
779do_execsql_test joinD-44 {
780  SELECT t1.*, t2.*, t3.*, t4.*
781  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
782  INNER JOIN t3 ON t1.c=t3.c
783  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
784  WHERE t3.y>0
785  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
786} {
787  30 130 230 330 130 30 230 30 330 30
788  60 160 260 360 160 60 260 60 360 60
789  90 190 290 390 190 90 290 90 390 90
790}
791do_execsql_test joinD-45 {
792  SELECT t1.*, t2.*, t3.*, t4.*
793  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
794  INNER JOIN t3 ON t1.c=t3.c
795  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
796  WHERE t3.y>0 OR t3.y IS NULL
797  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
798} {
799  30 130 230 330 130 30 230 30 330 30
800  60 160 260 360 160 60 260 60 360 60
801  90 190 290 390 190 90 290 90 390 90
802   -   -   -   -   -  -   -  - 300  0
803   -   -   -   -   -  -   -  - 305  5
804   -   -   -   -   -  -   -  - 310 10
805   -   -   -   -   -  -   -  - 315 15
806   -   -   -   -   -  -   -  - 320 20
807   -   -   -   -   -  -   -  - 325 25
808   -   -   -   -   -  -   -  - 335 35
809   -   -   -   -   -  -   -  - 340 40
810   -   -   -   -   -  -   -  - 345 45
811   -   -   -   -   -  -   -  - 350 50
812   -   -   -   -   -  -   -  - 355 55
813   -   -   -   -   -  -   -  - 365 65
814   -   -   -   -   -  -   -  - 370 70
815   -   -   -   -   -  -   -  - 375 75
816   -   -   -   -   -  -   -  - 380 80
817   -   -   -   -   -  -   -  - 385 85
818   -   -   -   -   -  -   -  - 395 95
819}
820do_execsql_test joinD-46 {
821  SELECT t1.*, t2.*, t3.*, t4.*
822  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
823  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
824  RIGHT JOIN t4 ON t1.d=t4.d
825  WHERE t4.z>0
826  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
827} {
828  30 130 230 330 130 30 230 30 330 30
829  60 160 260 360 160 60 260 60 360 60
830  90 190 290 390 190 90 290 90 390 90
831   -   -   -   -   -  -   -  - 305  5
832   -   -   -   -   -  -   -  - 310 10
833   -   -   -   -   -  -   -  - 315 15
834   -   -   -   -   -  -   -  - 320 20
835   -   -   -   -   -  -   -  - 325 25
836   -   -   -   -   -  -   -  - 335 35
837   -   -   -   -   -  -   -  - 340 40
838   -   -   -   -   -  -   -  - 345 45
839   -   -   -   -   -  -   -  - 350 50
840   -   -   -   -   -  -   -  - 355 55
841   -   -   -   -   -  -   -  - 365 65
842   -   -   -   -   -  -   -  - 370 70
843   -   -   -   -   -  -   -  - 375 75
844   -   -   -   -   -  -   -  - 380 80
845   -   -   -   -   -  -   -  - 385 85
846   -   -   -   -   -  -   -  - 395 95
847}
848do_execsql_test joinD-47 {
849  SELECT t1.*, t2.*, t3.*, t4.*
850  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
851  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
852  RIGHT JOIN t4 ON t1.d=t4.d
853  WHERE t4.z IS NULL OR t4.z>0
854  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
855} {
856  30 130 230 330 130 30 230 30 330 30
857  60 160 260 360 160 60 260 60 360 60
858  90 190 290 390 190 90 290 90 390 90
859   -   -   -   -   -  -   -  - 305  5
860   -   -   -   -   -  -   -  - 310 10
861   -   -   -   -   -  -   -  - 315 15
862   -   -   -   -   -  -   -  - 320 20
863   -   -   -   -   -  -   -  - 325 25
864   -   -   -   -   -  -   -  - 335 35
865   -   -   -   -   -  -   -  - 340 40
866   -   -   -   -   -  -   -  - 345 45
867   -   -   -   -   -  -   -  - 350 50
868   -   -   -   -   -  -   -  - 355 55
869   -   -   -   -   -  -   -  - 365 65
870   -   -   -   -   -  -   -  - 370 70
871   -   -   -   -   -  -   -  - 375 75
872   -   -   -   -   -  -   -  - 380 80
873   -   -   -   -   -  -   -  - 385 85
874   -   -   -   -   -  -   -  - 395 95
875}
876do_execsql_test joinD-48 {
877  SELECT t1.*, t2.*, t3.*, t4.*
878  FROM t1 INNER JOIN t2 ON t1.b=t2.b
879  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
880  RIGHT JOIN t4 ON t1.d=t4.d
881  WHERE t2.x>0 AND t4.z>0
882  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
883} {
884  30 130 230 330 130 30 230 30 330 30
885  60 160 260 360 160 60 260 60 360 60
886  90 190 290 390 190 90 290 90 390 90
887}
888do_execsql_test joinD-49 {
889  SELECT t1.*, t2.*, t3.*, t4.*
890  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
891  INNER JOIN t3 ON t1.c=t3.c
892  RIGHT JOIN t4 ON t1.d=t4.d
893  WHERE t4.z>0 AND t3.y>0
894  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
895} {
896  30 130 230 330 130 30 230 30 330 30
897  60 160 260 360 160 60 260 60 360 60
898  90 190 290 390 190 90 290 90 390 90
899}
900do_execsql_test joinD-50 {
901  SELECT t1.*, t2.*, t3.*, t4.*
902  FROM t1 INNER JOIN t2 ON t1.b=t2.b
903  INNER JOIN t3 ON t1.c=t3.c
904  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
905  WHERE t2.x>0 AND t3.y>0
906  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
907} {
908  30 130 230 330 130 30 230 30 330 30
909  60 160 260 360 160 60 260 60 360 60
910  90 190 290 390 190 90 290 90 390 90
911}
912do_execsql_test joinD-51 {
913  SELECT t1.*, t2.*, t3.*, t4.*
914  FROM t1 INNER JOIN t2 ON t1.b=t2.b
915  INNER JOIN t3 ON t1.c=t3.c
916  RIGHT JOIN t4 ON t1.d=t4.d
917  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
918  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
919} {
920  30 130 230 330 130 30 230 30 330 30
921  60 160 260 360 160 60 260 60 360 60
922  90 190 290 390 190 90 290 90 390 90
923}
924do_execsql_test joinD-52 {
925  SELECT t1.*, t2.*, t3.*, t4.*
926  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
927  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
928  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
929  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
930} {
931  30 130 230 330 130 30 230 30 330 30
932  60 160 260 360 160 60 260 60 360 60
933  90 190 290 390 190 90 290 90 390 90
934   -   -   -   -   -  -   -  - 300  0
935   -   -   -   -   -  -   -  - 305  5
936   -   -   -   -   -  -   -  - 310 10
937   -   -   -   -   -  -   -  - 315 15
938   -   -   -   -   -  -   -  - 320 20
939   -   -   -   -   -  -   -  - 325 25
940   -   -   -   -   -  -   -  - 335 35
941   -   -   -   -   -  -   -  - 340 40
942   -   -   -   -   -  -   -  - 345 45
943   -   -   -   -   -  -   -  - 350 50
944   -   -   -   -   -  -   -  - 355 55
945   -   -   -   -   -  -   -  - 365 65
946   -   -   -   -   -  -   -  - 370 70
947   -   -   -   -   -  -   -  - 375 75
948   -   -   -   -   -  -   -  - 380 80
949   -   -   -   -   -  -   -  - 385 85
950   -   -   -   -   -  -   -  - 395 95
951}
952do_execsql_test joinD-53 {
953  SELECT t1.*, t2.*, t3.*, t4.*
954  FROM t1 INNER JOIN t2 ON t2.x>0
955  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
956  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
957  WHERE t1.b IS NOT DISTINCT FROM t2.b
958  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
959} {
960  30 130 230 330 130 30 230 30 330 30
961  60 160 260 360 160 60 260 60 360 60
962  90 190 290 390 190 90 290 90 390 90
963   -   -   -   -   -  -   -  - 300  0
964   -   -   -   -   -  -   -  - 305  5
965   -   -   -   -   -  -   -  - 310 10
966   -   -   -   -   -  -   -  - 320 20
967   -   -   -   -   -  -   -  - 325 25
968   -   -   -   -   -  -   -  - 335 35
969   -   -   -   -   -  -   -  - 340 40
970   -   -   -   -   -  -   -  - 350 50
971   -   -   -   -   -  -   -  - 355 55
972   -   -   -   -   -  -   -  - 365 65
973   -   -   -   -   -  -   -  - 370 70
974   -   -   -   -   -  -   -  - 380 80
975   -   -   -   -   -  -   -  - 385 85
976   -   -   -   -   -  -   -  - 395 95
977}
978do_execsql_test joinD-54 {
979  SELECT t1.*, t2.*, t3.*, t4.*
980  FROM t1 INNER JOIN t2 ON t2.x>0
981  INNER JOIN t3 ON t3.y>0
982  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
983  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
984  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
985} {
986  30 130 230 330 130 30 230 30 330 30
987  60 160 260 360 160 60 260 60 360 60
988  90 190 290 390 190 90 290 90 390 90
989   -   -   -   -   -  -   -  - 300  0
990}
991do_execsql_test joinD-55 {
992  SELECT t1.*, t2.*, t3.*, t4.*
993  FROM t1 INNER JOIN t2 ON t2.x>0
994  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
995  RIGHT JOIN t4 ON t4.z>0
996  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
997  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
998} {
999  30 130 230 330 130 30 230 30 330 30
1000  60 160 260 360 160 60 260 60 360 60
1001  90 190 290 390 190 90 290 90 390 90
1002}
1003do_execsql_test joinD-56 {
1004  SELECT t1.*, t2.*, t3.*, t4.*
1005  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
1006  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1007  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1008  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1009} {
1010  30 130 230 330 130 30 230 30 330 30
1011  60 160 260 360 160 60 260 60 360 60
1012  90 190 290 390 190 90 290 90 390 90
1013   -   -   -   -   -  -   -  - 300  0
1014   -   -   -   -   -  -   -  - 305  5
1015   -   -   -   -   -  -   -  - 310 10
1016   -   -   -   -   -  -   -  - 315 15
1017   -   -   -   -   -  -   -  - 320 20
1018   -   -   -   -   -  -   -  - 325 25
1019   -   -   -   -   -  -   -  - 335 35
1020   -   -   -   -   -  -   -  - 340 40
1021   -   -   -   -   -  -   -  - 345 45
1022   -   -   -   -   -  -   -  - 350 50
1023   -   -   -   -   -  -   -  - 355 55
1024   -   -   -   -   -  -   -  - 365 65
1025   -   -   -   -   -  -   -  - 370 70
1026   -   -   -   -   -  -   -  - 375 75
1027   -   -   -   -   -  -   -  - 380 80
1028   -   -   -   -   -  -   -  - 385 85
1029   -   -   -   -   -  -   -  - 395 95
1030}
1031do_execsql_test joinD-57 {
1032  SELECT t1.*, t2.*, t3.*, t4.*
1033  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1034  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
1035  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1036  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1037} {
1038  30 130 230 330 130 30 230 30 330 30
1039  60 160 260 360 160 60 260 60 360 60
1040  90 190 290 390 190 90 290 90 390 90
1041   -   -   -   -   -  -   -  - 300  0
1042   -   -   -   -   -  -   -  - 305  5
1043   -   -   -   -   -  -   -  - 310 10
1044   -   -   -   -   -  -   -  - 315 15
1045   -   -   -   -   -  -   -  - 320 20
1046   -   -   -   -   -  -   -  - 325 25
1047   -   -   -   -   -  -   -  - 335 35
1048   -   -   -   -   -  -   -  - 340 40
1049   -   -   -   -   -  -   -  - 345 45
1050   -   -   -   -   -  -   -  - 350 50
1051   -   -   -   -   -  -   -  - 355 55
1052   -   -   -   -   -  -   -  - 365 65
1053   -   -   -   -   -  -   -  - 370 70
1054   -   -   -   -   -  -   -  - 375 75
1055   -   -   -   -   -  -   -  - 380 80
1056   -   -   -   -   -  -   -  - 385 85
1057   -   -   -   -   -  -   -  - 395 95
1058}
1059do_execsql_test joinD-58 {
1060  SELECT t1.*, t2.*, t3.*, t4.*
1061  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1062  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1063  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1064  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1065} {
1066   6 106 206 306 106  6 206  6   -  -
1067  12 112 212 312 112 12 212 12   -  -
1068  18 118 218 318 118 18 218 18   -  -
1069  24 124 224 324 124 24 224 24   -  -
1070  30 130 230 330 130 30 230 30 330 30
1071  36 136 236 336 136 36 236 36   -  -
1072  42 142 242 342 142 42 242 42   -  -
1073  48 148 248 348 148 48 248 48   -  -
1074  54 154 254 354 154 54 254 54   -  -
1075  60 160 260 360 160 60 260 60 360 60
1076  66 166 266 366 166 66 266 66   -  -
1077  72 172 272 372 172 72 272 72   -  -
1078  78 178 278 378 178 78 278 78   -  -
1079  84 184 284 384 184 84 284 84   -  -
1080  90 190 290 390 190 90 290 90 390 90
1081   -   -   -   -   -  -   -  - 300  0
1082   -   -   -   -   -  -   -  - 305  5
1083   -   -   -   -   -  -   -  - 310 10
1084   -   -   -   -   -  -   -  - 315 15
1085   -   -   -   -   -  -   -  - 320 20
1086   -   -   -   -   -  -   -  - 325 25
1087   -   -   -   -   -  -   -  - 335 35
1088   -   -   -   -   -  -   -  - 340 40
1089   -   -   -   -   -  -   -  - 345 45
1090   -   -   -   -   -  -   -  - 350 50
1091   -   -   -   -   -  -   -  - 355 55
1092   -   -   -   -   -  -   -  - 365 65
1093   -   -   -   -   -  -   -  - 370 70
1094   -   -   -   -   -  -   -  - 375 75
1095   -   -   -   -   -  -   -  - 380 80
1096   -   -   -   -   -  -   -  - 385 85
1097   -   -   -   -   -  -   -  - 395 95
1098}
1099do_execsql_test joinD-59 {
1100  SELECT t1.*, t2.*, t3.*, t4.*
1101  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1102  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1103  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1104  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1105} {
1106   6 106 206 306 106  6 206  6   -  -
1107  12 112 212 312 112 12 212 12   -  -
1108  18 118 218 318 118 18 218 18   -  -
1109  24 124 224 324 124 24 224 24   -  -
1110  30 130 230 330 130 30 230 30 330 30
1111  36 136 236 336 136 36 236 36   -  -
1112  42 142 242 342 142 42 242 42   -  -
1113  48 148 248 348 148 48 248 48   -  -
1114  54 154 254 354 154 54 254 54   -  -
1115  60 160 260 360 160 60 260 60 360 60
1116  66 166 266 366 166 66 266 66   -  -
1117  72 172 272 372 172 72 272 72   -  -
1118  78 178 278 378 178 78 278 78   -  -
1119  84 184 284 384 184 84 284 84   -  -
1120  90 190 290 390 190 90 290 90 390 90
1121   -   -   -   -   -  -   -  - 300  0
1122   -   -   -   -   -  -   -  - 305  5
1123   -   -   -   -   -  -   -  - 310 10
1124   -   -   -   -   -  -   -  - 315 15
1125   -   -   -   -   -  -   -  - 320 20
1126   -   -   -   -   -  -   -  - 325 25
1127   -   -   -   -   -  -   -  - 335 35
1128   -   -   -   -   -  -   -  - 340 40
1129   -   -   -   -   -  -   -  - 345 45
1130   -   -   -   -   -  -   -  - 350 50
1131   -   -   -   -   -  -   -  - 355 55
1132   -   -   -   -   -  -   -  - 365 65
1133   -   -   -   -   -  -   -  - 370 70
1134   -   -   -   -   -  -   -  - 375 75
1135   -   -   -   -   -  -   -  - 380 80
1136   -   -   -   -   -  -   -  - 385 85
1137   -   -   -   -   -  -   -  - 395 95
1138}
1139do_execsql_test joinD-60 {
1140  SELECT t1.*, t2.*, t3.*, t4.*
1141  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1142  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1143  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1144  WHERE t2.x>0
1145  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1146} {
1147   6 106 206 306 106  6 206  6   -  -
1148  12 112 212 312 112 12 212 12   -  -
1149  18 118 218 318 118 18 218 18   -  -
1150  24 124 224 324 124 24 224 24   -  -
1151  30 130 230 330 130 30 230 30 330 30
1152  36 136 236 336 136 36 236 36   -  -
1153  42 142 242 342 142 42 242 42   -  -
1154  48 148 248 348 148 48 248 48   -  -
1155  54 154 254 354 154 54 254 54   -  -
1156  60 160 260 360 160 60 260 60 360 60
1157  66 166 266 366 166 66 266 66   -  -
1158  72 172 272 372 172 72 272 72   -  -
1159  78 178 278 378 178 78 278 78   -  -
1160  84 184 284 384 184 84 284 84   -  -
1161  90 190 290 390 190 90 290 90 390 90
1162}
1163do_execsql_test joinD-61 {
1164  SELECT t1.*, t2.*, t3.*, t4.*
1165  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1166  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1167  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1168  WHERE (t2.x>0 OR t2.x IS NULL)
1169  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1170} {
1171   6 106 206 306 106  6 206  6   -  -
1172  12 112 212 312 112 12 212 12   -  -
1173  18 118 218 318 118 18 218 18   -  -
1174  24 124 224 324 124 24 224 24   -  -
1175  30 130 230 330 130 30 230 30 330 30
1176  36 136 236 336 136 36 236 36   -  -
1177  42 142 242 342 142 42 242 42   -  -
1178  48 148 248 348 148 48 248 48   -  -
1179  54 154 254 354 154 54 254 54   -  -
1180  60 160 260 360 160 60 260 60 360 60
1181  66 166 266 366 166 66 266 66   -  -
1182  72 172 272 372 172 72 272 72   -  -
1183  78 178 278 378 178 78 278 78   -  -
1184  84 184 284 384 184 84 284 84   -  -
1185  90 190 290 390 190 90 290 90 390 90
1186   -   -   -   -   -  -   -  - 300  0
1187   -   -   -   -   -  -   -  - 305  5
1188   -   -   -   -   -  -   -  - 310 10
1189   -   -   -   -   -  -   -  - 315 15
1190   -   -   -   -   -  -   -  - 320 20
1191   -   -   -   -   -  -   -  - 325 25
1192   -   -   -   -   -  -   -  - 335 35
1193   -   -   -   -   -  -   -  - 340 40
1194   -   -   -   -   -  -   -  - 345 45
1195   -   -   -   -   -  -   -  - 350 50
1196   -   -   -   -   -  -   -  - 355 55
1197   -   -   -   -   -  -   -  - 365 65
1198   -   -   -   -   -  -   -  - 370 70
1199   -   -   -   -   -  -   -  - 375 75
1200   -   -   -   -   -  -   -  - 380 80
1201   -   -   -   -   -  -   -  - 385 85
1202   -   -   -   -   -  -   -  - 395 95
1203}
1204do_execsql_test joinD-62 {
1205  SELECT t1.*, t2.*, t3.*, t4.*
1206  FROM t1 INNER JOIN t2 ON true
1207  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1208  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1209  WHERE t1.b=t2.b AND t2.x>0
1210  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1211} {
1212   6 106 206 306 106  6 206  6   -  -
1213  12 112 212 312 112 12 212 12   -  -
1214  18 118 218 318 118 18 218 18   -  -
1215  24 124 224 324 124 24 224 24   -  -
1216  30 130 230 330 130 30 230 30 330 30
1217  36 136 236 336 136 36 236 36   -  -
1218  42 142 242 342 142 42 242 42   -  -
1219  48 148 248 348 148 48 248 48   -  -
1220  54 154 254 354 154 54 254 54   -  -
1221  60 160 260 360 160 60 260 60 360 60
1222  66 166 266 366 166 66 266 66   -  -
1223  72 172 272 372 172 72 272 72   -  -
1224  78 178 278 378 178 78 278 78   -  -
1225  84 184 284 384 184 84 284 84   -  -
1226  90 190 290 390 190 90 290 90 390 90
1227}
1228do_execsql_test joinD-63 {
1229  SELECT t1.*, t2.*, t3.*, t4.*
1230  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1231  INNER JOIN t3 ON t1.c=t3.c
1232  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1233  WHERE t3.y>0
1234  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1235} {
1236   6 106 206 306 106  6 206  6   -  -
1237  12 112 212 312 112 12 212 12   -  -
1238  18 118 218 318 118 18 218 18   -  -
1239  24 124 224 324 124 24 224 24   -  -
1240  30 130 230 330 130 30 230 30 330 30
1241  36 136 236 336 136 36 236 36   -  -
1242  42 142 242 342 142 42 242 42   -  -
1243  48 148 248 348 148 48 248 48   -  -
1244  54 154 254 354 154 54 254 54   -  -
1245  60 160 260 360 160 60 260 60 360 60
1246  66 166 266 366 166 66 266 66   -  -
1247  72 172 272 372 172 72 272 72   -  -
1248  78 178 278 378 178 78 278 78   -  -
1249  84 184 284 384 184 84 284 84   -  -
1250  90 190 290 390 190 90 290 90 390 90
1251}
1252do_execsql_test joinD-64 {
1253  SELECT t1.*, t2.*, t3.*, t4.*
1254  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1255  INNER JOIN t3 ON t1.c=t3.c
1256  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1257  WHERE t3.y>0 OR t3.y IS NULL
1258  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1259} {
1260   6 106 206 306 106  6 206  6   -  -
1261  12 112 212 312 112 12 212 12   -  -
1262  18 118 218 318 118 18 218 18   -  -
1263  24 124 224 324 124 24 224 24   -  -
1264  30 130 230 330 130 30 230 30 330 30
1265  36 136 236 336 136 36 236 36   -  -
1266  42 142 242 342 142 42 242 42   -  -
1267  48 148 248 348 148 48 248 48   -  -
1268  54 154 254 354 154 54 254 54   -  -
1269  60 160 260 360 160 60 260 60 360 60
1270  66 166 266 366 166 66 266 66   -  -
1271  72 172 272 372 172 72 272 72   -  -
1272  78 178 278 378 178 78 278 78   -  -
1273  84 184 284 384 184 84 284 84   -  -
1274  90 190 290 390 190 90 290 90 390 90
1275   -   -   -   -   -  -   -  - 300  0
1276   -   -   -   -   -  -   -  - 305  5
1277   -   -   -   -   -  -   -  - 310 10
1278   -   -   -   -   -  -   -  - 315 15
1279   -   -   -   -   -  -   -  - 320 20
1280   -   -   -   -   -  -   -  - 325 25
1281   -   -   -   -   -  -   -  - 335 35
1282   -   -   -   -   -  -   -  - 340 40
1283   -   -   -   -   -  -   -  - 345 45
1284   -   -   -   -   -  -   -  - 350 50
1285   -   -   -   -   -  -   -  - 355 55
1286   -   -   -   -   -  -   -  - 365 65
1287   -   -   -   -   -  -   -  - 370 70
1288   -   -   -   -   -  -   -  - 375 75
1289   -   -   -   -   -  -   -  - 380 80
1290   -   -   -   -   -  -   -  - 385 85
1291   -   -   -   -   -  -   -  - 395 95
1292}
1293do_execsql_test joinD-65 {
1294  SELECT t1.*, t2.*, t3.*, t4.*
1295  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1296  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1297  FULL JOIN t4 ON t1.d=t4.d
1298  WHERE t4.z>0
1299  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1300} {
1301  30 130 230 330 130 30 230 30 330 30
1302  60 160 260 360 160 60 260 60 360 60
1303  90 190 290 390 190 90 290 90 390 90
1304   -   -   -   -   -  -   -  - 305  5
1305   -   -   -   -   -  -   -  - 310 10
1306   -   -   -   -   -  -   -  - 315 15
1307   -   -   -   -   -  -   -  - 320 20
1308   -   -   -   -   -  -   -  - 325 25
1309   -   -   -   -   -  -   -  - 335 35
1310   -   -   -   -   -  -   -  - 340 40
1311   -   -   -   -   -  -   -  - 345 45
1312   -   -   -   -   -  -   -  - 350 50
1313   -   -   -   -   -  -   -  - 355 55
1314   -   -   -   -   -  -   -  - 365 65
1315   -   -   -   -   -  -   -  - 370 70
1316   -   -   -   -   -  -   -  - 375 75
1317   -   -   -   -   -  -   -  - 380 80
1318   -   -   -   -   -  -   -  - 385 85
1319   -   -   -   -   -  -   -  - 395 95
1320}
1321do_execsql_test joinD-66 {
1322  SELECT t1.*, t2.*, t3.*, t4.*
1323  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1324  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1325  FULL JOIN t4 ON t1.d=t4.d
1326  WHERE t4.z IS NULL OR t4.z>0
1327  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1328} {
1329   6 106 206 306 106  6 206  6   -  -
1330  12 112 212 312 112 12 212 12   -  -
1331  18 118 218 318 118 18 218 18   -  -
1332  24 124 224 324 124 24 224 24   -  -
1333  30 130 230 330 130 30 230 30 330 30
1334  36 136 236 336 136 36 236 36   -  -
1335  42 142 242 342 142 42 242 42   -  -
1336  48 148 248 348 148 48 248 48   -  -
1337  54 154 254 354 154 54 254 54   -  -
1338  60 160 260 360 160 60 260 60 360 60
1339  66 166 266 366 166 66 266 66   -  -
1340  72 172 272 372 172 72 272 72   -  -
1341  78 178 278 378 178 78 278 78   -  -
1342  84 184 284 384 184 84 284 84   -  -
1343  90 190 290 390 190 90 290 90 390 90
1344   -   -   -   -   -  -   -  - 305  5
1345   -   -   -   -   -  -   -  - 310 10
1346   -   -   -   -   -  -   -  - 315 15
1347   -   -   -   -   -  -   -  - 320 20
1348   -   -   -   -   -  -   -  - 325 25
1349   -   -   -   -   -  -   -  - 335 35
1350   -   -   -   -   -  -   -  - 340 40
1351   -   -   -   -   -  -   -  - 345 45
1352   -   -   -   -   -  -   -  - 350 50
1353   -   -   -   -   -  -   -  - 355 55
1354   -   -   -   -   -  -   -  - 365 65
1355   -   -   -   -   -  -   -  - 370 70
1356   -   -   -   -   -  -   -  - 375 75
1357   -   -   -   -   -  -   -  - 380 80
1358   -   -   -   -   -  -   -  - 385 85
1359   -   -   -   -   -  -   -  - 395 95
1360}
1361do_execsql_test joinD-67 {
1362  SELECT t1.*, t2.*, t3.*, t4.*
1363  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1364  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1365  FULL JOIN t4 ON t1.d=t4.d
1366  WHERE t2.x>0 AND t4.z>0
1367  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1368} {
1369  30 130 230 330 130 30 230 30 330 30
1370  60 160 260 360 160 60 260 60 360 60
1371  90 190 290 390 190 90 290 90 390 90
1372}
1373do_execsql_test joinD-68 {
1374  SELECT t1.*, t2.*, t3.*, t4.*
1375  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1376  INNER JOIN t3 ON t1.c=t3.c
1377  FULL JOIN t4 ON t1.d=t4.d
1378  WHERE t4.z>0 AND t3.y>0
1379  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1380} {
1381  30 130 230 330 130 30 230 30 330 30
1382  60 160 260 360 160 60 260 60 360 60
1383  90 190 290 390 190 90 290 90 390 90
1384}
1385do_execsql_test joinD-69 {
1386  SELECT t1.*, t2.*, t3.*, t4.*
1387  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1388  INNER JOIN t3 ON t1.c=t3.c
1389  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1390  WHERE t2.x>0 AND t3.y>0
1391  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1392} {
1393   6 106 206 306 106  6 206  6   -  -
1394  12 112 212 312 112 12 212 12   -  -
1395  18 118 218 318 118 18 218 18   -  -
1396  24 124 224 324 124 24 224 24   -  -
1397  30 130 230 330 130 30 230 30 330 30
1398  36 136 236 336 136 36 236 36   -  -
1399  42 142 242 342 142 42 242 42   -  -
1400  48 148 248 348 148 48 248 48   -  -
1401  54 154 254 354 154 54 254 54   -  -
1402  60 160 260 360 160 60 260 60 360 60
1403  66 166 266 366 166 66 266 66   -  -
1404  72 172 272 372 172 72 272 72   -  -
1405  78 178 278 378 178 78 278 78   -  -
1406  84 184 284 384 184 84 284 84   -  -
1407  90 190 290 390 190 90 290 90 390 90
1408}
1409do_execsql_test joinD-70 {
1410  SELECT t1.*, t2.*, t3.*, t4.*
1411  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1412  INNER JOIN t3 ON t1.c=t3.c
1413  FULL JOIN t4 ON t1.d=t4.d
1414  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
1415  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1416} {
1417  30 130 230 330 130 30 230 30 330 30
1418  60 160 260 360 160 60 260 60 360 60
1419  90 190 290 390 190 90 290 90 390 90
1420}
1421do_execsql_test joinD-71 {
1422  SELECT t1.*, t2.*, t3.*, t4.*
1423  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1424  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1425  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
1426  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1427} {
1428   6 106 206 306 106  6 206  6   -  -
1429  12 112 212 312 112 12 212 12   -  -
1430  18 118 218 318 118 18 218 18   -  -
1431  24 124 224 324 124 24 224 24   -  -
1432  30 130 230 330 130 30 230 30 330 30
1433  36 136 236 336 136 36 236 36   -  -
1434  42 142 242 342 142 42 242 42   -  -
1435  48 148 248 348 148 48 248 48   -  -
1436  54 154 254 354 154 54 254 54   -  -
1437  60 160 260 360 160 60 260 60 360 60
1438  66 166 266 366 166 66 266 66   -  -
1439  72 172 272 372 172 72 272 72   -  -
1440  78 178 278 378 178 78 278 78   -  -
1441  84 184 284 384 184 84 284 84   -  -
1442  90 190 290 390 190 90 290 90 390 90
1443   -   -   -   -   -  -   -  - 300  0
1444   -   -   -   -   -  -   -  - 305  5
1445   -   -   -   -   -  -   -  - 310 10
1446   -   -   -   -   -  -   -  - 315 15
1447   -   -   -   -   -  -   -  - 320 20
1448   -   -   -   -   -  -   -  - 325 25
1449   -   -   -   -   -  -   -  - 335 35
1450   -   -   -   -   -  -   -  - 340 40
1451   -   -   -   -   -  -   -  - 345 45
1452   -   -   -   -   -  -   -  - 350 50
1453   -   -   -   -   -  -   -  - 355 55
1454   -   -   -   -   -  -   -  - 365 65
1455   -   -   -   -   -  -   -  - 370 70
1456   -   -   -   -   -  -   -  - 375 75
1457   -   -   -   -   -  -   -  - 380 80
1458   -   -   -   -   -  -   -  - 385 85
1459   -   -   -   -   -  -   -  - 395 95
1460}
1461do_execsql_test joinD-72 {
1462  SELECT t1.*, t2.*, t3.*, t4.*
1463  FROM t1 INNER JOIN t2 ON t2.x>0
1464  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1465  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
1466  WHERE t1.b IS NOT DISTINCT FROM t2.b
1467  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1468} {
1469   6 106 206 306 106  6 206  6   -  -
1470  12 112 212 312 112 12 212 12   -  -
1471  18 118 218 318 118 18 218 18   -  -
1472  24 124 224 324 124 24 224 24   -  -
1473  30 130 230 330 130 30 230 30 330 30
1474  36 136 236 336 136 36 236 36   -  -
1475  42 142 242 342 142 42 242 42   -  -
1476  48 148 248 348 148 48 248 48   -  -
1477  54 154 254 354 154 54 254 54   -  -
1478  60 160 260 360 160 60 260 60 360 60
1479  66 166 266 366 166 66 266 66   -  -
1480  72 172 272 372 172 72 272 72   -  -
1481  78 178 278 378 178 78 278 78   -  -
1482  84 184 284 384 184 84 284 84   -  -
1483  90 190 290 390 190 90 290 90 390 90
1484   -   -   -   -   -  -   -  - 300  0
1485   -   -   -   -   -  -   -  - 305  5
1486   -   -   -   -   -  -   -  - 310 10
1487   -   -   -   -   -  -   -  - 320 20
1488   -   -   -   -   -  -   -  - 325 25
1489   -   -   -   -   -  -   -  - 335 35
1490   -   -   -   -   -  -   -  - 340 40
1491   -   -   -   -   -  -   -  - 350 50
1492   -   -   -   -   -  -   -  - 355 55
1493   -   -   -   -   -  -   -  - 365 65
1494   -   -   -   -   -  -   -  - 370 70
1495   -   -   -   -   -  -   -  - 380 80
1496   -   -   -   -   -  -   -  - 385 85
1497   -   -   -   -   -  -   -  - 395 95
1498}
1499do_execsql_test joinD-73 {
1500  SELECT t1.*, t2.*, t3.*, t4.*
1501  FROM t1 INNER JOIN t2 ON t2.x>0
1502  INNER JOIN t3 ON t3.y>0
1503  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
1504  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
1505  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1506} {
1507   6 106 206 306 106  6 206  6   -  -
1508  12 112 212 312 112 12 212 12   -  -
1509  18 118 218 318 118 18 218 18   -  -
1510  24 124 224 324 124 24 224 24   -  -
1511  30 130 230 330 130 30 230 30 330 30
1512  36 136 236 336 136 36 236 36   -  -
1513  42 142 242 342 142 42 242 42   -  -
1514  48 148 248 348 148 48 248 48   -  -
1515  54 154 254 354 154 54 254 54   -  -
1516  60 160 260 360 160 60 260 60 360 60
1517  66 166 266 366 166 66 266 66   -  -
1518  72 172 272 372 172 72 272 72   -  -
1519  78 178 278 378 178 78 278 78   -  -
1520  84 184 284 384 184 84 284 84   -  -
1521  90 190 290 390 190 90 290 90 390 90
1522   -   -   -   -   -  -   -  - 300  0
1523}
1524do_execsql_test joinD-74 {
1525  SELECT t1.*, t2.*, t3.*, t4.*
1526  FROM t1 INNER JOIN t2 ON t2.x>0
1527  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1528  FULL JOIN t4 ON t4.z>0
1529  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
1530  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1531} {
1532  30 130 230 330 130 30 230 30 330 30
1533  60 160 260 360 160 60 260 60 360 60
1534  90 190 290 390 190 90 290 90 390 90
1535}
1536do_execsql_test joinD-75 {
1537  SELECT t1.*, t2.*, t3.*, t4.*
1538  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
1539  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1540  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1541  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1542} {
1543   6 106 206 306 106  6 206  6   -  -
1544  12 112 212 312 112 12 212 12   -  -
1545  18 118 218 318 118 18 218 18   -  -
1546  24 124 224 324 124 24 224 24   -  -
1547  30 130 230 330 130 30 230 30 330 30
1548  36 136 236 336 136 36 236 36   -  -
1549  42 142 242 342 142 42 242 42   -  -
1550  48 148 248 348 148 48 248 48   -  -
1551  54 154 254 354 154 54 254 54   -  -
1552  60 160 260 360 160 60 260 60 360 60
1553  66 166 266 366 166 66 266 66   -  -
1554  72 172 272 372 172 72 272 72   -  -
1555  78 178 278 378 178 78 278 78   -  -
1556  84 184 284 384 184 84 284 84   -  -
1557  90 190 290 390 190 90 290 90 390 90
1558   -   -   -   -   -  -   -  - 300  0
1559   -   -   -   -   -  -   -  - 305  5
1560   -   -   -   -   -  -   -  - 310 10
1561   -   -   -   -   -  -   -  - 315 15
1562   -   -   -   -   -  -   -  - 320 20
1563   -   -   -   -   -  -   -  - 325 25
1564   -   -   -   -   -  -   -  - 335 35
1565   -   -   -   -   -  -   -  - 340 40
1566   -   -   -   -   -  -   -  - 345 45
1567   -   -   -   -   -  -   -  - 350 50
1568   -   -   -   -   -  -   -  - 355 55
1569   -   -   -   -   -  -   -  - 365 65
1570   -   -   -   -   -  -   -  - 370 70
1571   -   -   -   -   -  -   -  - 375 75
1572   -   -   -   -   -  -   -  - 380 80
1573   -   -   -   -   -  -   -  - 385 85
1574   -   -   -   -   -  -   -  - 395 95
1575}
1576do_execsql_test joinD-76 {
1577  SELECT t1.*, t2.*, t3.*, t4.*
1578  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1579  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
1580  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1582} {
1583   6 106 206 306 106  6 206  6   -  -
1584  12 112 212 312 112 12 212 12   -  -
1585  18 118 218 318 118 18 218 18   -  -
1586  24 124 224 324 124 24 224 24   -  -
1587  30 130 230 330 130 30 230 30 330 30
1588  36 136 236 336 136 36 236 36   -  -
1589  42 142 242 342 142 42 242 42   -  -
1590  48 148 248 348 148 48 248 48   -  -
1591  54 154 254 354 154 54 254 54   -  -
1592  60 160 260 360 160 60 260 60 360 60
1593  66 166 266 366 166 66 266 66   -  -
1594  72 172 272 372 172 72 272 72   -  -
1595  78 178 278 378 178 78 278 78   -  -
1596  84 184 284 384 184 84 284 84   -  -
1597  90 190 290 390 190 90 290 90 390 90
1598   -   -   -   -   -  -   -  - 300  0
1599   -   -   -   -   -  -   -  - 305  5
1600   -   -   -   -   -  -   -  - 310 10
1601   -   -   -   -   -  -   -  - 315 15
1602   -   -   -   -   -  -   -  - 320 20
1603   -   -   -   -   -  -   -  - 325 25
1604   -   -   -   -   -  -   -  - 335 35
1605   -   -   -   -   -  -   -  - 340 40
1606   -   -   -   -   -  -   -  - 345 45
1607   -   -   -   -   -  -   -  - 350 50
1608   -   -   -   -   -  -   -  - 355 55
1609   -   -   -   -   -  -   -  - 365 65
1610   -   -   -   -   -  -   -  - 370 70
1611   -   -   -   -   -  -   -  - 375 75
1612   -   -   -   -   -  -   -  - 380 80
1613   -   -   -   -   -  -   -  - 385 85
1614   -   -   -   -   -  -   -  - 395 95
1615}
1616do_execsql_test joinD-77 {
1617  SELECT t1.*, t2.*, t3.*, t4.*
1618  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1619  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1620  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1621  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1622} {
1623  10 110 210 310 110 10   -  - 310 10
1624  20 120 220 320 120 20   -  - 320 20
1625  30 130 230 330 130 30 230 30 330 30
1626  40 140 240 340 140 40   -  - 340 40
1627  50 150 250 350 150 50   -  - 350 50
1628  60 160 260 360 160 60 260 60 360 60
1629  70 170 270 370 170 70   -  - 370 70
1630  80 180 280 380 180 80   -  - 380 80
1631  90 190 290 390 190 90 290 90 390 90
1632}
1633do_execsql_test joinD-78 {
1634  SELECT t1.*, t2.*, t3.*, t4.*
1635  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1636  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1637  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1638  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1639} {
1640  10 110 210 310 110 10   -  - 310 10
1641  20 120 220 320 120 20   -  - 320 20
1642  30 130 230 330 130 30 230 30 330 30
1643  40 140 240 340 140 40   -  - 340 40
1644  50 150 250 350 150 50   -  - 350 50
1645  60 160 260 360 160 60 260 60 360 60
1646  70 170 270 370 170 70   -  - 370 70
1647  80 180 280 380 180 80   -  - 380 80
1648  90 190 290 390 190 90 290 90 390 90
1649}
1650do_execsql_test joinD-79 {
1651  SELECT t1.*, t2.*, t3.*, t4.*
1652  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1653  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1654  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1655  WHERE t2.x>0
1656  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1657} {
1658  10 110 210 310 110 10   -  - 310 10
1659  20 120 220 320 120 20   -  - 320 20
1660  30 130 230 330 130 30 230 30 330 30
1661  40 140 240 340 140 40   -  - 340 40
1662  50 150 250 350 150 50   -  - 350 50
1663  60 160 260 360 160 60 260 60 360 60
1664  70 170 270 370 170 70   -  - 370 70
1665  80 180 280 380 180 80   -  - 380 80
1666  90 190 290 390 190 90 290 90 390 90
1667}
1668do_execsql_test joinD-80 {
1669  SELECT t1.*, t2.*, t3.*, t4.*
1670  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1671  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1672  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1673  WHERE (t2.x>0 OR t2.x IS NULL)
1674  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1675} {
1676  10 110 210 310 110 10   -  - 310 10
1677  20 120 220 320 120 20   -  - 320 20
1678  30 130 230 330 130 30 230 30 330 30
1679  40 140 240 340 140 40   -  - 340 40
1680  50 150 250 350 150 50   -  - 350 50
1681  60 160 260 360 160 60 260 60 360 60
1682  70 170 270 370 170 70   -  - 370 70
1683  80 180 280 380 180 80   -  - 380 80
1684  90 190 290 390 190 90 290 90 390 90
1685}
1686do_execsql_test joinD-81 {
1687  SELECT t1.*, t2.*, t3.*, t4.*
1688  FROM t1 INNER JOIN t2 ON true
1689  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1690  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1691  WHERE t1.b=t2.b AND t2.x>0
1692  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1693} {
1694  10 110 210 310 110 10   -  - 310 10
1695  20 120 220 320 120 20   -  - 320 20
1696  30 130 230 330 130 30 230 30 330 30
1697  40 140 240 340 140 40   -  - 340 40
1698  50 150 250 350 150 50   -  - 350 50
1699  60 160 260 360 160 60 260 60 360 60
1700  70 170 270 370 170 70   -  - 370 70
1701  80 180 280 380 180 80   -  - 380 80
1702  90 190 290 390 190 90 290 90 390 90
1703}
1704do_execsql_test joinD-82 {
1705  SELECT t1.*, t2.*, t3.*, t4.*
1706  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1707  LEFT JOIN t3 ON t1.c=t3.c
1708  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1709  WHERE t3.y>0
1710  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1711} {
1712  30 130 230 330 130 30 230 30 330 30
1713  60 160 260 360 160 60 260 60 360 60
1714  90 190 290 390 190 90 290 90 390 90
1715}
1716do_execsql_test joinD-83 {
1717  SELECT t1.*, t2.*, t3.*, t4.*
1718  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1719  LEFT JOIN t3 ON t1.c=t3.c
1720  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1721  WHERE t3.y>0 OR t3.y IS NULL
1722  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1723} {
1724  10 110 210 310 110 10   -  - 310 10
1725  20 120 220 320 120 20   -  - 320 20
1726  30 130 230 330 130 30 230 30 330 30
1727  40 140 240 340 140 40   -  - 340 40
1728  50 150 250 350 150 50   -  - 350 50
1729  60 160 260 360 160 60 260 60 360 60
1730  70 170 270 370 170 70   -  - 370 70
1731  80 180 280 380 180 80   -  - 380 80
1732  90 190 290 390 190 90 290 90 390 90
1733}
1734do_execsql_test joinD-84 {
1735  SELECT t1.*, t2.*, t3.*, t4.*
1736  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1737  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1738  INNER JOIN t4 ON t1.d=t4.d
1739  WHERE t4.z>0
1740  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1741} {
1742  10 110 210 310 110 10   -  - 310 10
1743  20 120 220 320 120 20   -  - 320 20
1744  30 130 230 330 130 30 230 30 330 30
1745  40 140 240 340 140 40   -  - 340 40
1746  50 150 250 350 150 50   -  - 350 50
1747  60 160 260 360 160 60 260 60 360 60
1748  70 170 270 370 170 70   -  - 370 70
1749  80 180 280 380 180 80   -  - 380 80
1750  90 190 290 390 190 90 290 90 390 90
1751}
1752do_execsql_test joinD-85 {
1753  SELECT t1.*, t2.*, t3.*, t4.*
1754  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1755  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1756  INNER JOIN t4 ON t1.d=t4.d
1757  WHERE t4.z IS NULL OR t4.z>0
1758  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1759} {
1760  10 110 210 310 110 10   -  - 310 10
1761  20 120 220 320 120 20   -  - 320 20
1762  30 130 230 330 130 30 230 30 330 30
1763  40 140 240 340 140 40   -  - 340 40
1764  50 150 250 350 150 50   -  - 350 50
1765  60 160 260 360 160 60 260 60 360 60
1766  70 170 270 370 170 70   -  - 370 70
1767  80 180 280 380 180 80   -  - 380 80
1768  90 190 290 390 190 90 290 90 390 90
1769}
1770do_execsql_test joinD-86 {
1771  SELECT t1.*, t2.*, t3.*, t4.*
1772  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1773  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1774  INNER JOIN t4 ON t1.d=t4.d
1775  WHERE t2.x>0 AND t4.z>0
1776  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1777} {
1778  10 110 210 310 110 10   -  - 310 10
1779  20 120 220 320 120 20   -  - 320 20
1780  30 130 230 330 130 30 230 30 330 30
1781  40 140 240 340 140 40   -  - 340 40
1782  50 150 250 350 150 50   -  - 350 50
1783  60 160 260 360 160 60 260 60 360 60
1784  70 170 270 370 170 70   -  - 370 70
1785  80 180 280 380 180 80   -  - 380 80
1786  90 190 290 390 190 90 290 90 390 90
1787}
1788do_execsql_test joinD-87 {
1789  SELECT t1.*, t2.*, t3.*, t4.*
1790  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1791  LEFT JOIN t3 ON t1.c=t3.c
1792  INNER JOIN t4 ON t1.d=t4.d
1793  WHERE t4.z>0 AND t3.y>0
1794  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1795} {
1796  30 130 230 330 130 30 230 30 330 30
1797  60 160 260 360 160 60 260 60 360 60
1798  90 190 290 390 190 90 290 90 390 90
1799}
1800do_execsql_test joinD-88 {
1801  SELECT t1.*, t2.*, t3.*, t4.*
1802  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1803  LEFT JOIN t3 ON t1.c=t3.c
1804  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1805  WHERE t2.x>0 AND t3.y>0
1806  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1807} {
1808  30 130 230 330 130 30 230 30 330 30
1809  60 160 260 360 160 60 260 60 360 60
1810  90 190 290 390 190 90 290 90 390 90
1811}
1812do_execsql_test joinD-89 {
1813  SELECT t1.*, t2.*, t3.*, t4.*
1814  FROM t1 INNER JOIN t2 ON t1.b=t2.b
1815  LEFT JOIN t3 ON t1.c=t3.c
1816  INNER JOIN t4 ON t1.d=t4.d
1817  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
1818  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1819} {
1820  30 130 230 330 130 30 230 30 330 30
1821  60 160 260 360 160 60 260 60 360 60
1822  90 190 290 390 190 90 290 90 390 90
1823}
1824do_execsql_test joinD-90 {
1825  SELECT t1.*, t2.*, t3.*, t4.*
1826  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1827  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1828  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
1829  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1830} {
1831  10 110 210 310 110 10   -  - 310 10
1832  20 120 220 320 120 20   -  - 320 20
1833  30 130 230 330 130 30 230 30 330 30
1834  40 140 240 340 140 40   -  - 340 40
1835  50 150 250 350 150 50   -  - 350 50
1836  60 160 260 360 160 60 260 60 360 60
1837  70 170 270 370 170 70   -  - 370 70
1838  80 180 280 380 180 80   -  - 380 80
1839  90 190 290 390 190 90 290 90 390 90
1840}
1841do_execsql_test joinD-91 {
1842  SELECT t1.*, t2.*, t3.*, t4.*
1843  FROM t1 INNER JOIN t2 ON t2.x>0
1844  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1845  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
1846  WHERE t1.b IS NOT DISTINCT FROM t2.b
1847  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1848} {
1849  10 110 210 310 110 10   -  - 310 10
1850  20 120 220 320 120 20   -  - 320 20
1851  30 130 230 330 130 30 230 30 330 30
1852  40 140 240 340 140 40   -  - 340 40
1853  50 150 250 350 150 50   -  - 350 50
1854  60 160 260 360 160 60 260 60 360 60
1855  70 170 270 370 170 70   -  - 370 70
1856  80 180 280 380 180 80   -  - 380 80
1857  90 190 290 390 190 90 290 90 390 90
1858}
1859do_execsql_test joinD-92 {
1860  SELECT t1.*, t2.*, t3.*, t4.*
1861  FROM t1 INNER JOIN t2 ON t2.x>0
1862  LEFT JOIN t3 ON t3.y>0
1863  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
1864  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
1865  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1866} {
1867  30 130 230 330 130 30 230 30 330 30
1868  60 160 260 360 160 60 260 60 360 60
1869  90 190 290 390 190 90 290 90 390 90
1870}
1871do_execsql_test joinD-93 {
1872  SELECT t1.*, t2.*, t3.*, t4.*
1873  FROM t1 INNER JOIN t2 ON t2.x>0
1874  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
1875  INNER JOIN t4 ON t4.z>0
1876  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
1877  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1878} {
1879  10 110 210 310 110 10   -  - 310 10
1880  20 120 220 320 120 20   -  - 320 20
1881  30 130 230 330 130 30 230 30 330 30
1882  40 140 240 340 140 40   -  - 340 40
1883  50 150 250 350 150 50   -  - 350 50
1884  60 160 260 360 160 60 260 60 360 60
1885  70 170 270 370 170 70   -  - 370 70
1886  80 180 280 380 180 80   -  - 380 80
1887  90 190 290 390 190 90 290 90 390 90
1888}
1889do_execsql_test joinD-94 {
1890  SELECT t1.*, t2.*, t3.*, t4.*
1891  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
1892  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1893  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1894  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1895} {
1896  10 110 210 310 110 10   -  - 310 10
1897  20 120 220 320 120 20   -  - 320 20
1898  30 130 230 330 130 30 230 30 330 30
1899  40 140 240 340 140 40   -  - 340 40
1900  50 150 250 350 150 50   -  - 350 50
1901  60 160 260 360 160 60 260 60 360 60
1902  70 170 270 370 170 70   -  - 370 70
1903  80 180 280 380 180 80   -  - 380 80
1904  90 190 290 390 190 90 290 90 390 90
1905}
1906do_execsql_test joinD-95 {
1907  SELECT t1.*, t2.*, t3.*, t4.*
1908  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1909  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
1910  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1911  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1912} {
1913  10 110 210 310 110 10   -  - 310 10
1914  20 120 220 320 120 20   -  - 320 20
1915  30 130 230 330 130 30 230 30 330 30
1916  40 140 240 340 140 40   -  - 340 40
1917  50 150 250 350 150 50   -  - 350 50
1918  60 160 260 360 160 60 260 60 360 60
1919  70 170 270 370 170 70   -  - 370 70
1920  80 180 280 380 180 80   -  - 380 80
1921  90 190 290 390 190 90 290 90 390 90
1922}
1923do_execsql_test joinD-96 {
1924  SELECT t1.*, t2.*, t3.*, t4.*
1925  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
1926  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1927  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1928  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1929} {
1930   2 102 202 302 102  2   -  -   -  -
1931   4 104 204 304 104  4   -  -   -  -
1932   6 106 206 306 106  6 206  6   -  -
1933   8 108 208 308 108  8   -  -   -  -
1934  10 110 210 310 110 10   -  - 310 10
1935  12 112 212 312 112 12 212 12   -  -
1936  14 114 214 314 114 14   -  -   -  -
1937  16 116 216 316 116 16   -  -   -  -
1938  18 118 218 318 118 18 218 18   -  -
1939  20 120 220 320 120 20   -  - 320 20
1940  22 122 222 322 122 22   -  -   -  -
1941  24 124 224 324 124 24 224 24   -  -
1942  26 126 226 326 126 26   -  -   -  -
1943  28 128 228 328 128 28   -  -   -  -
1944  30 130 230 330 130 30 230 30 330 30
1945  32 132 232 332 132 32   -  -   -  -
1946  34 134 234 334 134 34   -  -   -  -
1947  36 136 236 336 136 36 236 36   -  -
1948  38 138 238 338 138 38   -  -   -  -
1949  40 140 240 340 140 40   -  - 340 40
1950  42 142 242 342 142 42 242 42   -  -
1951  44 144 244 344 144 44   -  -   -  -
1952  46 146 246 346 146 46   -  -   -  -
1953  48 148 248 348 148 48 248 48   -  -
1954  50 150 250 350 150 50   -  - 350 50
1955  52 152 252 352 152 52   -  -   -  -
1956  54 154 254 354 154 54 254 54   -  -
1957  56 156 256 356 156 56   -  -   -  -
1958  58 158 258 358 158 58   -  -   -  -
1959  60 160 260 360 160 60 260 60 360 60
1960  62 162 262 362 162 62   -  -   -  -
1961  64 164 264 364 164 64   -  -   -  -
1962  66 166 266 366 166 66 266 66   -  -
1963  68 168 268 368 168 68   -  -   -  -
1964  70 170 270 370 170 70   -  - 370 70
1965  72 172 272 372 172 72 272 72   -  -
1966  74 174 274 374 174 74   -  -   -  -
1967  76 176 276 376 176 76   -  -   -  -
1968  78 178 278 378 178 78 278 78   -  -
1969  80 180 280 380 180 80   -  - 380 80
1970  82 182 282 382 182 82   -  -   -  -
1971  84 184 284 384 184 84 284 84   -  -
1972  86 186 286 386 186 86   -  -   -  -
1973  88 188 288 388 188 88   -  -   -  -
1974  90 190 290 390 190 90 290 90 390 90
1975  92 192 292 392 192 92   -  -   -  -
1976  94 194 294 394 194 94   -  -   -  -
1977}
1978do_execsql_test joinD-97 {
1979  SELECT t1.*, t2.*, t3.*, t4.*
1980  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
1981  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1982  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1983  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1984} {
1985   2 102 202 302 102  2   -  -   -  -
1986   4 104 204 304 104  4   -  -   -  -
1987   6 106 206 306 106  6 206  6   -  -
1988   8 108 208 308 108  8   -  -   -  -
1989  10 110 210 310 110 10   -  - 310 10
1990  12 112 212 312 112 12 212 12   -  -
1991  14 114 214 314 114 14   -  -   -  -
1992  16 116 216 316 116 16   -  -   -  -
1993  18 118 218 318 118 18 218 18   -  -
1994  20 120 220 320 120 20   -  - 320 20
1995  22 122 222 322 122 22   -  -   -  -
1996  24 124 224 324 124 24 224 24   -  -
1997  26 126 226 326 126 26   -  -   -  -
1998  28 128 228 328 128 28   -  -   -  -
1999  30 130 230 330 130 30 230 30 330 30
2000  32 132 232 332 132 32   -  -   -  -
2001  34 134 234 334 134 34   -  -   -  -
2002  36 136 236 336 136 36 236 36   -  -
2003  38 138 238 338 138 38   -  -   -  -
2004  40 140 240 340 140 40   -  - 340 40
2005  42 142 242 342 142 42 242 42   -  -
2006  44 144 244 344 144 44   -  -   -  -
2007  46 146 246 346 146 46   -  -   -  -
2008  48 148 248 348 148 48 248 48   -  -
2009  50 150 250 350 150 50   -  - 350 50
2010  52 152 252 352 152 52   -  -   -  -
2011  54 154 254 354 154 54 254 54   -  -
2012  56 156 256 356 156 56   -  -   -  -
2013  58 158 258 358 158 58   -  -   -  -
2014  60 160 260 360 160 60 260 60 360 60
2015  62 162 262 362 162 62   -  -   -  -
2016  64 164 264 364 164 64   -  -   -  -
2017  66 166 266 366 166 66 266 66   -  -
2018  68 168 268 368 168 68   -  -   -  -
2019  70 170 270 370 170 70   -  - 370 70
2020  72 172 272 372 172 72 272 72   -  -
2021  74 174 274 374 174 74   -  -   -  -
2022  76 176 276 376 176 76   -  -   -  -
2023  78 178 278 378 178 78 278 78   -  -
2024  80 180 280 380 180 80   -  - 380 80
2025  82 182 282 382 182 82   -  -   -  -
2026  84 184 284 384 184 84 284 84   -  -
2027  86 186 286 386 186 86   -  -   -  -
2028  88 188 288 388 188 88   -  -   -  -
2029  90 190 290 390 190 90 290 90 390 90
2030  92 192 292 392 192 92   -  -   -  -
2031  94 194 294 394 194 94   -  -   -  -
2032}
2033do_execsql_test joinD-98 {
2034  SELECT t1.*, t2.*, t3.*, t4.*
2035  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2036  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2037  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2038  WHERE t2.x>0
2039  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2040} {
2041   2 102 202 302 102  2   -  -   -  -
2042   4 104 204 304 104  4   -  -   -  -
2043   6 106 206 306 106  6 206  6   -  -
2044   8 108 208 308 108  8   -  -   -  -
2045  10 110 210 310 110 10   -  - 310 10
2046  12 112 212 312 112 12 212 12   -  -
2047  14 114 214 314 114 14   -  -   -  -
2048  16 116 216 316 116 16   -  -   -  -
2049  18 118 218 318 118 18 218 18   -  -
2050  20 120 220 320 120 20   -  - 320 20
2051  22 122 222 322 122 22   -  -   -  -
2052  24 124 224 324 124 24 224 24   -  -
2053  26 126 226 326 126 26   -  -   -  -
2054  28 128 228 328 128 28   -  -   -  -
2055  30 130 230 330 130 30 230 30 330 30
2056  32 132 232 332 132 32   -  -   -  -
2057  34 134 234 334 134 34   -  -   -  -
2058  36 136 236 336 136 36 236 36   -  -
2059  38 138 238 338 138 38   -  -   -  -
2060  40 140 240 340 140 40   -  - 340 40
2061  42 142 242 342 142 42 242 42   -  -
2062  44 144 244 344 144 44   -  -   -  -
2063  46 146 246 346 146 46   -  -   -  -
2064  48 148 248 348 148 48 248 48   -  -
2065  50 150 250 350 150 50   -  - 350 50
2066  52 152 252 352 152 52   -  -   -  -
2067  54 154 254 354 154 54 254 54   -  -
2068  56 156 256 356 156 56   -  -   -  -
2069  58 158 258 358 158 58   -  -   -  -
2070  60 160 260 360 160 60 260 60 360 60
2071  62 162 262 362 162 62   -  -   -  -
2072  64 164 264 364 164 64   -  -   -  -
2073  66 166 266 366 166 66 266 66   -  -
2074  68 168 268 368 168 68   -  -   -  -
2075  70 170 270 370 170 70   -  - 370 70
2076  72 172 272 372 172 72 272 72   -  -
2077  74 174 274 374 174 74   -  -   -  -
2078  76 176 276 376 176 76   -  -   -  -
2079  78 178 278 378 178 78 278 78   -  -
2080  80 180 280 380 180 80   -  - 380 80
2081  82 182 282 382 182 82   -  -   -  -
2082  84 184 284 384 184 84 284 84   -  -
2083  86 186 286 386 186 86   -  -   -  -
2084  88 188 288 388 188 88   -  -   -  -
2085  90 190 290 390 190 90 290 90 390 90
2086  92 192 292 392 192 92   -  -   -  -
2087  94 194 294 394 194 94   -  -   -  -
2088}
2089do_execsql_test joinD-99 {
2090  SELECT t1.*, t2.*, t3.*, t4.*
2091  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2092  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2093  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2094  WHERE (t2.x>0 OR t2.x IS NULL)
2095  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2096} {
2097   2 102 202 302 102  2   -  -   -  -
2098   4 104 204 304 104  4   -  -   -  -
2099   6 106 206 306 106  6 206  6   -  -
2100   8 108 208 308 108  8   -  -   -  -
2101  10 110 210 310 110 10   -  - 310 10
2102  12 112 212 312 112 12 212 12   -  -
2103  14 114 214 314 114 14   -  -   -  -
2104  16 116 216 316 116 16   -  -   -  -
2105  18 118 218 318 118 18 218 18   -  -
2106  20 120 220 320 120 20   -  - 320 20
2107  22 122 222 322 122 22   -  -   -  -
2108  24 124 224 324 124 24 224 24   -  -
2109  26 126 226 326 126 26   -  -   -  -
2110  28 128 228 328 128 28   -  -   -  -
2111  30 130 230 330 130 30 230 30 330 30
2112  32 132 232 332 132 32   -  -   -  -
2113  34 134 234 334 134 34   -  -   -  -
2114  36 136 236 336 136 36 236 36   -  -
2115  38 138 238 338 138 38   -  -   -  -
2116  40 140 240 340 140 40   -  - 340 40
2117  42 142 242 342 142 42 242 42   -  -
2118  44 144 244 344 144 44   -  -   -  -
2119  46 146 246 346 146 46   -  -   -  -
2120  48 148 248 348 148 48 248 48   -  -
2121  50 150 250 350 150 50   -  - 350 50
2122  52 152 252 352 152 52   -  -   -  -
2123  54 154 254 354 154 54 254 54   -  -
2124  56 156 256 356 156 56   -  -   -  -
2125  58 158 258 358 158 58   -  -   -  -
2126  60 160 260 360 160 60 260 60 360 60
2127  62 162 262 362 162 62   -  -   -  -
2128  64 164 264 364 164 64   -  -   -  -
2129  66 166 266 366 166 66 266 66   -  -
2130  68 168 268 368 168 68   -  -   -  -
2131  70 170 270 370 170 70   -  - 370 70
2132  72 172 272 372 172 72 272 72   -  -
2133  74 174 274 374 174 74   -  -   -  -
2134  76 176 276 376 176 76   -  -   -  -
2135  78 178 278 378 178 78 278 78   -  -
2136  80 180 280 380 180 80   -  - 380 80
2137  82 182 282 382 182 82   -  -   -  -
2138  84 184 284 384 184 84 284 84   -  -
2139  86 186 286 386 186 86   -  -   -  -
2140  88 188 288 388 188 88   -  -   -  -
2141  90 190 290 390 190 90 290 90 390 90
2142  92 192 292 392 192 92   -  -   -  -
2143  94 194 294 394 194 94   -  -   -  -
2144}
2145do_execsql_test joinD-100 {
2146  SELECT t1.*, t2.*, t3.*, t4.*
2147  FROM t1 INNER JOIN t2 ON true
2148  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2149  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2150  WHERE t1.b=t2.b AND t2.x>0
2151  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2152} {
2153   2 102 202 302 102  2   -  -   -  -
2154   4 104 204 304 104  4   -  -   -  -
2155   6 106 206 306 106  6 206  6   -  -
2156   8 108 208 308 108  8   -  -   -  -
2157  10 110 210 310 110 10   -  - 310 10
2158  12 112 212 312 112 12 212 12   -  -
2159  14 114 214 314 114 14   -  -   -  -
2160  16 116 216 316 116 16   -  -   -  -
2161  18 118 218 318 118 18 218 18   -  -
2162  20 120 220 320 120 20   -  - 320 20
2163  22 122 222 322 122 22   -  -   -  -
2164  24 124 224 324 124 24 224 24   -  -
2165  26 126 226 326 126 26   -  -   -  -
2166  28 128 228 328 128 28   -  -   -  -
2167  30 130 230 330 130 30 230 30 330 30
2168  32 132 232 332 132 32   -  -   -  -
2169  34 134 234 334 134 34   -  -   -  -
2170  36 136 236 336 136 36 236 36   -  -
2171  38 138 238 338 138 38   -  -   -  -
2172  40 140 240 340 140 40   -  - 340 40
2173  42 142 242 342 142 42 242 42   -  -
2174  44 144 244 344 144 44   -  -   -  -
2175  46 146 246 346 146 46   -  -   -  -
2176  48 148 248 348 148 48 248 48   -  -
2177  50 150 250 350 150 50   -  - 350 50
2178  52 152 252 352 152 52   -  -   -  -
2179  54 154 254 354 154 54 254 54   -  -
2180  56 156 256 356 156 56   -  -   -  -
2181  58 158 258 358 158 58   -  -   -  -
2182  60 160 260 360 160 60 260 60 360 60
2183  62 162 262 362 162 62   -  -   -  -
2184  64 164 264 364 164 64   -  -   -  -
2185  66 166 266 366 166 66 266 66   -  -
2186  68 168 268 368 168 68   -  -   -  -
2187  70 170 270 370 170 70   -  - 370 70
2188  72 172 272 372 172 72 272 72   -  -
2189  74 174 274 374 174 74   -  -   -  -
2190  76 176 276 376 176 76   -  -   -  -
2191  78 178 278 378 178 78 278 78   -  -
2192  80 180 280 380 180 80   -  - 380 80
2193  82 182 282 382 182 82   -  -   -  -
2194  84 184 284 384 184 84 284 84   -  -
2195  86 186 286 386 186 86   -  -   -  -
2196  88 188 288 388 188 88   -  -   -  -
2197  90 190 290 390 190 90 290 90 390 90
2198  92 192 292 392 192 92   -  -   -  -
2199  94 194 294 394 194 94   -  -   -  -
2200}
2201do_execsql_test joinD-101 {
2202  SELECT t1.*, t2.*, t3.*, t4.*
2203  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2204  LEFT JOIN t3 ON t1.c=t3.c
2205  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2206  WHERE t3.y>0
2207  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2208} {
2209   6 106 206 306 106  6 206  6   -  -
2210  12 112 212 312 112 12 212 12   -  -
2211  18 118 218 318 118 18 218 18   -  -
2212  24 124 224 324 124 24 224 24   -  -
2213  30 130 230 330 130 30 230 30 330 30
2214  36 136 236 336 136 36 236 36   -  -
2215  42 142 242 342 142 42 242 42   -  -
2216  48 148 248 348 148 48 248 48   -  -
2217  54 154 254 354 154 54 254 54   -  -
2218  60 160 260 360 160 60 260 60 360 60
2219  66 166 266 366 166 66 266 66   -  -
2220  72 172 272 372 172 72 272 72   -  -
2221  78 178 278 378 178 78 278 78   -  -
2222  84 184 284 384 184 84 284 84   -  -
2223  90 190 290 390 190 90 290 90 390 90
2224}
2225do_execsql_test joinD-102 {
2226  SELECT t1.*, t2.*, t3.*, t4.*
2227  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2228  LEFT JOIN t3 ON t1.c=t3.c
2229  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2230  WHERE t3.y>0 OR t3.y IS NULL
2231  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2232} {
2233   2 102 202 302 102  2   -  -   -  -
2234   4 104 204 304 104  4   -  -   -  -
2235   6 106 206 306 106  6 206  6   -  -
2236   8 108 208 308 108  8   -  -   -  -
2237  10 110 210 310 110 10   -  - 310 10
2238  12 112 212 312 112 12 212 12   -  -
2239  14 114 214 314 114 14   -  -   -  -
2240  16 116 216 316 116 16   -  -   -  -
2241  18 118 218 318 118 18 218 18   -  -
2242  20 120 220 320 120 20   -  - 320 20
2243  22 122 222 322 122 22   -  -   -  -
2244  24 124 224 324 124 24 224 24   -  -
2245  26 126 226 326 126 26   -  -   -  -
2246  28 128 228 328 128 28   -  -   -  -
2247  30 130 230 330 130 30 230 30 330 30
2248  32 132 232 332 132 32   -  -   -  -
2249  34 134 234 334 134 34   -  -   -  -
2250  36 136 236 336 136 36 236 36   -  -
2251  38 138 238 338 138 38   -  -   -  -
2252  40 140 240 340 140 40   -  - 340 40
2253  42 142 242 342 142 42 242 42   -  -
2254  44 144 244 344 144 44   -  -   -  -
2255  46 146 246 346 146 46   -  -   -  -
2256  48 148 248 348 148 48 248 48   -  -
2257  50 150 250 350 150 50   -  - 350 50
2258  52 152 252 352 152 52   -  -   -  -
2259  54 154 254 354 154 54 254 54   -  -
2260  56 156 256 356 156 56   -  -   -  -
2261  58 158 258 358 158 58   -  -   -  -
2262  60 160 260 360 160 60 260 60 360 60
2263  62 162 262 362 162 62   -  -   -  -
2264  64 164 264 364 164 64   -  -   -  -
2265  66 166 266 366 166 66 266 66   -  -
2266  68 168 268 368 168 68   -  -   -  -
2267  70 170 270 370 170 70   -  - 370 70
2268  72 172 272 372 172 72 272 72   -  -
2269  74 174 274 374 174 74   -  -   -  -
2270  76 176 276 376 176 76   -  -   -  -
2271  78 178 278 378 178 78 278 78   -  -
2272  80 180 280 380 180 80   -  - 380 80
2273  82 182 282 382 182 82   -  -   -  -
2274  84 184 284 384 184 84 284 84   -  -
2275  86 186 286 386 186 86   -  -   -  -
2276  88 188 288 388 188 88   -  -   -  -
2277  90 190 290 390 190 90 290 90 390 90
2278  92 192 292 392 192 92   -  -   -  -
2279  94 194 294 394 194 94   -  -   -  -
2280}
2281do_execsql_test joinD-103 {
2282  SELECT t1.*, t2.*, t3.*, t4.*
2283  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2284  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2285  LEFT JOIN t4 ON t1.d=t4.d
2286  WHERE t4.z>0
2287  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2288} {
2289  10 110 210 310 110 10   -  - 310 10
2290  20 120 220 320 120 20   -  - 320 20
2291  30 130 230 330 130 30 230 30 330 30
2292  40 140 240 340 140 40   -  - 340 40
2293  50 150 250 350 150 50   -  - 350 50
2294  60 160 260 360 160 60 260 60 360 60
2295  70 170 270 370 170 70   -  - 370 70
2296  80 180 280 380 180 80   -  - 380 80
2297  90 190 290 390 190 90 290 90 390 90
2298}
2299do_execsql_test joinD-104 {
2300  SELECT t1.*, t2.*, t3.*, t4.*
2301  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2302  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2303  LEFT JOIN t4 ON t1.d=t4.d
2304  WHERE t4.z IS NULL OR t4.z>0
2305  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2306} {
2307   2 102 202 302 102  2   -  -   -  -
2308   4 104 204 304 104  4   -  -   -  -
2309   6 106 206 306 106  6 206  6   -  -
2310   8 108 208 308 108  8   -  -   -  -
2311  10 110 210 310 110 10   -  - 310 10
2312  12 112 212 312 112 12 212 12   -  -
2313  14 114 214 314 114 14   -  -   -  -
2314  16 116 216 316 116 16   -  -   -  -
2315  18 118 218 318 118 18 218 18   -  -
2316  20 120 220 320 120 20   -  - 320 20
2317  22 122 222 322 122 22   -  -   -  -
2318  24 124 224 324 124 24 224 24   -  -
2319  26 126 226 326 126 26   -  -   -  -
2320  28 128 228 328 128 28   -  -   -  -
2321  30 130 230 330 130 30 230 30 330 30
2322  32 132 232 332 132 32   -  -   -  -
2323  34 134 234 334 134 34   -  -   -  -
2324  36 136 236 336 136 36 236 36   -  -
2325  38 138 238 338 138 38   -  -   -  -
2326  40 140 240 340 140 40   -  - 340 40
2327  42 142 242 342 142 42 242 42   -  -
2328  44 144 244 344 144 44   -  -   -  -
2329  46 146 246 346 146 46   -  -   -  -
2330  48 148 248 348 148 48 248 48   -  -
2331  50 150 250 350 150 50   -  - 350 50
2332  52 152 252 352 152 52   -  -   -  -
2333  54 154 254 354 154 54 254 54   -  -
2334  56 156 256 356 156 56   -  -   -  -
2335  58 158 258 358 158 58   -  -   -  -
2336  60 160 260 360 160 60 260 60 360 60
2337  62 162 262 362 162 62   -  -   -  -
2338  64 164 264 364 164 64   -  -   -  -
2339  66 166 266 366 166 66 266 66   -  -
2340  68 168 268 368 168 68   -  -   -  -
2341  70 170 270 370 170 70   -  - 370 70
2342  72 172 272 372 172 72 272 72   -  -
2343  74 174 274 374 174 74   -  -   -  -
2344  76 176 276 376 176 76   -  -   -  -
2345  78 178 278 378 178 78 278 78   -  -
2346  80 180 280 380 180 80   -  - 380 80
2347  82 182 282 382 182 82   -  -   -  -
2348  84 184 284 384 184 84 284 84   -  -
2349  86 186 286 386 186 86   -  -   -  -
2350  88 188 288 388 188 88   -  -   -  -
2351  90 190 290 390 190 90 290 90 390 90
2352  92 192 292 392 192 92   -  -   -  -
2353  94 194 294 394 194 94   -  -   -  -
2354}
2355do_execsql_test joinD-105 {
2356  SELECT t1.*, t2.*, t3.*, t4.*
2357  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2358  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2359  LEFT JOIN t4 ON t1.d=t4.d
2360  WHERE t2.x>0 AND t4.z>0
2361  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2362} {
2363  10 110 210 310 110 10   -  - 310 10
2364  20 120 220 320 120 20   -  - 320 20
2365  30 130 230 330 130 30 230 30 330 30
2366  40 140 240 340 140 40   -  - 340 40
2367  50 150 250 350 150 50   -  - 350 50
2368  60 160 260 360 160 60 260 60 360 60
2369  70 170 270 370 170 70   -  - 370 70
2370  80 180 280 380 180 80   -  - 380 80
2371  90 190 290 390 190 90 290 90 390 90
2372}
2373do_execsql_test joinD-106 {
2374  SELECT t1.*, t2.*, t3.*, t4.*
2375  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2376  LEFT JOIN t3 ON t1.c=t3.c
2377  LEFT JOIN t4 ON t1.d=t4.d
2378  WHERE t4.z>0 AND t3.y>0
2379  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2380} {
2381  30 130 230 330 130 30 230 30 330 30
2382  60 160 260 360 160 60 260 60 360 60
2383  90 190 290 390 190 90 290 90 390 90
2384}
2385do_execsql_test joinD-107 {
2386  SELECT t1.*, t2.*, t3.*, t4.*
2387  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2388  LEFT JOIN t3 ON t1.c=t3.c
2389  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2390  WHERE t2.x>0 AND t3.y>0
2391  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2392} {
2393   6 106 206 306 106  6 206  6   -  -
2394  12 112 212 312 112 12 212 12   -  -
2395  18 118 218 318 118 18 218 18   -  -
2396  24 124 224 324 124 24 224 24   -  -
2397  30 130 230 330 130 30 230 30 330 30
2398  36 136 236 336 136 36 236 36   -  -
2399  42 142 242 342 142 42 242 42   -  -
2400  48 148 248 348 148 48 248 48   -  -
2401  54 154 254 354 154 54 254 54   -  -
2402  60 160 260 360 160 60 260 60 360 60
2403  66 166 266 366 166 66 266 66   -  -
2404  72 172 272 372 172 72 272 72   -  -
2405  78 178 278 378 178 78 278 78   -  -
2406  84 184 284 384 184 84 284 84   -  -
2407  90 190 290 390 190 90 290 90 390 90
2408}
2409do_execsql_test joinD-108 {
2410  SELECT t1.*, t2.*, t3.*, t4.*
2411  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2412  LEFT JOIN t3 ON t1.c=t3.c
2413  LEFT JOIN t4 ON t1.d=t4.d
2414  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
2415  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2416} {
2417  30 130 230 330 130 30 230 30 330 30
2418  60 160 260 360 160 60 260 60 360 60
2419  90 190 290 390 190 90 290 90 390 90
2420}
2421do_execsql_test joinD-109 {
2422  SELECT t1.*, t2.*, t3.*, t4.*
2423  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
2424  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2425  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2426  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2427} {
2428   2 102 202 302 102  2   -  -   -  -
2429   4 104 204 304 104  4   -  -   -  -
2430   6 106 206 306 106  6 206  6   -  -
2431   8 108 208 308 108  8   -  -   -  -
2432  10 110 210 310 110 10   -  - 310 10
2433  12 112 212 312 112 12 212 12   -  -
2434  14 114 214 314 114 14   -  -   -  -
2435  16 116 216 316 116 16   -  -   -  -
2436  18 118 218 318 118 18 218 18   -  -
2437  20 120 220 320 120 20   -  - 320 20
2438  22 122 222 322 122 22   -  -   -  -
2439  24 124 224 324 124 24 224 24   -  -
2440  26 126 226 326 126 26   -  -   -  -
2441  28 128 228 328 128 28   -  -   -  -
2442  30 130 230 330 130 30 230 30 330 30
2443  32 132 232 332 132 32   -  -   -  -
2444  34 134 234 334 134 34   -  -   -  -
2445  36 136 236 336 136 36 236 36   -  -
2446  38 138 238 338 138 38   -  -   -  -
2447  40 140 240 340 140 40   -  - 340 40
2448  42 142 242 342 142 42 242 42   -  -
2449  44 144 244 344 144 44   -  -   -  -
2450  46 146 246 346 146 46   -  -   -  -
2451  48 148 248 348 148 48 248 48   -  -
2452  50 150 250 350 150 50   -  - 350 50
2453  52 152 252 352 152 52   -  -   -  -
2454  54 154 254 354 154 54 254 54   -  -
2455  56 156 256 356 156 56   -  -   -  -
2456  58 158 258 358 158 58   -  -   -  -
2457  60 160 260 360 160 60 260 60 360 60
2458  62 162 262 362 162 62   -  -   -  -
2459  64 164 264 364 164 64   -  -   -  -
2460  66 166 266 366 166 66 266 66   -  -
2461  68 168 268 368 168 68   -  -   -  -
2462  70 170 270 370 170 70   -  - 370 70
2463  72 172 272 372 172 72 272 72   -  -
2464  74 174 274 374 174 74   -  -   -  -
2465  76 176 276 376 176 76   -  -   -  -
2466  78 178 278 378 178 78 278 78   -  -
2467  80 180 280 380 180 80   -  - 380 80
2468  82 182 282 382 182 82   -  -   -  -
2469  84 184 284 384 184 84 284 84   -  -
2470  86 186 286 386 186 86   -  -   -  -
2471  88 188 288 388 188 88   -  -   -  -
2472  90 190 290 390 190 90 290 90 390 90
2473  92 192 292 392 192 92   -  -   -  -
2474  94 194 294 394 194 94   -  -   -  -
2475}
2476do_execsql_test joinD-110 {
2477  SELECT t1.*, t2.*, t3.*, t4.*
2478  FROM t1 INNER JOIN t2 ON t2.x>0
2479  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2480  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2481  WHERE t1.b IS NOT DISTINCT FROM t2.b
2482  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2483} {
2484   2 102 202 302 102  2   -  -   -  -
2485   4 104 204 304 104  4   -  -   -  -
2486   6 106 206 306 106  6 206  6   -  -
2487   8 108 208 308 108  8   -  -   -  -
2488  10 110 210 310 110 10   -  - 310 10
2489  12 112 212 312 112 12 212 12   -  -
2490  14 114 214 314 114 14   -  -   -  -
2491  16 116 216 316 116 16   -  -   -  -
2492  18 118 218 318 118 18 218 18   -  -
2493  20 120 220 320 120 20   -  - 320 20
2494  22 122 222 322 122 22   -  -   -  -
2495  24 124 224 324 124 24 224 24   -  -
2496  26 126 226 326 126 26   -  -   -  -
2497  28 128 228 328 128 28   -  -   -  -
2498  30 130 230 330 130 30 230 30 330 30
2499  32 132 232 332 132 32   -  -   -  -
2500  34 134 234 334 134 34   -  -   -  -
2501  36 136 236 336 136 36 236 36   -  -
2502  38 138 238 338 138 38   -  -   -  -
2503  40 140 240 340 140 40   -  - 340 40
2504  42 142 242 342 142 42 242 42   -  -
2505  44 144 244 344 144 44   -  -   -  -
2506  46 146 246 346 146 46   -  -   -  -
2507  48 148 248 348 148 48 248 48   -  -
2508  50 150 250 350 150 50   -  - 350 50
2509  52 152 252 352 152 52   -  -   -  -
2510  54 154 254 354 154 54 254 54   -  -
2511  56 156 256 356 156 56   -  -   -  -
2512  58 158 258 358 158 58   -  -   -  -
2513  60 160 260 360 160 60 260 60 360 60
2514  62 162 262 362 162 62   -  -   -  -
2515  64 164 264 364 164 64   -  -   -  -
2516  66 166 266 366 166 66 266 66   -  -
2517  68 168 268 368 168 68   -  -   -  -
2518  70 170 270 370 170 70   -  - 370 70
2519  72 172 272 372 172 72 272 72   -  -
2520  74 174 274 374 174 74   -  -   -  -
2521  76 176 276 376 176 76   -  -   -  -
2522  78 178 278 378 178 78 278 78   -  -
2523  80 180 280 380 180 80   -  - 380 80
2524  82 182 282 382 182 82   -  -   -  -
2525  84 184 284 384 184 84 284 84   -  -
2526  86 186 286 386 186 86   -  -   -  -
2527  88 188 288 388 188 88   -  -   -  -
2528  90 190 290 390 190 90 290 90 390 90
2529  92 192 292 392 192 92   -  -   -  -
2530  94 194 294 394 194 94   -  -   -  -
2531}
2532do_execsql_test joinD-111 {
2533  SELECT t1.*, t2.*, t3.*, t4.*
2534  FROM t1 INNER JOIN t2 ON t2.x>0
2535  LEFT JOIN t3 ON t3.y>0
2536  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2537  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
2538  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2539} {
2540   6 106 206 306 106  6 206  6   -  -
2541  12 112 212 312 112 12 212 12   -  -
2542  18 118 218 318 118 18 218 18   -  -
2543  24 124 224 324 124 24 224 24   -  -
2544  30 130 230 330 130 30 230 30 330 30
2545  36 136 236 336 136 36 236 36   -  -
2546  42 142 242 342 142 42 242 42   -  -
2547  48 148 248 348 148 48 248 48   -  -
2548  54 154 254 354 154 54 254 54   -  -
2549  60 160 260 360 160 60 260 60 360 60
2550  66 166 266 366 166 66 266 66   -  -
2551  72 172 272 372 172 72 272 72   -  -
2552  78 178 278 378 178 78 278 78   -  -
2553  84 184 284 384 184 84 284 84   -  -
2554  90 190 290 390 190 90 290 90 390 90
2555}
2556do_execsql_test joinD-112 {
2557  SELECT t1.*, t2.*, t3.*, t4.*
2558  FROM t1 INNER JOIN t2 ON t2.x>0
2559  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2560  LEFT JOIN t4 ON t4.z>0
2561  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
2562  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2563} {
2564  10 110 210 310 110 10   -  - 310 10
2565  20 120 220 320 120 20   -  - 320 20
2566  30 130 230 330 130 30 230 30 330 30
2567  40 140 240 340 140 40   -  - 340 40
2568  50 150 250 350 150 50   -  - 350 50
2569  60 160 260 360 160 60 260 60 360 60
2570  70 170 270 370 170 70   -  - 370 70
2571  80 180 280 380 180 80   -  - 380 80
2572  90 190 290 390 190 90 290 90 390 90
2573}
2574do_execsql_test joinD-113 {
2575  SELECT t1.*, t2.*, t3.*, t4.*
2576  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
2577  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2578  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2579  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2580} {
2581   2 102 202 302 102  2   -  -   -  -
2582   4 104 204 304 104  4   -  -   -  -
2583   6 106 206 306 106  6 206  6   -  -
2584   8 108 208 308 108  8   -  -   -  -
2585  10 110 210 310 110 10   -  - 310 10
2586  12 112 212 312 112 12 212 12   -  -
2587  14 114 214 314 114 14   -  -   -  -
2588  16 116 216 316 116 16   -  -   -  -
2589  18 118 218 318 118 18 218 18   -  -
2590  20 120 220 320 120 20   -  - 320 20
2591  22 122 222 322 122 22   -  -   -  -
2592  24 124 224 324 124 24 224 24   -  -
2593  26 126 226 326 126 26   -  -   -  -
2594  28 128 228 328 128 28   -  -   -  -
2595  30 130 230 330 130 30 230 30 330 30
2596  32 132 232 332 132 32   -  -   -  -
2597  34 134 234 334 134 34   -  -   -  -
2598  36 136 236 336 136 36 236 36   -  -
2599  38 138 238 338 138 38   -  -   -  -
2600  40 140 240 340 140 40   -  - 340 40
2601  42 142 242 342 142 42 242 42   -  -
2602  44 144 244 344 144 44   -  -   -  -
2603  46 146 246 346 146 46   -  -   -  -
2604  48 148 248 348 148 48 248 48   -  -
2605  50 150 250 350 150 50   -  - 350 50
2606  52 152 252 352 152 52   -  -   -  -
2607  54 154 254 354 154 54 254 54   -  -
2608  56 156 256 356 156 56   -  -   -  -
2609  58 158 258 358 158 58   -  -   -  -
2610  60 160 260 360 160 60 260 60 360 60
2611  62 162 262 362 162 62   -  -   -  -
2612  64 164 264 364 164 64   -  -   -  -
2613  66 166 266 366 166 66 266 66   -  -
2614  68 168 268 368 168 68   -  -   -  -
2615  70 170 270 370 170 70   -  - 370 70
2616  72 172 272 372 172 72 272 72   -  -
2617  74 174 274 374 174 74   -  -   -  -
2618  76 176 276 376 176 76   -  -   -  -
2619  78 178 278 378 178 78 278 78   -  -
2620  80 180 280 380 180 80   -  - 380 80
2621  82 182 282 382 182 82   -  -   -  -
2622  84 184 284 384 184 84 284 84   -  -
2623  86 186 286 386 186 86   -  -   -  -
2624  88 188 288 388 188 88   -  -   -  -
2625  90 190 290 390 190 90 290 90 390 90
2626  92 192 292 392 192 92   -  -   -  -
2627  94 194 294 394 194 94   -  -   -  -
2628}
2629do_execsql_test joinD-114 {
2630  SELECT t1.*, t2.*, t3.*, t4.*
2631  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2632  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
2633  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2634  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2635} {
2636   2 102 202 302 102  2   -  -   -  -
2637   4 104 204 304 104  4   -  -   -  -
2638   6 106 206 306 106  6 206  6   -  -
2639   8 108 208 308 108  8   -  -   -  -
2640  10 110 210 310 110 10   -  - 310 10
2641  12 112 212 312 112 12 212 12   -  -
2642  14 114 214 314 114 14   -  -   -  -
2643  16 116 216 316 116 16   -  -   -  -
2644  18 118 218 318 118 18 218 18   -  -
2645  20 120 220 320 120 20   -  - 320 20
2646  22 122 222 322 122 22   -  -   -  -
2647  24 124 224 324 124 24 224 24   -  -
2648  26 126 226 326 126 26   -  -   -  -
2649  28 128 228 328 128 28   -  -   -  -
2650  30 130 230 330 130 30 230 30 330 30
2651  32 132 232 332 132 32   -  -   -  -
2652  34 134 234 334 134 34   -  -   -  -
2653  36 136 236 336 136 36 236 36   -  -
2654  38 138 238 338 138 38   -  -   -  -
2655  40 140 240 340 140 40   -  - 340 40
2656  42 142 242 342 142 42 242 42   -  -
2657  44 144 244 344 144 44   -  -   -  -
2658  46 146 246 346 146 46   -  -   -  -
2659  48 148 248 348 148 48 248 48   -  -
2660  50 150 250 350 150 50   -  - 350 50
2661  52 152 252 352 152 52   -  -   -  -
2662  54 154 254 354 154 54 254 54   -  -
2663  56 156 256 356 156 56   -  -   -  -
2664  58 158 258 358 158 58   -  -   -  -
2665  60 160 260 360 160 60 260 60 360 60
2666  62 162 262 362 162 62   -  -   -  -
2667  64 164 264 364 164 64   -  -   -  -
2668  66 166 266 366 166 66 266 66   -  -
2669  68 168 268 368 168 68   -  -   -  -
2670  70 170 270 370 170 70   -  - 370 70
2671  72 172 272 372 172 72 272 72   -  -
2672  74 174 274 374 174 74   -  -   -  -
2673  76 176 276 376 176 76   -  -   -  -
2674  78 178 278 378 178 78 278 78   -  -
2675  80 180 280 380 180 80   -  - 380 80
2676  82 182 282 382 182 82   -  -   -  -
2677  84 184 284 384 184 84 284 84   -  -
2678  86 186 286 386 186 86   -  -   -  -
2679  88 188 288 388 188 88   -  -   -  -
2680  90 190 290 390 190 90 290 90 390 90
2681  92 192 292 392 192 92   -  -   -  -
2682  94 194 294 394 194 94   -  -   -  -
2683}
2684do_execsql_test joinD-115 {
2685  SELECT t1.*, t2.*, t3.*, t4.*
2686  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2687  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2688  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2689  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2690} {
2691  10 110 210 310 110 10   -  - 310 10
2692  20 120 220 320 120 20   -  - 320 20
2693  30 130 230 330 130 30 230 30 330 30
2694  40 140 240 340 140 40   -  - 340 40
2695  50 150 250 350 150 50   -  - 350 50
2696  60 160 260 360 160 60 260 60 360 60
2697  70 170 270 370 170 70   -  - 370 70
2698  80 180 280 380 180 80   -  - 380 80
2699  90 190 290 390 190 90 290 90 390 90
2700   -   -   -   -   -  -   -  - 300  0
2701   -   -   -   -   -  -   -  - 305  5
2702   -   -   -   -   -  -   -  - 315 15
2703   -   -   -   -   -  -   -  - 325 25
2704   -   -   -   -   -  -   -  - 335 35
2705   -   -   -   -   -  -   -  - 345 45
2706   -   -   -   -   -  -   -  - 355 55
2707   -   -   -   -   -  -   -  - 365 65
2708   -   -   -   -   -  -   -  - 375 75
2709   -   -   -   -   -  -   -  - 385 85
2710   -   -   -   -   -  -   -  - 395 95
2711}
2712do_execsql_test joinD-116 {
2713  SELECT t1.*, t2.*, t3.*, t4.*
2714  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
2715  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2716  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2717  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2718} {
2719  10 110 210 310 110 10   -  - 310 10
2720  20 120 220 320 120 20   -  - 320 20
2721  30 130 230 330 130 30 230 30 330 30
2722  40 140 240 340 140 40   -  - 340 40
2723  50 150 250 350 150 50   -  - 350 50
2724  60 160 260 360 160 60 260 60 360 60
2725  70 170 270 370 170 70   -  - 370 70
2726  80 180 280 380 180 80   -  - 380 80
2727  90 190 290 390 190 90 290 90 390 90
2728   -   -   -   -   -  -   -  - 300  0
2729   -   -   -   -   -  -   -  - 305  5
2730   -   -   -   -   -  -   -  - 315 15
2731   -   -   -   -   -  -   -  - 325 25
2732   -   -   -   -   -  -   -  - 335 35
2733   -   -   -   -   -  -   -  - 345 45
2734   -   -   -   -   -  -   -  - 355 55
2735   -   -   -   -   -  -   -  - 365 65
2736   -   -   -   -   -  -   -  - 375 75
2737   -   -   -   -   -  -   -  - 385 85
2738   -   -   -   -   -  -   -  - 395 95
2739}
2740do_execsql_test joinD-117 {
2741  SELECT t1.*, t2.*, t3.*, t4.*
2742  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2743  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2744  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2745  WHERE t2.x>0
2746  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2747} {
2748  10 110 210 310 110 10   -  - 310 10
2749  20 120 220 320 120 20   -  - 320 20
2750  30 130 230 330 130 30 230 30 330 30
2751  40 140 240 340 140 40   -  - 340 40
2752  50 150 250 350 150 50   -  - 350 50
2753  60 160 260 360 160 60 260 60 360 60
2754  70 170 270 370 170 70   -  - 370 70
2755  80 180 280 380 180 80   -  - 380 80
2756  90 190 290 390 190 90 290 90 390 90
2757}
2758do_execsql_test joinD-118 {
2759  SELECT t1.*, t2.*, t3.*, t4.*
2760  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2761  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2762  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2763  WHERE (t2.x>0 OR t2.x IS NULL)
2764  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2765} {
2766  10 110 210 310 110 10   -  - 310 10
2767  20 120 220 320 120 20   -  - 320 20
2768  30 130 230 330 130 30 230 30 330 30
2769  40 140 240 340 140 40   -  - 340 40
2770  50 150 250 350 150 50   -  - 350 50
2771  60 160 260 360 160 60 260 60 360 60
2772  70 170 270 370 170 70   -  - 370 70
2773  80 180 280 380 180 80   -  - 380 80
2774  90 190 290 390 190 90 290 90 390 90
2775   -   -   -   -   -  -   -  - 300  0
2776   -   -   -   -   -  -   -  - 305  5
2777   -   -   -   -   -  -   -  - 315 15
2778   -   -   -   -   -  -   -  - 325 25
2779   -   -   -   -   -  -   -  - 335 35
2780   -   -   -   -   -  -   -  - 345 45
2781   -   -   -   -   -  -   -  - 355 55
2782   -   -   -   -   -  -   -  - 365 65
2783   -   -   -   -   -  -   -  - 375 75
2784   -   -   -   -   -  -   -  - 385 85
2785   -   -   -   -   -  -   -  - 395 95
2786}
2787do_execsql_test joinD-119 {
2788  SELECT t1.*, t2.*, t3.*, t4.*
2789  FROM t1 INNER JOIN t2 ON true
2790  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2791  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2792  WHERE t1.b=t2.b AND t2.x>0
2793  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2794} {
2795  10 110 210 310 110 10   -  - 310 10
2796  20 120 220 320 120 20   -  - 320 20
2797  30 130 230 330 130 30 230 30 330 30
2798  40 140 240 340 140 40   -  - 340 40
2799  50 150 250 350 150 50   -  - 350 50
2800  60 160 260 360 160 60 260 60 360 60
2801  70 170 270 370 170 70   -  - 370 70
2802  80 180 280 380 180 80   -  - 380 80
2803  90 190 290 390 190 90 290 90 390 90
2804}
2805do_execsql_test joinD-120 {
2806  SELECT t1.*, t2.*, t3.*, t4.*
2807  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2808  LEFT JOIN t3 ON t1.c=t3.c
2809  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2810  WHERE t3.y>0
2811  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2812} {
2813  30 130 230 330 130 30 230 30 330 30
2814  60 160 260 360 160 60 260 60 360 60
2815  90 190 290 390 190 90 290 90 390 90
2816}
2817do_execsql_test joinD-121 {
2818  SELECT t1.*, t2.*, t3.*, t4.*
2819  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2820  LEFT JOIN t3 ON t1.c=t3.c
2821  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2822  WHERE t3.y>0 OR t3.y IS NULL
2823  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2824} {
2825  10 110 210 310 110 10   -  - 310 10
2826  20 120 220 320 120 20   -  - 320 20
2827  30 130 230 330 130 30 230 30 330 30
2828  40 140 240 340 140 40   -  - 340 40
2829  50 150 250 350 150 50   -  - 350 50
2830  60 160 260 360 160 60 260 60 360 60
2831  70 170 270 370 170 70   -  - 370 70
2832  80 180 280 380 180 80   -  - 380 80
2833  90 190 290 390 190 90 290 90 390 90
2834   -   -   -   -   -  -   -  - 300  0
2835   -   -   -   -   -  -   -  - 305  5
2836   -   -   -   -   -  -   -  - 315 15
2837   -   -   -   -   -  -   -  - 325 25
2838   -   -   -   -   -  -   -  - 335 35
2839   -   -   -   -   -  -   -  - 345 45
2840   -   -   -   -   -  -   -  - 355 55
2841   -   -   -   -   -  -   -  - 365 65
2842   -   -   -   -   -  -   -  - 375 75
2843   -   -   -   -   -  -   -  - 385 85
2844   -   -   -   -   -  -   -  - 395 95
2845}
2846do_execsql_test joinD-122 {
2847  SELECT t1.*, t2.*, t3.*, t4.*
2848  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2849  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2850  RIGHT JOIN t4 ON t1.d=t4.d
2851  WHERE t4.z>0
2852  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2853} {
2854  10 110 210 310 110 10   -  - 310 10
2855  20 120 220 320 120 20   -  - 320 20
2856  30 130 230 330 130 30 230 30 330 30
2857  40 140 240 340 140 40   -  - 340 40
2858  50 150 250 350 150 50   -  - 350 50
2859  60 160 260 360 160 60 260 60 360 60
2860  70 170 270 370 170 70   -  - 370 70
2861  80 180 280 380 180 80   -  - 380 80
2862  90 190 290 390 190 90 290 90 390 90
2863   -   -   -   -   -  -   -  - 305  5
2864   -   -   -   -   -  -   -  - 315 15
2865   -   -   -   -   -  -   -  - 325 25
2866   -   -   -   -   -  -   -  - 335 35
2867   -   -   -   -   -  -   -  - 345 45
2868   -   -   -   -   -  -   -  - 355 55
2869   -   -   -   -   -  -   -  - 365 65
2870   -   -   -   -   -  -   -  - 375 75
2871   -   -   -   -   -  -   -  - 385 85
2872   -   -   -   -   -  -   -  - 395 95
2873}
2874do_execsql_test joinD-123 {
2875  SELECT t1.*, t2.*, t3.*, t4.*
2876  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2877  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2878  RIGHT JOIN t4 ON t1.d=t4.d
2879  WHERE t4.z IS NULL OR t4.z>0
2880  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2881} {
2882  10 110 210 310 110 10   -  - 310 10
2883  20 120 220 320 120 20   -  - 320 20
2884  30 130 230 330 130 30 230 30 330 30
2885  40 140 240 340 140 40   -  - 340 40
2886  50 150 250 350 150 50   -  - 350 50
2887  60 160 260 360 160 60 260 60 360 60
2888  70 170 270 370 170 70   -  - 370 70
2889  80 180 280 380 180 80   -  - 380 80
2890  90 190 290 390 190 90 290 90 390 90
2891   -   -   -   -   -  -   -  - 305  5
2892   -   -   -   -   -  -   -  - 315 15
2893   -   -   -   -   -  -   -  - 325 25
2894   -   -   -   -   -  -   -  - 335 35
2895   -   -   -   -   -  -   -  - 345 45
2896   -   -   -   -   -  -   -  - 355 55
2897   -   -   -   -   -  -   -  - 365 65
2898   -   -   -   -   -  -   -  - 375 75
2899   -   -   -   -   -  -   -  - 385 85
2900   -   -   -   -   -  -   -  - 395 95
2901}
2902do_execsql_test joinD-124 {
2903  SELECT t1.*, t2.*, t3.*, t4.*
2904  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2905  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2906  RIGHT JOIN t4 ON t1.d=t4.d
2907  WHERE t2.x>0 AND t4.z>0
2908  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2909} {
2910  10 110 210 310 110 10   -  - 310 10
2911  20 120 220 320 120 20   -  - 320 20
2912  30 130 230 330 130 30 230 30 330 30
2913  40 140 240 340 140 40   -  - 340 40
2914  50 150 250 350 150 50   -  - 350 50
2915  60 160 260 360 160 60 260 60 360 60
2916  70 170 270 370 170 70   -  - 370 70
2917  80 180 280 380 180 80   -  - 380 80
2918  90 190 290 390 190 90 290 90 390 90
2919}
2920do_execsql_test joinD-125 {
2921  SELECT t1.*, t2.*, t3.*, t4.*
2922  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
2923  LEFT JOIN t3 ON t1.c=t3.c
2924  RIGHT JOIN t4 ON t1.d=t4.d
2925  WHERE t4.z>0 AND t3.y>0
2926  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2927} {
2928  30 130 230 330 130 30 230 30 330 30
2929  60 160 260 360 160 60 260 60 360 60
2930  90 190 290 390 190 90 290 90 390 90
2931}
2932do_execsql_test joinD-126 {
2933  SELECT t1.*, t2.*, t3.*, t4.*
2934  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2935  LEFT JOIN t3 ON t1.c=t3.c
2936  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2937  WHERE t2.x>0 AND t3.y>0
2938  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2939} {
2940  30 130 230 330 130 30 230 30 330 30
2941  60 160 260 360 160 60 260 60 360 60
2942  90 190 290 390 190 90 290 90 390 90
2943}
2944do_execsql_test joinD-127 {
2945  SELECT t1.*, t2.*, t3.*, t4.*
2946  FROM t1 INNER JOIN t2 ON t1.b=t2.b
2947  LEFT JOIN t3 ON t1.c=t3.c
2948  RIGHT JOIN t4 ON t1.d=t4.d
2949  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
2950  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2951} {
2952  30 130 230 330 130 30 230 30 330 30
2953  60 160 260 360 160 60 260 60 360 60
2954  90 190 290 390 190 90 290 90 390 90
2955}
2956do_execsql_test joinD-128 {
2957  SELECT t1.*, t2.*, t3.*, t4.*
2958  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
2959  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2960  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2961  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2962} {
2963  10 110 210 310 110 10   -  - 310 10
2964  20 120 220 320 120 20   -  - 320 20
2965  30 130 230 330 130 30 230 30 330 30
2966  40 140 240 340 140 40   -  - 340 40
2967  50 150 250 350 150 50   -  - 350 50
2968  60 160 260 360 160 60 260 60 360 60
2969  70 170 270 370 170 70   -  - 370 70
2970  80 180 280 380 180 80   -  - 380 80
2971  90 190 290 390 190 90 290 90 390 90
2972   -   -   -   -   -  -   -  - 300  0
2973   -   -   -   -   -  -   -  - 305  5
2974   -   -   -   -   -  -   -  - 315 15
2975   -   -   -   -   -  -   -  - 325 25
2976   -   -   -   -   -  -   -  - 335 35
2977   -   -   -   -   -  -   -  - 345 45
2978   -   -   -   -   -  -   -  - 355 55
2979   -   -   -   -   -  -   -  - 365 65
2980   -   -   -   -   -  -   -  - 375 75
2981   -   -   -   -   -  -   -  - 385 85
2982   -   -   -   -   -  -   -  - 395 95
2983}
2984do_execsql_test joinD-129 {
2985  SELECT t1.*, t2.*, t3.*, t4.*
2986  FROM t1 INNER JOIN t2 ON t2.x>0
2987  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
2988  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
2989  WHERE t1.b IS NOT DISTINCT FROM t2.b
2990  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2991} {
2992  10 110 210 310 110 10   -  - 310 10
2993  20 120 220 320 120 20   -  - 320 20
2994  30 130 230 330 130 30 230 30 330 30
2995  40 140 240 340 140 40   -  - 340 40
2996  50 150 250 350 150 50   -  - 350 50
2997  60 160 260 360 160 60 260 60 360 60
2998  70 170 270 370 170 70   -  - 370 70
2999  80 180 280 380 180 80   -  - 380 80
3000  90 190 290 390 190 90 290 90 390 90
3001   -   -   -   -   -  -   -  - 300  0
3002}
3003do_execsql_test joinD-130 {
3004  SELECT t1.*, t2.*, t3.*, t4.*
3005  FROM t1 INNER JOIN t2 ON t2.x>0
3006  LEFT JOIN t3 ON t3.y>0
3007  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
3008  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
3009  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3010} {
3011  30 130 230 330 130 30 230 30 330 30
3012  60 160 260 360 160 60 260 60 360 60
3013  90 190 290 390 190 90 290 90 390 90
3014   -   -   -   -   -  -   -  - 300  0
3015}
3016do_execsql_test joinD-131 {
3017  SELECT t1.*, t2.*, t3.*, t4.*
3018  FROM t1 INNER JOIN t2 ON t2.x>0
3019  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3020  RIGHT JOIN t4 ON t4.z>0
3021  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
3022  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3023} {
3024  10 110 210 310 110 10   -  - 310 10
3025  20 120 220 320 120 20   -  - 320 20
3026  30 130 230 330 130 30 230 30 330 30
3027  40 140 240 340 140 40   -  - 340 40
3028  50 150 250 350 150 50   -  - 350 50
3029  60 160 260 360 160 60 260 60 360 60
3030  70 170 270 370 170 70   -  - 370 70
3031  80 180 280 380 180 80   -  - 380 80
3032  90 190 290 390 190 90 290 90 390 90
3033}
3034do_execsql_test joinD-132 {
3035  SELECT t1.*, t2.*, t3.*, t4.*
3036  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
3037  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3038  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
3039  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3040} {
3041  10 110 210 310 110 10   -  - 310 10
3042  20 120 220 320 120 20   -  - 320 20
3043  30 130 230 330 130 30 230 30 330 30
3044  40 140 240 340 140 40   -  - 340 40
3045  50 150 250 350 150 50   -  - 350 50
3046  60 160 260 360 160 60 260 60 360 60
3047  70 170 270 370 170 70   -  - 370 70
3048  80 180 280 380 180 80   -  - 380 80
3049  90 190 290 390 190 90 290 90 390 90
3050   -   -   -   -   -  -   -  - 300  0
3051   -   -   -   -   -  -   -  - 305  5
3052   -   -   -   -   -  -   -  - 315 15
3053   -   -   -   -   -  -   -  - 325 25
3054   -   -   -   -   -  -   -  - 335 35
3055   -   -   -   -   -  -   -  - 345 45
3056   -   -   -   -   -  -   -  - 355 55
3057   -   -   -   -   -  -   -  - 365 65
3058   -   -   -   -   -  -   -  - 375 75
3059   -   -   -   -   -  -   -  - 385 85
3060   -   -   -   -   -  -   -  - 395 95
3061}
3062do_execsql_test joinD-133 {
3063  SELECT t1.*, t2.*, t3.*, t4.*
3064  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3065  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
3066  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
3067  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3068} {
3069  10 110 210 310 110 10   -  - 310 10
3070  20 120 220 320 120 20   -  - 320 20
3071  30 130 230 330 130 30 230 30 330 30
3072  40 140 240 340 140 40   -  - 340 40
3073  50 150 250 350 150 50   -  - 350 50
3074  60 160 260 360 160 60 260 60 360 60
3075  70 170 270 370 170 70   -  - 370 70
3076  80 180 280 380 180 80   -  - 380 80
3077  90 190 290 390 190 90 290 90 390 90
3078   -   -   -   -   -  -   -  - 300  0
3079   -   -   -   -   -  -   -  - 305  5
3080   -   -   -   -   -  -   -  - 315 15
3081   -   -   -   -   -  -   -  - 325 25
3082   -   -   -   -   -  -   -  - 335 35
3083   -   -   -   -   -  -   -  - 345 45
3084   -   -   -   -   -  -   -  - 355 55
3085   -   -   -   -   -  -   -  - 365 65
3086   -   -   -   -   -  -   -  - 375 75
3087   -   -   -   -   -  -   -  - 385 85
3088   -   -   -   -   -  -   -  - 395 95
3089}
3090do_execsql_test joinD-134 {
3091  SELECT t1.*, t2.*, t3.*, t4.*
3092  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3093  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3094  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3095  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3096} {
3097   2 102 202 302 102  2   -  -   -  -
3098   4 104 204 304 104  4   -  -   -  -
3099   6 106 206 306 106  6 206  6   -  -
3100   8 108 208 308 108  8   -  -   -  -
3101  10 110 210 310 110 10   -  - 310 10
3102  12 112 212 312 112 12 212 12   -  -
3103  14 114 214 314 114 14   -  -   -  -
3104  16 116 216 316 116 16   -  -   -  -
3105  18 118 218 318 118 18 218 18   -  -
3106  20 120 220 320 120 20   -  - 320 20
3107  22 122 222 322 122 22   -  -   -  -
3108  24 124 224 324 124 24 224 24   -  -
3109  26 126 226 326 126 26   -  -   -  -
3110  28 128 228 328 128 28   -  -   -  -
3111  30 130 230 330 130 30 230 30 330 30
3112  32 132 232 332 132 32   -  -   -  -
3113  34 134 234 334 134 34   -  -   -  -
3114  36 136 236 336 136 36 236 36   -  -
3115  38 138 238 338 138 38   -  -   -  -
3116  40 140 240 340 140 40   -  - 340 40
3117  42 142 242 342 142 42 242 42   -  -
3118  44 144 244 344 144 44   -  -   -  -
3119  46 146 246 346 146 46   -  -   -  -
3120  48 148 248 348 148 48 248 48   -  -
3121  50 150 250 350 150 50   -  - 350 50
3122  52 152 252 352 152 52   -  -   -  -
3123  54 154 254 354 154 54 254 54   -  -
3124  56 156 256 356 156 56   -  -   -  -
3125  58 158 258 358 158 58   -  -   -  -
3126  60 160 260 360 160 60 260 60 360 60
3127  62 162 262 362 162 62   -  -   -  -
3128  64 164 264 364 164 64   -  -   -  -
3129  66 166 266 366 166 66 266 66   -  -
3130  68 168 268 368 168 68   -  -   -  -
3131  70 170 270 370 170 70   -  - 370 70
3132  72 172 272 372 172 72 272 72   -  -
3133  74 174 274 374 174 74   -  -   -  -
3134  76 176 276 376 176 76   -  -   -  -
3135  78 178 278 378 178 78 278 78   -  -
3136  80 180 280 380 180 80   -  - 380 80
3137  82 182 282 382 182 82   -  -   -  -
3138  84 184 284 384 184 84 284 84   -  -
3139  86 186 286 386 186 86   -  -   -  -
3140  88 188 288 388 188 88   -  -   -  -
3141  90 190 290 390 190 90 290 90 390 90
3142  92 192 292 392 192 92   -  -   -  -
3143  94 194 294 394 194 94   -  -   -  -
3144   -   -   -   -   -  -   -  - 300  0
3145   -   -   -   -   -  -   -  - 305  5
3146   -   -   -   -   -  -   -  - 315 15
3147   -   -   -   -   -  -   -  - 325 25
3148   -   -   -   -   -  -   -  - 335 35
3149   -   -   -   -   -  -   -  - 345 45
3150   -   -   -   -   -  -   -  - 355 55
3151   -   -   -   -   -  -   -  - 365 65
3152   -   -   -   -   -  -   -  - 375 75
3153   -   -   -   -   -  -   -  - 385 85
3154   -   -   -   -   -  -   -  - 395 95
3155}
3156do_execsql_test joinD-135 {
3157  SELECT t1.*, t2.*, t3.*, t4.*
3158  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
3159  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3160  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3161  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3162} {
3163   2 102 202 302 102  2   -  -   -  -
3164   4 104 204 304 104  4   -  -   -  -
3165   6 106 206 306 106  6 206  6   -  -
3166   8 108 208 308 108  8   -  -   -  -
3167  10 110 210 310 110 10   -  - 310 10
3168  12 112 212 312 112 12 212 12   -  -
3169  14 114 214 314 114 14   -  -   -  -
3170  16 116 216 316 116 16   -  -   -  -
3171  18 118 218 318 118 18 218 18   -  -
3172  20 120 220 320 120 20   -  - 320 20
3173  22 122 222 322 122 22   -  -   -  -
3174  24 124 224 324 124 24 224 24   -  -
3175  26 126 226 326 126 26   -  -   -  -
3176  28 128 228 328 128 28   -  -   -  -
3177  30 130 230 330 130 30 230 30 330 30
3178  32 132 232 332 132 32   -  -   -  -
3179  34 134 234 334 134 34   -  -   -  -
3180  36 136 236 336 136 36 236 36   -  -
3181  38 138 238 338 138 38   -  -   -  -
3182  40 140 240 340 140 40   -  - 340 40
3183  42 142 242 342 142 42 242 42   -  -
3184  44 144 244 344 144 44   -  -   -  -
3185  46 146 246 346 146 46   -  -   -  -
3186  48 148 248 348 148 48 248 48   -  -
3187  50 150 250 350 150 50   -  - 350 50
3188  52 152 252 352 152 52   -  -   -  -
3189  54 154 254 354 154 54 254 54   -  -
3190  56 156 256 356 156 56   -  -   -  -
3191  58 158 258 358 158 58   -  -   -  -
3192  60 160 260 360 160 60 260 60 360 60
3193  62 162 262 362 162 62   -  -   -  -
3194  64 164 264 364 164 64   -  -   -  -
3195  66 166 266 366 166 66 266 66   -  -
3196  68 168 268 368 168 68   -  -   -  -
3197  70 170 270 370 170 70   -  - 370 70
3198  72 172 272 372 172 72 272 72   -  -
3199  74 174 274 374 174 74   -  -   -  -
3200  76 176 276 376 176 76   -  -   -  -
3201  78 178 278 378 178 78 278 78   -  -
3202  80 180 280 380 180 80   -  - 380 80
3203  82 182 282 382 182 82   -  -   -  -
3204  84 184 284 384 184 84 284 84   -  -
3205  86 186 286 386 186 86   -  -   -  -
3206  88 188 288 388 188 88   -  -   -  -
3207  90 190 290 390 190 90 290 90 390 90
3208  92 192 292 392 192 92   -  -   -  -
3209  94 194 294 394 194 94   -  -   -  -
3210   -   -   -   -   -  -   -  - 300  0
3211   -   -   -   -   -  -   -  - 305  5
3212   -   -   -   -   -  -   -  - 315 15
3213   -   -   -   -   -  -   -  - 325 25
3214   -   -   -   -   -  -   -  - 335 35
3215   -   -   -   -   -  -   -  - 345 45
3216   -   -   -   -   -  -   -  - 355 55
3217   -   -   -   -   -  -   -  - 365 65
3218   -   -   -   -   -  -   -  - 375 75
3219   -   -   -   -   -  -   -  - 385 85
3220   -   -   -   -   -  -   -  - 395 95
3221}
3222do_execsql_test joinD-136 {
3223  SELECT t1.*, t2.*, t3.*, t4.*
3224  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3225  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3226  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3227  WHERE t2.x>0
3228  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3229} {
3230   2 102 202 302 102  2   -  -   -  -
3231   4 104 204 304 104  4   -  -   -  -
3232   6 106 206 306 106  6 206  6   -  -
3233   8 108 208 308 108  8   -  -   -  -
3234  10 110 210 310 110 10   -  - 310 10
3235  12 112 212 312 112 12 212 12   -  -
3236  14 114 214 314 114 14   -  -   -  -
3237  16 116 216 316 116 16   -  -   -  -
3238  18 118 218 318 118 18 218 18   -  -
3239  20 120 220 320 120 20   -  - 320 20
3240  22 122 222 322 122 22   -  -   -  -
3241  24 124 224 324 124 24 224 24   -  -
3242  26 126 226 326 126 26   -  -   -  -
3243  28 128 228 328 128 28   -  -   -  -
3244  30 130 230 330 130 30 230 30 330 30
3245  32 132 232 332 132 32   -  -   -  -
3246  34 134 234 334 134 34   -  -   -  -
3247  36 136 236 336 136 36 236 36   -  -
3248  38 138 238 338 138 38   -  -   -  -
3249  40 140 240 340 140 40   -  - 340 40
3250  42 142 242 342 142 42 242 42   -  -
3251  44 144 244 344 144 44   -  -   -  -
3252  46 146 246 346 146 46   -  -   -  -
3253  48 148 248 348 148 48 248 48   -  -
3254  50 150 250 350 150 50   -  - 350 50
3255  52 152 252 352 152 52   -  -   -  -
3256  54 154 254 354 154 54 254 54   -  -
3257  56 156 256 356 156 56   -  -   -  -
3258  58 158 258 358 158 58   -  -   -  -
3259  60 160 260 360 160 60 260 60 360 60
3260  62 162 262 362 162 62   -  -   -  -
3261  64 164 264 364 164 64   -  -   -  -
3262  66 166 266 366 166 66 266 66   -  -
3263  68 168 268 368 168 68   -  -   -  -
3264  70 170 270 370 170 70   -  - 370 70
3265  72 172 272 372 172 72 272 72   -  -
3266  74 174 274 374 174 74   -  -   -  -
3267  76 176 276 376 176 76   -  -   -  -
3268  78 178 278 378 178 78 278 78   -  -
3269  80 180 280 380 180 80   -  - 380 80
3270  82 182 282 382 182 82   -  -   -  -
3271  84 184 284 384 184 84 284 84   -  -
3272  86 186 286 386 186 86   -  -   -  -
3273  88 188 288 388 188 88   -  -   -  -
3274  90 190 290 390 190 90 290 90 390 90
3275  92 192 292 392 192 92   -  -   -  -
3276  94 194 294 394 194 94   -  -   -  -
3277}
3278do_execsql_test joinD-137 {
3279  SELECT t1.*, t2.*, t3.*, t4.*
3280  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3281  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3282  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3283  WHERE (t2.x>0 OR t2.x IS NULL)
3284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3285} {
3286   2 102 202 302 102  2   -  -   -  -
3287   4 104 204 304 104  4   -  -   -  -
3288   6 106 206 306 106  6 206  6   -  -
3289   8 108 208 308 108  8   -  -   -  -
3290  10 110 210 310 110 10   -  - 310 10
3291  12 112 212 312 112 12 212 12   -  -
3292  14 114 214 314 114 14   -  -   -  -
3293  16 116 216 316 116 16   -  -   -  -
3294  18 118 218 318 118 18 218 18   -  -
3295  20 120 220 320 120 20   -  - 320 20
3296  22 122 222 322 122 22   -  -   -  -
3297  24 124 224 324 124 24 224 24   -  -
3298  26 126 226 326 126 26   -  -   -  -
3299  28 128 228 328 128 28   -  -   -  -
3300  30 130 230 330 130 30 230 30 330 30
3301  32 132 232 332 132 32   -  -   -  -
3302  34 134 234 334 134 34   -  -   -  -
3303  36 136 236 336 136 36 236 36   -  -
3304  38 138 238 338 138 38   -  -   -  -
3305  40 140 240 340 140 40   -  - 340 40
3306  42 142 242 342 142 42 242 42   -  -
3307  44 144 244 344 144 44   -  -   -  -
3308  46 146 246 346 146 46   -  -   -  -
3309  48 148 248 348 148 48 248 48   -  -
3310  50 150 250 350 150 50   -  - 350 50
3311  52 152 252 352 152 52   -  -   -  -
3312  54 154 254 354 154 54 254 54   -  -
3313  56 156 256 356 156 56   -  -   -  -
3314  58 158 258 358 158 58   -  -   -  -
3315  60 160 260 360 160 60 260 60 360 60
3316  62 162 262 362 162 62   -  -   -  -
3317  64 164 264 364 164 64   -  -   -  -
3318  66 166 266 366 166 66 266 66   -  -
3319  68 168 268 368 168 68   -  -   -  -
3320  70 170 270 370 170 70   -  - 370 70
3321  72 172 272 372 172 72 272 72   -  -
3322  74 174 274 374 174 74   -  -   -  -
3323  76 176 276 376 176 76   -  -   -  -
3324  78 178 278 378 178 78 278 78   -  -
3325  80 180 280 380 180 80   -  - 380 80
3326  82 182 282 382 182 82   -  -   -  -
3327  84 184 284 384 184 84 284 84   -  -
3328  86 186 286 386 186 86   -  -   -  -
3329  88 188 288 388 188 88   -  -   -  -
3330  90 190 290 390 190 90 290 90 390 90
3331  92 192 292 392 192 92   -  -   -  -
3332  94 194 294 394 194 94   -  -   -  -
3333   -   -   -   -   -  -   -  - 300  0
3334   -   -   -   -   -  -   -  - 305  5
3335   -   -   -   -   -  -   -  - 315 15
3336   -   -   -   -   -  -   -  - 325 25
3337   -   -   -   -   -  -   -  - 335 35
3338   -   -   -   -   -  -   -  - 345 45
3339   -   -   -   -   -  -   -  - 355 55
3340   -   -   -   -   -  -   -  - 365 65
3341   -   -   -   -   -  -   -  - 375 75
3342   -   -   -   -   -  -   -  - 385 85
3343   -   -   -   -   -  -   -  - 395 95
3344}
3345do_execsql_test joinD-138 {
3346  SELECT t1.*, t2.*, t3.*, t4.*
3347  FROM t1 INNER JOIN t2 ON true
3348  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3349  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3350  WHERE t1.b=t2.b AND t2.x>0
3351  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3352} {
3353   2 102 202 302 102  2   -  -   -  -
3354   4 104 204 304 104  4   -  -   -  -
3355   6 106 206 306 106  6 206  6   -  -
3356   8 108 208 308 108  8   -  -   -  -
3357  10 110 210 310 110 10   -  - 310 10
3358  12 112 212 312 112 12 212 12   -  -
3359  14 114 214 314 114 14   -  -   -  -
3360  16 116 216 316 116 16   -  -   -  -
3361  18 118 218 318 118 18 218 18   -  -
3362  20 120 220 320 120 20   -  - 320 20
3363  22 122 222 322 122 22   -  -   -  -
3364  24 124 224 324 124 24 224 24   -  -
3365  26 126 226 326 126 26   -  -   -  -
3366  28 128 228 328 128 28   -  -   -  -
3367  30 130 230 330 130 30 230 30 330 30
3368  32 132 232 332 132 32   -  -   -  -
3369  34 134 234 334 134 34   -  -   -  -
3370  36 136 236 336 136 36 236 36   -  -
3371  38 138 238 338 138 38   -  -   -  -
3372  40 140 240 340 140 40   -  - 340 40
3373  42 142 242 342 142 42 242 42   -  -
3374  44 144 244 344 144 44   -  -   -  -
3375  46 146 246 346 146 46   -  -   -  -
3376  48 148 248 348 148 48 248 48   -  -
3377  50 150 250 350 150 50   -  - 350 50
3378  52 152 252 352 152 52   -  -   -  -
3379  54 154 254 354 154 54 254 54   -  -
3380  56 156 256 356 156 56   -  -   -  -
3381  58 158 258 358 158 58   -  -   -  -
3382  60 160 260 360 160 60 260 60 360 60
3383  62 162 262 362 162 62   -  -   -  -
3384  64 164 264 364 164 64   -  -   -  -
3385  66 166 266 366 166 66 266 66   -  -
3386  68 168 268 368 168 68   -  -   -  -
3387  70 170 270 370 170 70   -  - 370 70
3388  72 172 272 372 172 72 272 72   -  -
3389  74 174 274 374 174 74   -  -   -  -
3390  76 176 276 376 176 76   -  -   -  -
3391  78 178 278 378 178 78 278 78   -  -
3392  80 180 280 380 180 80   -  - 380 80
3393  82 182 282 382 182 82   -  -   -  -
3394  84 184 284 384 184 84 284 84   -  -
3395  86 186 286 386 186 86   -  -   -  -
3396  88 188 288 388 188 88   -  -   -  -
3397  90 190 290 390 190 90 290 90 390 90
3398  92 192 292 392 192 92   -  -   -  -
3399  94 194 294 394 194 94   -  -   -  -
3400}
3401do_execsql_test joinD-139 {
3402  SELECT t1.*, t2.*, t3.*, t4.*
3403  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3404  LEFT JOIN t3 ON t1.c=t3.c
3405  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3406  WHERE t3.y>0
3407  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3408} {
3409   6 106 206 306 106  6 206  6   -  -
3410  12 112 212 312 112 12 212 12   -  -
3411  18 118 218 318 118 18 218 18   -  -
3412  24 124 224 324 124 24 224 24   -  -
3413  30 130 230 330 130 30 230 30 330 30
3414  36 136 236 336 136 36 236 36   -  -
3415  42 142 242 342 142 42 242 42   -  -
3416  48 148 248 348 148 48 248 48   -  -
3417  54 154 254 354 154 54 254 54   -  -
3418  60 160 260 360 160 60 260 60 360 60
3419  66 166 266 366 166 66 266 66   -  -
3420  72 172 272 372 172 72 272 72   -  -
3421  78 178 278 378 178 78 278 78   -  -
3422  84 184 284 384 184 84 284 84   -  -
3423  90 190 290 390 190 90 290 90 390 90
3424}
3425do_execsql_test joinD-140 {
3426  SELECT t1.*, t2.*, t3.*, t4.*
3427  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3428  LEFT JOIN t3 ON t1.c=t3.c
3429  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3430  WHERE t3.y>0 OR t3.y IS NULL
3431  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3432} {
3433   2 102 202 302 102  2   -  -   -  -
3434   4 104 204 304 104  4   -  -   -  -
3435   6 106 206 306 106  6 206  6   -  -
3436   8 108 208 308 108  8   -  -   -  -
3437  10 110 210 310 110 10   -  - 310 10
3438  12 112 212 312 112 12 212 12   -  -
3439  14 114 214 314 114 14   -  -   -  -
3440  16 116 216 316 116 16   -  -   -  -
3441  18 118 218 318 118 18 218 18   -  -
3442  20 120 220 320 120 20   -  - 320 20
3443  22 122 222 322 122 22   -  -   -  -
3444  24 124 224 324 124 24 224 24   -  -
3445  26 126 226 326 126 26   -  -   -  -
3446  28 128 228 328 128 28   -  -   -  -
3447  30 130 230 330 130 30 230 30 330 30
3448  32 132 232 332 132 32   -  -   -  -
3449  34 134 234 334 134 34   -  -   -  -
3450  36 136 236 336 136 36 236 36   -  -
3451  38 138 238 338 138 38   -  -   -  -
3452  40 140 240 340 140 40   -  - 340 40
3453  42 142 242 342 142 42 242 42   -  -
3454  44 144 244 344 144 44   -  -   -  -
3455  46 146 246 346 146 46   -  -   -  -
3456  48 148 248 348 148 48 248 48   -  -
3457  50 150 250 350 150 50   -  - 350 50
3458  52 152 252 352 152 52   -  -   -  -
3459  54 154 254 354 154 54 254 54   -  -
3460  56 156 256 356 156 56   -  -   -  -
3461  58 158 258 358 158 58   -  -   -  -
3462  60 160 260 360 160 60 260 60 360 60
3463  62 162 262 362 162 62   -  -   -  -
3464  64 164 264 364 164 64   -  -   -  -
3465  66 166 266 366 166 66 266 66   -  -
3466  68 168 268 368 168 68   -  -   -  -
3467  70 170 270 370 170 70   -  - 370 70
3468  72 172 272 372 172 72 272 72   -  -
3469  74 174 274 374 174 74   -  -   -  -
3470  76 176 276 376 176 76   -  -   -  -
3471  78 178 278 378 178 78 278 78   -  -
3472  80 180 280 380 180 80   -  - 380 80
3473  82 182 282 382 182 82   -  -   -  -
3474  84 184 284 384 184 84 284 84   -  -
3475  86 186 286 386 186 86   -  -   -  -
3476  88 188 288 388 188 88   -  -   -  -
3477  90 190 290 390 190 90 290 90 390 90
3478  92 192 292 392 192 92   -  -   -  -
3479  94 194 294 394 194 94   -  -   -  -
3480   -   -   -   -   -  -   -  - 300  0
3481   -   -   -   -   -  -   -  - 305  5
3482   -   -   -   -   -  -   -  - 315 15
3483   -   -   -   -   -  -   -  - 325 25
3484   -   -   -   -   -  -   -  - 335 35
3485   -   -   -   -   -  -   -  - 345 45
3486   -   -   -   -   -  -   -  - 355 55
3487   -   -   -   -   -  -   -  - 365 65
3488   -   -   -   -   -  -   -  - 375 75
3489   -   -   -   -   -  -   -  - 385 85
3490   -   -   -   -   -  -   -  - 395 95
3491}
3492do_execsql_test joinD-141 {
3493  SELECT t1.*, t2.*, t3.*, t4.*
3494  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3495  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3496  FULL JOIN t4 ON t1.d=t4.d
3497  WHERE t4.z>0
3498  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3499} {
3500  10 110 210 310 110 10   -  - 310 10
3501  20 120 220 320 120 20   -  - 320 20
3502  30 130 230 330 130 30 230 30 330 30
3503  40 140 240 340 140 40   -  - 340 40
3504  50 150 250 350 150 50   -  - 350 50
3505  60 160 260 360 160 60 260 60 360 60
3506  70 170 270 370 170 70   -  - 370 70
3507  80 180 280 380 180 80   -  - 380 80
3508  90 190 290 390 190 90 290 90 390 90
3509   -   -   -   -   -  -   -  - 305  5
3510   -   -   -   -   -  -   -  - 315 15
3511   -   -   -   -   -  -   -  - 325 25
3512   -   -   -   -   -  -   -  - 335 35
3513   -   -   -   -   -  -   -  - 345 45
3514   -   -   -   -   -  -   -  - 355 55
3515   -   -   -   -   -  -   -  - 365 65
3516   -   -   -   -   -  -   -  - 375 75
3517   -   -   -   -   -  -   -  - 385 85
3518   -   -   -   -   -  -   -  - 395 95
3519}
3520do_execsql_test joinD-142 {
3521  SELECT t1.*, t2.*, t3.*, t4.*
3522  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3523  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3524  FULL JOIN t4 ON t1.d=t4.d
3525  WHERE t4.z IS NULL OR t4.z>0
3526  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3527} {
3528   2 102 202 302 102  2   -  -   -  -
3529   4 104 204 304 104  4   -  -   -  -
3530   6 106 206 306 106  6 206  6   -  -
3531   8 108 208 308 108  8   -  -   -  -
3532  10 110 210 310 110 10   -  - 310 10
3533  12 112 212 312 112 12 212 12   -  -
3534  14 114 214 314 114 14   -  -   -  -
3535  16 116 216 316 116 16   -  -   -  -
3536  18 118 218 318 118 18 218 18   -  -
3537  20 120 220 320 120 20   -  - 320 20
3538  22 122 222 322 122 22   -  -   -  -
3539  24 124 224 324 124 24 224 24   -  -
3540  26 126 226 326 126 26   -  -   -  -
3541  28 128 228 328 128 28   -  -   -  -
3542  30 130 230 330 130 30 230 30 330 30
3543  32 132 232 332 132 32   -  -   -  -
3544  34 134 234 334 134 34   -  -   -  -
3545  36 136 236 336 136 36 236 36   -  -
3546  38 138 238 338 138 38   -  -   -  -
3547  40 140 240 340 140 40   -  - 340 40
3548  42 142 242 342 142 42 242 42   -  -
3549  44 144 244 344 144 44   -  -   -  -
3550  46 146 246 346 146 46   -  -   -  -
3551  48 148 248 348 148 48 248 48   -  -
3552  50 150 250 350 150 50   -  - 350 50
3553  52 152 252 352 152 52   -  -   -  -
3554  54 154 254 354 154 54 254 54   -  -
3555  56 156 256 356 156 56   -  -   -  -
3556  58 158 258 358 158 58   -  -   -  -
3557  60 160 260 360 160 60 260 60 360 60
3558  62 162 262 362 162 62   -  -   -  -
3559  64 164 264 364 164 64   -  -   -  -
3560  66 166 266 366 166 66 266 66   -  -
3561  68 168 268 368 168 68   -  -   -  -
3562  70 170 270 370 170 70   -  - 370 70
3563  72 172 272 372 172 72 272 72   -  -
3564  74 174 274 374 174 74   -  -   -  -
3565  76 176 276 376 176 76   -  -   -  -
3566  78 178 278 378 178 78 278 78   -  -
3567  80 180 280 380 180 80   -  - 380 80
3568  82 182 282 382 182 82   -  -   -  -
3569  84 184 284 384 184 84 284 84   -  -
3570  86 186 286 386 186 86   -  -   -  -
3571  88 188 288 388 188 88   -  -   -  -
3572  90 190 290 390 190 90 290 90 390 90
3573  92 192 292 392 192 92   -  -   -  -
3574  94 194 294 394 194 94   -  -   -  -
3575   -   -   -   -   -  -   -  - 305  5
3576   -   -   -   -   -  -   -  - 315 15
3577   -   -   -   -   -  -   -  - 325 25
3578   -   -   -   -   -  -   -  - 335 35
3579   -   -   -   -   -  -   -  - 345 45
3580   -   -   -   -   -  -   -  - 355 55
3581   -   -   -   -   -  -   -  - 365 65
3582   -   -   -   -   -  -   -  - 375 75
3583   -   -   -   -   -  -   -  - 385 85
3584   -   -   -   -   -  -   -  - 395 95
3585}
3586do_execsql_test joinD-143 {
3587  SELECT t1.*, t2.*, t3.*, t4.*
3588  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3589  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3590  FULL JOIN t4 ON t1.d=t4.d
3591  WHERE t2.x>0 AND t4.z>0
3592  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3593} {
3594  10 110 210 310 110 10   -  - 310 10
3595  20 120 220 320 120 20   -  - 320 20
3596  30 130 230 330 130 30 230 30 330 30
3597  40 140 240 340 140 40   -  - 340 40
3598  50 150 250 350 150 50   -  - 350 50
3599  60 160 260 360 160 60 260 60 360 60
3600  70 170 270 370 170 70   -  - 370 70
3601  80 180 280 380 180 80   -  - 380 80
3602  90 190 290 390 190 90 290 90 390 90
3603}
3604do_execsql_test joinD-144 {
3605  SELECT t1.*, t2.*, t3.*, t4.*
3606  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3607  LEFT JOIN t3 ON t1.c=t3.c
3608  FULL JOIN t4 ON t1.d=t4.d
3609  WHERE t4.z>0 AND t3.y>0
3610  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3611} {
3612  30 130 230 330 130 30 230 30 330 30
3613  60 160 260 360 160 60 260 60 360 60
3614  90 190 290 390 190 90 290 90 390 90
3615}
3616do_execsql_test joinD-145 {
3617  SELECT t1.*, t2.*, t3.*, t4.*
3618  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3619  LEFT JOIN t3 ON t1.c=t3.c
3620  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3621  WHERE t2.x>0 AND t3.y>0
3622  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3623} {
3624   6 106 206 306 106  6 206  6   -  -
3625  12 112 212 312 112 12 212 12   -  -
3626  18 118 218 318 118 18 218 18   -  -
3627  24 124 224 324 124 24 224 24   -  -
3628  30 130 230 330 130 30 230 30 330 30
3629  36 136 236 336 136 36 236 36   -  -
3630  42 142 242 342 142 42 242 42   -  -
3631  48 148 248 348 148 48 248 48   -  -
3632  54 154 254 354 154 54 254 54   -  -
3633  60 160 260 360 160 60 260 60 360 60
3634  66 166 266 366 166 66 266 66   -  -
3635  72 172 272 372 172 72 272 72   -  -
3636  78 178 278 378 178 78 278 78   -  -
3637  84 184 284 384 184 84 284 84   -  -
3638  90 190 290 390 190 90 290 90 390 90
3639}
3640do_execsql_test joinD-146 {
3641  SELECT t1.*, t2.*, t3.*, t4.*
3642  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3643  LEFT JOIN t3 ON t1.c=t3.c
3644  FULL JOIN t4 ON t1.d=t4.d
3645  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
3646  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3647} {
3648  30 130 230 330 130 30 230 30 330 30
3649  60 160 260 360 160 60 260 60 360 60
3650  90 190 290 390 190 90 290 90 390 90
3651}
3652do_execsql_test joinD-147 {
3653  SELECT t1.*, t2.*, t3.*, t4.*
3654  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
3655  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3656  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
3657  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3658} {
3659   2 102 202 302 102  2   -  -   -  -
3660   4 104 204 304 104  4   -  -   -  -
3661   6 106 206 306 106  6 206  6   -  -
3662   8 108 208 308 108  8   -  -   -  -
3663  10 110 210 310 110 10   -  - 310 10
3664  12 112 212 312 112 12 212 12   -  -
3665  14 114 214 314 114 14   -  -   -  -
3666  16 116 216 316 116 16   -  -   -  -
3667  18 118 218 318 118 18 218 18   -  -
3668  20 120 220 320 120 20   -  - 320 20
3669  22 122 222 322 122 22   -  -   -  -
3670  24 124 224 324 124 24 224 24   -  -
3671  26 126 226 326 126 26   -  -   -  -
3672  28 128 228 328 128 28   -  -   -  -
3673  30 130 230 330 130 30 230 30 330 30
3674  32 132 232 332 132 32   -  -   -  -
3675  34 134 234 334 134 34   -  -   -  -
3676  36 136 236 336 136 36 236 36   -  -
3677  38 138 238 338 138 38   -  -   -  -
3678  40 140 240 340 140 40   -  - 340 40
3679  42 142 242 342 142 42 242 42   -  -
3680  44 144 244 344 144 44   -  -   -  -
3681  46 146 246 346 146 46   -  -   -  -
3682  48 148 248 348 148 48 248 48   -  -
3683  50 150 250 350 150 50   -  - 350 50
3684  52 152 252 352 152 52   -  -   -  -
3685  54 154 254 354 154 54 254 54   -  -
3686  56 156 256 356 156 56   -  -   -  -
3687  58 158 258 358 158 58   -  -   -  -
3688  60 160 260 360 160 60 260 60 360 60
3689  62 162 262 362 162 62   -  -   -  -
3690  64 164 264 364 164 64   -  -   -  -
3691  66 166 266 366 166 66 266 66   -  -
3692  68 168 268 368 168 68   -  -   -  -
3693  70 170 270 370 170 70   -  - 370 70
3694  72 172 272 372 172 72 272 72   -  -
3695  74 174 274 374 174 74   -  -   -  -
3696  76 176 276 376 176 76   -  -   -  -
3697  78 178 278 378 178 78 278 78   -  -
3698  80 180 280 380 180 80   -  - 380 80
3699  82 182 282 382 182 82   -  -   -  -
3700  84 184 284 384 184 84 284 84   -  -
3701  86 186 286 386 186 86   -  -   -  -
3702  88 188 288 388 188 88   -  -   -  -
3703  90 190 290 390 190 90 290 90 390 90
3704  92 192 292 392 192 92   -  -   -  -
3705  94 194 294 394 194 94   -  -   -  -
3706   -   -   -   -   -  -   -  - 300  0
3707   -   -   -   -   -  -   -  - 305  5
3708   -   -   -   -   -  -   -  - 315 15
3709   -   -   -   -   -  -   -  - 325 25
3710   -   -   -   -   -  -   -  - 335 35
3711   -   -   -   -   -  -   -  - 345 45
3712   -   -   -   -   -  -   -  - 355 55
3713   -   -   -   -   -  -   -  - 365 65
3714   -   -   -   -   -  -   -  - 375 75
3715   -   -   -   -   -  -   -  - 385 85
3716   -   -   -   -   -  -   -  - 395 95
3717}
3718do_execsql_test joinD-148 {
3719  SELECT t1.*, t2.*, t3.*, t4.*
3720  FROM t1 INNER JOIN t2 ON t2.x>0
3721  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3722  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
3723  WHERE t1.b IS NOT DISTINCT FROM t2.b
3724  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3725} {
3726   2 102 202 302 102  2   -  -   -  -
3727   4 104 204 304 104  4   -  -   -  -
3728   6 106 206 306 106  6 206  6   -  -
3729   8 108 208 308 108  8   -  -   -  -
3730  10 110 210 310 110 10   -  - 310 10
3731  12 112 212 312 112 12 212 12   -  -
3732  14 114 214 314 114 14   -  -   -  -
3733  16 116 216 316 116 16   -  -   -  -
3734  18 118 218 318 118 18 218 18   -  -
3735  20 120 220 320 120 20   -  - 320 20
3736  22 122 222 322 122 22   -  -   -  -
3737  24 124 224 324 124 24 224 24   -  -
3738  26 126 226 326 126 26   -  -   -  -
3739  28 128 228 328 128 28   -  -   -  -
3740  30 130 230 330 130 30 230 30 330 30
3741  32 132 232 332 132 32   -  -   -  -
3742  34 134 234 334 134 34   -  -   -  -
3743  36 136 236 336 136 36 236 36   -  -
3744  38 138 238 338 138 38   -  -   -  -
3745  40 140 240 340 140 40   -  - 340 40
3746  42 142 242 342 142 42 242 42   -  -
3747  44 144 244 344 144 44   -  -   -  -
3748  46 146 246 346 146 46   -  -   -  -
3749  48 148 248 348 148 48 248 48   -  -
3750  50 150 250 350 150 50   -  - 350 50
3751  52 152 252 352 152 52   -  -   -  -
3752  54 154 254 354 154 54 254 54   -  -
3753  56 156 256 356 156 56   -  -   -  -
3754  58 158 258 358 158 58   -  -   -  -
3755  60 160 260 360 160 60 260 60 360 60
3756  62 162 262 362 162 62   -  -   -  -
3757  64 164 264 364 164 64   -  -   -  -
3758  66 166 266 366 166 66 266 66   -  -
3759  68 168 268 368 168 68   -  -   -  -
3760  70 170 270 370 170 70   -  - 370 70
3761  72 172 272 372 172 72 272 72   -  -
3762  74 174 274 374 174 74   -  -   -  -
3763  76 176 276 376 176 76   -  -   -  -
3764  78 178 278 378 178 78 278 78   -  -
3765  80 180 280 380 180 80   -  - 380 80
3766  82 182 282 382 182 82   -  -   -  -
3767  84 184 284 384 184 84 284 84   -  -
3768  86 186 286 386 186 86   -  -   -  -
3769  88 188 288 388 188 88   -  -   -  -
3770  90 190 290 390 190 90 290 90 390 90
3771  92 192 292 392 192 92   -  -   -  -
3772  94 194 294 394 194 94   -  -   -  -
3773   -   -   -   -   -  -   -  - 300  0
3774}
3775do_execsql_test joinD-149 {
3776  SELECT t1.*, t2.*, t3.*, t4.*
3777  FROM t1 INNER JOIN t2 ON t2.x>0
3778  LEFT JOIN t3 ON t3.y>0
3779  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
3780  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
3781  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3782} {
3783   6 106 206 306 106  6 206  6   -  -
3784  12 112 212 312 112 12 212 12   -  -
3785  18 118 218 318 118 18 218 18   -  -
3786  24 124 224 324 124 24 224 24   -  -
3787  30 130 230 330 130 30 230 30 330 30
3788  36 136 236 336 136 36 236 36   -  -
3789  42 142 242 342 142 42 242 42   -  -
3790  48 148 248 348 148 48 248 48   -  -
3791  54 154 254 354 154 54 254 54   -  -
3792  60 160 260 360 160 60 260 60 360 60
3793  66 166 266 366 166 66 266 66   -  -
3794  72 172 272 372 172 72 272 72   -  -
3795  78 178 278 378 178 78 278 78   -  -
3796  84 184 284 384 184 84 284 84   -  -
3797  90 190 290 390 190 90 290 90 390 90
3798   -   -   -   -   -  -   -  - 300  0
3799}
3800do_execsql_test joinD-150 {
3801  SELECT t1.*, t2.*, t3.*, t4.*
3802  FROM t1 INNER JOIN t2 ON t2.x>0
3803  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
3804  FULL JOIN t4 ON t4.z>0
3805  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
3806  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3807} {
3808  10 110 210 310 110 10   -  - 310 10
3809  20 120 220 320 120 20   -  - 320 20
3810  30 130 230 330 130 30 230 30 330 30
3811  40 140 240 340 140 40   -  - 340 40
3812  50 150 250 350 150 50   -  - 350 50
3813  60 160 260 360 160 60 260 60 360 60
3814  70 170 270 370 170 70   -  - 370 70
3815  80 180 280 380 180 80   -  - 380 80
3816  90 190 290 390 190 90 290 90 390 90
3817}
3818do_execsql_test joinD-151 {
3819  SELECT t1.*, t2.*, t3.*, t4.*
3820  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
3821  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
3822  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3823  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3824} {
3825   2 102 202 302 102  2   -  -   -  -
3826   4 104 204 304 104  4   -  -   -  -
3827   6 106 206 306 106  6 206  6   -  -
3828   8 108 208 308 108  8   -  -   -  -
3829  10 110 210 310 110 10   -  - 310 10
3830  12 112 212 312 112 12 212 12   -  -
3831  14 114 214 314 114 14   -  -   -  -
3832  16 116 216 316 116 16   -  -   -  -
3833  18 118 218 318 118 18 218 18   -  -
3834  20 120 220 320 120 20   -  - 320 20
3835  22 122 222 322 122 22   -  -   -  -
3836  24 124 224 324 124 24 224 24   -  -
3837  26 126 226 326 126 26   -  -   -  -
3838  28 128 228 328 128 28   -  -   -  -
3839  30 130 230 330 130 30 230 30 330 30
3840  32 132 232 332 132 32   -  -   -  -
3841  34 134 234 334 134 34   -  -   -  -
3842  36 136 236 336 136 36 236 36   -  -
3843  38 138 238 338 138 38   -  -   -  -
3844  40 140 240 340 140 40   -  - 340 40
3845  42 142 242 342 142 42 242 42   -  -
3846  44 144 244 344 144 44   -  -   -  -
3847  46 146 246 346 146 46   -  -   -  -
3848  48 148 248 348 148 48 248 48   -  -
3849  50 150 250 350 150 50   -  - 350 50
3850  52 152 252 352 152 52   -  -   -  -
3851  54 154 254 354 154 54 254 54   -  -
3852  56 156 256 356 156 56   -  -   -  -
3853  58 158 258 358 158 58   -  -   -  -
3854  60 160 260 360 160 60 260 60 360 60
3855  62 162 262 362 162 62   -  -   -  -
3856  64 164 264 364 164 64   -  -   -  -
3857  66 166 266 366 166 66 266 66   -  -
3858  68 168 268 368 168 68   -  -   -  -
3859  70 170 270 370 170 70   -  - 370 70
3860  72 172 272 372 172 72 272 72   -  -
3861  74 174 274 374 174 74   -  -   -  -
3862  76 176 276 376 176 76   -  -   -  -
3863  78 178 278 378 178 78 278 78   -  -
3864  80 180 280 380 180 80   -  - 380 80
3865  82 182 282 382 182 82   -  -   -  -
3866  84 184 284 384 184 84 284 84   -  -
3867  86 186 286 386 186 86   -  -   -  -
3868  88 188 288 388 188 88   -  -   -  -
3869  90 190 290 390 190 90 290 90 390 90
3870  92 192 292 392 192 92   -  -   -  -
3871  94 194 294 394 194 94   -  -   -  -
3872   -   -   -   -   -  -   -  - 300  0
3873   -   -   -   -   -  -   -  - 305  5
3874   -   -   -   -   -  -   -  - 315 15
3875   -   -   -   -   -  -   -  - 325 25
3876   -   -   -   -   -  -   -  - 335 35
3877   -   -   -   -   -  -   -  - 345 45
3878   -   -   -   -   -  -   -  - 355 55
3879   -   -   -   -   -  -   -  - 365 65
3880   -   -   -   -   -  -   -  - 375 75
3881   -   -   -   -   -  -   -  - 385 85
3882   -   -   -   -   -  -   -  - 395 95
3883}
3884do_execsql_test joinD-152 {
3885  SELECT t1.*, t2.*, t3.*, t4.*
3886  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3887  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
3888  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
3889  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3890} {
3891   2 102 202 302 102  2   -  -   -  -
3892   4 104 204 304 104  4   -  -   -  -
3893   6 106 206 306 106  6 206  6   -  -
3894   8 108 208 308 108  8   -  -   -  -
3895  10 110 210 310 110 10   -  - 310 10
3896  12 112 212 312 112 12 212 12   -  -
3897  14 114 214 314 114 14   -  -   -  -
3898  16 116 216 316 116 16   -  -   -  -
3899  18 118 218 318 118 18 218 18   -  -
3900  20 120 220 320 120 20   -  - 320 20
3901  22 122 222 322 122 22   -  -   -  -
3902  24 124 224 324 124 24 224 24   -  -
3903  26 126 226 326 126 26   -  -   -  -
3904  28 128 228 328 128 28   -  -   -  -
3905  30 130 230 330 130 30 230 30 330 30
3906  32 132 232 332 132 32   -  -   -  -
3907  34 134 234 334 134 34   -  -   -  -
3908  36 136 236 336 136 36 236 36   -  -
3909  38 138 238 338 138 38   -  -   -  -
3910  40 140 240 340 140 40   -  - 340 40
3911  42 142 242 342 142 42 242 42   -  -
3912  44 144 244 344 144 44   -  -   -  -
3913  46 146 246 346 146 46   -  -   -  -
3914  48 148 248 348 148 48 248 48   -  -
3915  50 150 250 350 150 50   -  - 350 50
3916  52 152 252 352 152 52   -  -   -  -
3917  54 154 254 354 154 54 254 54   -  -
3918  56 156 256 356 156 56   -  -   -  -
3919  58 158 258 358 158 58   -  -   -  -
3920  60 160 260 360 160 60 260 60 360 60
3921  62 162 262 362 162 62   -  -   -  -
3922  64 164 264 364 164 64   -  -   -  -
3923  66 166 266 366 166 66 266 66   -  -
3924  68 168 268 368 168 68   -  -   -  -
3925  70 170 270 370 170 70   -  - 370 70
3926  72 172 272 372 172 72 272 72   -  -
3927  74 174 274 374 174 74   -  -   -  -
3928  76 176 276 376 176 76   -  -   -  -
3929  78 178 278 378 178 78 278 78   -  -
3930  80 180 280 380 180 80   -  - 380 80
3931  82 182 282 382 182 82   -  -   -  -
3932  84 184 284 384 184 84 284 84   -  -
3933  86 186 286 386 186 86   -  -   -  -
3934  88 188 288 388 188 88   -  -   -  -
3935  90 190 290 390 190 90 290 90 390 90
3936  92 192 292 392 192 92   -  -   -  -
3937  94 194 294 394 194 94   -  -   -  -
3938   -   -   -   -   -  -   -  - 300  0
3939   -   -   -   -   -  -   -  - 305  5
3940   -   -   -   -   -  -   -  - 315 15
3941   -   -   -   -   -  -   -  - 325 25
3942   -   -   -   -   -  -   -  - 335 35
3943   -   -   -   -   -  -   -  - 345 45
3944   -   -   -   -   -  -   -  - 355 55
3945   -   -   -   -   -  -   -  - 365 65
3946   -   -   -   -   -  -   -  - 375 75
3947   -   -   -   -   -  -   -  - 385 85
3948   -   -   -   -   -  -   -  - 395 95
3949}
3950do_execsql_test joinD-153 {
3951  SELECT t1.*, t2.*, t3.*, t4.*
3952  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
3953  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3954  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3955  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3956} {
3957  30 130 230 330 130 30 230 30 330 30
3958  60 160 260 360 160 60 260 60 360 60
3959  90 190 290 390 190 90 290 90 390 90
3960}
3961do_execsql_test joinD-154 {
3962  SELECT t1.*, t2.*, t3.*, t4.*
3963  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
3964  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3965  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3966  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3967} {
3968  30 130 230 330 130 30 230 30 330 30
3969  60 160 260 360 160 60 260 60 360 60
3970  90 190 290 390 190 90 290 90 390 90
3971}
3972do_execsql_test joinD-155 {
3973  SELECT t1.*, t2.*, t3.*, t4.*
3974  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3975  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3976  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3977  WHERE t2.x>0
3978  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3979} {
3980  30 130 230 330 130 30 230 30 330 30
3981  60 160 260 360 160 60 260 60 360 60
3982  90 190 290 390 190 90 290 90 390 90
3983}
3984do_execsql_test joinD-156 {
3985  SELECT t1.*, t2.*, t3.*, t4.*
3986  FROM t1 INNER JOIN t2 ON t1.b=t2.b
3987  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
3988  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
3989  WHERE (t2.x>0 OR t2.x IS NULL)
3990  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
3991} {
3992  30 130 230 330 130 30 230 30 330 30
3993  60 160 260 360 160 60 260 60 360 60
3994  90 190 290 390 190 90 290 90 390 90
3995}
3996do_execsql_test joinD-157 {
3997  SELECT t1.*, t2.*, t3.*, t4.*
3998  FROM t1 INNER JOIN t2 ON true
3999  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4000  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4001  WHERE t1.b=t2.b AND t2.x>0
4002  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4003} {
4004  30 130 230 330 130 30 230 30 330 30
4005  60 160 260 360 160 60 260 60 360 60
4006  90 190 290 390 190 90 290 90 390 90
4007}
4008do_execsql_test joinD-158 {
4009  SELECT t1.*, t2.*, t3.*, t4.*
4010  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4011  RIGHT JOIN t3 ON t1.c=t3.c
4012  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4013  WHERE t3.y>0
4014  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4015} {
4016  30 130 230 330 130 30 230 30 330 30
4017  60 160 260 360 160 60 260 60 360 60
4018  90 190 290 390 190 90 290 90 390 90
4019}
4020do_execsql_test joinD-159 {
4021  SELECT t1.*, t2.*, t3.*, t4.*
4022  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4023  RIGHT JOIN t3 ON t1.c=t3.c
4024  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4025  WHERE t3.y>0 OR t3.y IS NULL
4026  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4027} {
4028  30 130 230 330 130 30 230 30 330 30
4029  60 160 260 360 160 60 260 60 360 60
4030  90 190 290 390 190 90 290 90 390 90
4031}
4032do_execsql_test joinD-160 {
4033  SELECT t1.*, t2.*, t3.*, t4.*
4034  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4035  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4036  INNER JOIN t4 ON t1.d=t4.d
4037  WHERE t4.z>0
4038  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4039} {
4040  30 130 230 330 130 30 230 30 330 30
4041  60 160 260 360 160 60 260 60 360 60
4042  90 190 290 390 190 90 290 90 390 90
4043}
4044do_execsql_test joinD-161 {
4045  SELECT t1.*, t2.*, t3.*, t4.*
4046  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4047  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4048  INNER JOIN t4 ON t1.d=t4.d
4049  WHERE t4.z IS NULL OR t4.z>0
4050  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4051} {
4052  30 130 230 330 130 30 230 30 330 30
4053  60 160 260 360 160 60 260 60 360 60
4054  90 190 290 390 190 90 290 90 390 90
4055}
4056do_execsql_test joinD-162 {
4057  SELECT t1.*, t2.*, t3.*, t4.*
4058  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4059  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4060  INNER JOIN t4 ON t1.d=t4.d
4061  WHERE t2.x>0 AND t4.z>0
4062  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4063} {
4064  30 130 230 330 130 30 230 30 330 30
4065  60 160 260 360 160 60 260 60 360 60
4066  90 190 290 390 190 90 290 90 390 90
4067}
4068do_execsql_test joinD-163 {
4069  SELECT t1.*, t2.*, t3.*, t4.*
4070  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4071  RIGHT JOIN t3 ON t1.c=t3.c
4072  INNER JOIN t4 ON t1.d=t4.d
4073  WHERE t4.z>0 AND t3.y>0
4074  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4075} {
4076  30 130 230 330 130 30 230 30 330 30
4077  60 160 260 360 160 60 260 60 360 60
4078  90 190 290 390 190 90 290 90 390 90
4079}
4080do_execsql_test joinD-164 {
4081  SELECT t1.*, t2.*, t3.*, t4.*
4082  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4083  RIGHT JOIN t3 ON t1.c=t3.c
4084  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4085  WHERE t2.x>0 AND t3.y>0
4086  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4087} {
4088  30 130 230 330 130 30 230 30 330 30
4089  60 160 260 360 160 60 260 60 360 60
4090  90 190 290 390 190 90 290 90 390 90
4091}
4092do_execsql_test joinD-165 {
4093  SELECT t1.*, t2.*, t3.*, t4.*
4094  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4095  RIGHT JOIN t3 ON t1.c=t3.c
4096  INNER JOIN t4 ON t1.d=t4.d
4097  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
4098  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4099} {
4100  30 130 230 330 130 30 230 30 330 30
4101  60 160 260 360 160 60 260 60 360 60
4102  90 190 290 390 190 90 290 90 390 90
4103}
4104do_execsql_test joinD-166 {
4105  SELECT t1.*, t2.*, t3.*, t4.*
4106  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4107  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4108  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4109  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4110} {
4111  30 130 230 330 130 30 230 30 330 30
4112  60 160 260 360 160 60 260 60 360 60
4113  90 190 290 390 190 90 290 90 390 90
4114}
4115do_execsql_test joinD-167 {
4116  SELECT t1.*, t2.*, t3.*, t4.*
4117  FROM t1 INNER JOIN t2 ON t2.x>0
4118  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4119  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4120  WHERE t1.b IS NOT DISTINCT FROM t2.b
4121  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4122} {
4123  30 130 230 330 130 30 230 30 330 30
4124  60 160 260 360 160 60 260 60 360 60
4125  90 190 290 390 190 90 290 90 390 90
4126}
4127do_execsql_test joinD-168 {
4128  SELECT t1.*, t2.*, t3.*, t4.*
4129  FROM t1 INNER JOIN t2 ON t2.x>0
4130  RIGHT JOIN t3 ON t3.y>0
4131  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4132  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
4133  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4134} {
4135  30 130 230 330 130 30 230 30 330 30
4136  60 160 260 360 160 60 260 60 360 60
4137  90 190 290 390 190 90 290 90 390 90
4138}
4139do_execsql_test joinD-169 {
4140  SELECT t1.*, t2.*, t3.*, t4.*
4141  FROM t1 INNER JOIN t2 ON t2.x>0
4142  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4143  INNER JOIN t4 ON t4.z>0
4144  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
4145  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4146} {
4147  30 130 230 330 130 30 230 30 330 30
4148  60 160 260 360 160 60 260 60 360 60
4149  90 190 290 390 190 90 290 90 390 90
4150}
4151do_execsql_test joinD-170 {
4152  SELECT t1.*, t2.*, t3.*, t4.*
4153  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
4154  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4155  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4157} {
4158  30 130 230 330 130 30 230 30 330 30
4159  60 160 260 360 160 60 260 60 360 60
4160  90 190 290 390 190 90 290 90 390 90
4161}
4162do_execsql_test joinD-171 {
4163  SELECT t1.*, t2.*, t3.*, t4.*
4164  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4165  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
4166  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
4167  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4168} {
4169  30 130 230 330 130 30 230 30 330 30
4170  60 160 260 360 160 60 260 60 360 60
4171  90 190 290 390 190 90 290 90 390 90
4172}
4173do_execsql_test joinD-172 {
4174  SELECT t1.*, t2.*, t3.*, t4.*
4175  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4176  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4177  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4178  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4179} {
4180   6 106 206 306 106  6 206  6   -  -
4181  12 112 212 312 112 12 212 12   -  -
4182  18 118 218 318 118 18 218 18   -  -
4183  24 124 224 324 124 24 224 24   -  -
4184  30 130 230 330 130 30 230 30 330 30
4185  36 136 236 336 136 36 236 36   -  -
4186  42 142 242 342 142 42 242 42   -  -
4187  48 148 248 348 148 48 248 48   -  -
4188  54 154 254 354 154 54 254 54   -  -
4189  60 160 260 360 160 60 260 60 360 60
4190  66 166 266 366 166 66 266 66   -  -
4191  72 172 272 372 172 72 272 72   -  -
4192  78 178 278 378 178 78 278 78   -  -
4193  84 184 284 384 184 84 284 84   -  -
4194  90 190 290 390 190 90 290 90 390 90
4195   -   -   -   -   -  - 200  0   -  -
4196   -   -   -   -   -  - 203  3   -  -
4197   -   -   -   -   -  - 209  9   -  -
4198   -   -   -   -   -  - 215 15   -  -
4199   -   -   -   -   -  - 221 21   -  -
4200   -   -   -   -   -  - 227 27   -  -
4201   -   -   -   -   -  - 233 33   -  -
4202   -   -   -   -   -  - 239 39   -  -
4203   -   -   -   -   -  - 245 45   -  -
4204   -   -   -   -   -  - 251 51   -  -
4205   -   -   -   -   -  - 257 57   -  -
4206   -   -   -   -   -  - 263 63   -  -
4207   -   -   -   -   -  - 269 69   -  -
4208   -   -   -   -   -  - 275 75   -  -
4209   -   -   -   -   -  - 281 81   -  -
4210   -   -   -   -   -  - 287 87   -  -
4211   -   -   -   -   -  - 293 93   -  -
4212}
4213do_execsql_test joinD-173 {
4214  SELECT t1.*, t2.*, t3.*, t4.*
4215  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4216  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4217  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4218  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4219} {
4220   6 106 206 306 106  6 206  6   -  -
4221  12 112 212 312 112 12 212 12   -  -
4222  18 118 218 318 118 18 218 18   -  -
4223  24 124 224 324 124 24 224 24   -  -
4224  30 130 230 330 130 30 230 30 330 30
4225  36 136 236 336 136 36 236 36   -  -
4226  42 142 242 342 142 42 242 42   -  -
4227  48 148 248 348 148 48 248 48   -  -
4228  54 154 254 354 154 54 254 54   -  -
4229  60 160 260 360 160 60 260 60 360 60
4230  66 166 266 366 166 66 266 66   -  -
4231  72 172 272 372 172 72 272 72   -  -
4232  78 178 278 378 178 78 278 78   -  -
4233  84 184 284 384 184 84 284 84   -  -
4234  90 190 290 390 190 90 290 90 390 90
4235   -   -   -   -   -  - 200  0   -  -
4236   -   -   -   -   -  - 203  3   -  -
4237   -   -   -   -   -  - 209  9   -  -
4238   -   -   -   -   -  - 215 15   -  -
4239   -   -   -   -   -  - 221 21   -  -
4240   -   -   -   -   -  - 227 27   -  -
4241   -   -   -   -   -  - 233 33   -  -
4242   -   -   -   -   -  - 239 39   -  -
4243   -   -   -   -   -  - 245 45   -  -
4244   -   -   -   -   -  - 251 51   -  -
4245   -   -   -   -   -  - 257 57   -  -
4246   -   -   -   -   -  - 263 63   -  -
4247   -   -   -   -   -  - 269 69   -  -
4248   -   -   -   -   -  - 275 75   -  -
4249   -   -   -   -   -  - 281 81   -  -
4250   -   -   -   -   -  - 287 87   -  -
4251   -   -   -   -   -  - 293 93   -  -
4252}
4253do_execsql_test joinD-174 {
4254  SELECT t1.*, t2.*, t3.*, t4.*
4255  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4256  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4257  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4258  WHERE t2.x>0
4259  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4260} {
4261   6 106 206 306 106  6 206  6   -  -
4262  12 112 212 312 112 12 212 12   -  -
4263  18 118 218 318 118 18 218 18   -  -
4264  24 124 224 324 124 24 224 24   -  -
4265  30 130 230 330 130 30 230 30 330 30
4266  36 136 236 336 136 36 236 36   -  -
4267  42 142 242 342 142 42 242 42   -  -
4268  48 148 248 348 148 48 248 48   -  -
4269  54 154 254 354 154 54 254 54   -  -
4270  60 160 260 360 160 60 260 60 360 60
4271  66 166 266 366 166 66 266 66   -  -
4272  72 172 272 372 172 72 272 72   -  -
4273  78 178 278 378 178 78 278 78   -  -
4274  84 184 284 384 184 84 284 84   -  -
4275  90 190 290 390 190 90 290 90 390 90
4276}
4277do_execsql_test joinD-175 {
4278  SELECT t1.*, t2.*, t3.*, t4.*
4279  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4280  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4281  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4282  WHERE (t2.x>0 OR t2.x IS NULL)
4283  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4284} {
4285   6 106 206 306 106  6 206  6   -  -
4286  12 112 212 312 112 12 212 12   -  -
4287  18 118 218 318 118 18 218 18   -  -
4288  24 124 224 324 124 24 224 24   -  -
4289  30 130 230 330 130 30 230 30 330 30
4290  36 136 236 336 136 36 236 36   -  -
4291  42 142 242 342 142 42 242 42   -  -
4292  48 148 248 348 148 48 248 48   -  -
4293  54 154 254 354 154 54 254 54   -  -
4294  60 160 260 360 160 60 260 60 360 60
4295  66 166 266 366 166 66 266 66   -  -
4296  72 172 272 372 172 72 272 72   -  -
4297  78 178 278 378 178 78 278 78   -  -
4298  84 184 284 384 184 84 284 84   -  -
4299  90 190 290 390 190 90 290 90 390 90
4300   -   -   -   -   -  - 200  0   -  -
4301   -   -   -   -   -  - 203  3   -  -
4302   -   -   -   -   -  - 209  9   -  -
4303   -   -   -   -   -  - 215 15   -  -
4304   -   -   -   -   -  - 221 21   -  -
4305   -   -   -   -   -  - 227 27   -  -
4306   -   -   -   -   -  - 233 33   -  -
4307   -   -   -   -   -  - 239 39   -  -
4308   -   -   -   -   -  - 245 45   -  -
4309   -   -   -   -   -  - 251 51   -  -
4310   -   -   -   -   -  - 257 57   -  -
4311   -   -   -   -   -  - 263 63   -  -
4312   -   -   -   -   -  - 269 69   -  -
4313   -   -   -   -   -  - 275 75   -  -
4314   -   -   -   -   -  - 281 81   -  -
4315   -   -   -   -   -  - 287 87   -  -
4316   -   -   -   -   -  - 293 93   -  -
4317}
4318do_execsql_test joinD-176 {
4319  SELECT t1.*, t2.*, t3.*, t4.*
4320  FROM t1 INNER JOIN t2 ON true
4321  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4322  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4323  WHERE t1.b=t2.b AND t2.x>0
4324  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4325} {
4326   6 106 206 306 106  6 206  6   -  -
4327  12 112 212 312 112 12 212 12   -  -
4328  18 118 218 318 118 18 218 18   -  -
4329  24 124 224 324 124 24 224 24   -  -
4330  30 130 230 330 130 30 230 30 330 30
4331  36 136 236 336 136 36 236 36   -  -
4332  42 142 242 342 142 42 242 42   -  -
4333  48 148 248 348 148 48 248 48   -  -
4334  54 154 254 354 154 54 254 54   -  -
4335  60 160 260 360 160 60 260 60 360 60
4336  66 166 266 366 166 66 266 66   -  -
4337  72 172 272 372 172 72 272 72   -  -
4338  78 178 278 378 178 78 278 78   -  -
4339  84 184 284 384 184 84 284 84   -  -
4340  90 190 290 390 190 90 290 90 390 90
4341}
4342do_execsql_test joinD-177 {
4343  SELECT t1.*, t2.*, t3.*, t4.*
4344  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4345  RIGHT JOIN t3 ON t1.c=t3.c
4346  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4347  WHERE t3.y>0
4348  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4349} {
4350   6 106 206 306 106  6 206  6   -  -
4351  12 112 212 312 112 12 212 12   -  -
4352  18 118 218 318 118 18 218 18   -  -
4353  24 124 224 324 124 24 224 24   -  -
4354  30 130 230 330 130 30 230 30 330 30
4355  36 136 236 336 136 36 236 36   -  -
4356  42 142 242 342 142 42 242 42   -  -
4357  48 148 248 348 148 48 248 48   -  -
4358  54 154 254 354 154 54 254 54   -  -
4359  60 160 260 360 160 60 260 60 360 60
4360  66 166 266 366 166 66 266 66   -  -
4361  72 172 272 372 172 72 272 72   -  -
4362  78 178 278 378 178 78 278 78   -  -
4363  84 184 284 384 184 84 284 84   -  -
4364  90 190 290 390 190 90 290 90 390 90
4365   -   -   -   -   -  - 203  3   -  -
4366   -   -   -   -   -  - 209  9   -  -
4367   -   -   -   -   -  - 215 15   -  -
4368   -   -   -   -   -  - 221 21   -  -
4369   -   -   -   -   -  - 227 27   -  -
4370   -   -   -   -   -  - 233 33   -  -
4371   -   -   -   -   -  - 239 39   -  -
4372   -   -   -   -   -  - 245 45   -  -
4373   -   -   -   -   -  - 251 51   -  -
4374   -   -   -   -   -  - 257 57   -  -
4375   -   -   -   -   -  - 263 63   -  -
4376   -   -   -   -   -  - 269 69   -  -
4377   -   -   -   -   -  - 275 75   -  -
4378   -   -   -   -   -  - 281 81   -  -
4379   -   -   -   -   -  - 287 87   -  -
4380   -   -   -   -   -  - 293 93   -  -
4381}
4382do_execsql_test joinD-178 {
4383  SELECT t1.*, t2.*, t3.*, t4.*
4384  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4385  RIGHT JOIN t3 ON t1.c=t3.c
4386  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4387  WHERE t3.y>0 OR t3.y IS NULL
4388  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4389} {
4390   6 106 206 306 106  6 206  6   -  -
4391  12 112 212 312 112 12 212 12   -  -
4392  18 118 218 318 118 18 218 18   -  -
4393  24 124 224 324 124 24 224 24   -  -
4394  30 130 230 330 130 30 230 30 330 30
4395  36 136 236 336 136 36 236 36   -  -
4396  42 142 242 342 142 42 242 42   -  -
4397  48 148 248 348 148 48 248 48   -  -
4398  54 154 254 354 154 54 254 54   -  -
4399  60 160 260 360 160 60 260 60 360 60
4400  66 166 266 366 166 66 266 66   -  -
4401  72 172 272 372 172 72 272 72   -  -
4402  78 178 278 378 178 78 278 78   -  -
4403  84 184 284 384 184 84 284 84   -  -
4404  90 190 290 390 190 90 290 90 390 90
4405   -   -   -   -   -  - 203  3   -  -
4406   -   -   -   -   -  - 209  9   -  -
4407   -   -   -   -   -  - 215 15   -  -
4408   -   -   -   -   -  - 221 21   -  -
4409   -   -   -   -   -  - 227 27   -  -
4410   -   -   -   -   -  - 233 33   -  -
4411   -   -   -   -   -  - 239 39   -  -
4412   -   -   -   -   -  - 245 45   -  -
4413   -   -   -   -   -  - 251 51   -  -
4414   -   -   -   -   -  - 257 57   -  -
4415   -   -   -   -   -  - 263 63   -  -
4416   -   -   -   -   -  - 269 69   -  -
4417   -   -   -   -   -  - 275 75   -  -
4418   -   -   -   -   -  - 281 81   -  -
4419   -   -   -   -   -  - 287 87   -  -
4420   -   -   -   -   -  - 293 93   -  -
4421}
4422do_execsql_test joinD-179 {
4423  SELECT t1.*, t2.*, t3.*, t4.*
4424  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4425  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4426  LEFT JOIN t4 ON t1.d=t4.d
4427  WHERE t4.z>0
4428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4429} {
4430  30 130 230 330 130 30 230 30 330 30
4431  60 160 260 360 160 60 260 60 360 60
4432  90 190 290 390 190 90 290 90 390 90
4433}
4434do_execsql_test joinD-180 {
4435  SELECT t1.*, t2.*, t3.*, t4.*
4436  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4437  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4438  LEFT JOIN t4 ON t1.d=t4.d
4439  WHERE t4.z IS NULL OR t4.z>0
4440  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4441} {
4442   6 106 206 306 106  6 206  6   -  -
4443  12 112 212 312 112 12 212 12   -  -
4444  18 118 218 318 118 18 218 18   -  -
4445  24 124 224 324 124 24 224 24   -  -
4446  30 130 230 330 130 30 230 30 330 30
4447  36 136 236 336 136 36 236 36   -  -
4448  42 142 242 342 142 42 242 42   -  -
4449  48 148 248 348 148 48 248 48   -  -
4450  54 154 254 354 154 54 254 54   -  -
4451  60 160 260 360 160 60 260 60 360 60
4452  66 166 266 366 166 66 266 66   -  -
4453  72 172 272 372 172 72 272 72   -  -
4454  78 178 278 378 178 78 278 78   -  -
4455  84 184 284 384 184 84 284 84   -  -
4456  90 190 290 390 190 90 290 90 390 90
4457   -   -   -   -   -  - 200  0   -  -
4458   -   -   -   -   -  - 203  3   -  -
4459   -   -   -   -   -  - 209  9   -  -
4460   -   -   -   -   -  - 215 15   -  -
4461   -   -   -   -   -  - 221 21   -  -
4462   -   -   -   -   -  - 227 27   -  -
4463   -   -   -   -   -  - 233 33   -  -
4464   -   -   -   -   -  - 239 39   -  -
4465   -   -   -   -   -  - 245 45   -  -
4466   -   -   -   -   -  - 251 51   -  -
4467   -   -   -   -   -  - 257 57   -  -
4468   -   -   -   -   -  - 263 63   -  -
4469   -   -   -   -   -  - 269 69   -  -
4470   -   -   -   -   -  - 275 75   -  -
4471   -   -   -   -   -  - 281 81   -  -
4472   -   -   -   -   -  - 287 87   -  -
4473   -   -   -   -   -  - 293 93   -  -
4474}
4475do_execsql_test joinD-181 {
4476  SELECT t1.*, t2.*, t3.*, t4.*
4477  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4478  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4479  LEFT JOIN t4 ON t1.d=t4.d
4480  WHERE t2.x>0 AND t4.z>0
4481  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4482} {
4483  30 130 230 330 130 30 230 30 330 30
4484  60 160 260 360 160 60 260 60 360 60
4485  90 190 290 390 190 90 290 90 390 90
4486}
4487do_execsql_test joinD-182 {
4488  SELECT t1.*, t2.*, t3.*, t4.*
4489  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4490  RIGHT JOIN t3 ON t1.c=t3.c
4491  LEFT JOIN t4 ON t1.d=t4.d
4492  WHERE t4.z>0 AND t3.y>0
4493  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4494} {
4495  30 130 230 330 130 30 230 30 330 30
4496  60 160 260 360 160 60 260 60 360 60
4497  90 190 290 390 190 90 290 90 390 90
4498}
4499do_execsql_test joinD-183 {
4500  SELECT t1.*, t2.*, t3.*, t4.*
4501  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4502  RIGHT JOIN t3 ON t1.c=t3.c
4503  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4504  WHERE t2.x>0 AND t3.y>0
4505  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4506} {
4507   6 106 206 306 106  6 206  6   -  -
4508  12 112 212 312 112 12 212 12   -  -
4509  18 118 218 318 118 18 218 18   -  -
4510  24 124 224 324 124 24 224 24   -  -
4511  30 130 230 330 130 30 230 30 330 30
4512  36 136 236 336 136 36 236 36   -  -
4513  42 142 242 342 142 42 242 42   -  -
4514  48 148 248 348 148 48 248 48   -  -
4515  54 154 254 354 154 54 254 54   -  -
4516  60 160 260 360 160 60 260 60 360 60
4517  66 166 266 366 166 66 266 66   -  -
4518  72 172 272 372 172 72 272 72   -  -
4519  78 178 278 378 178 78 278 78   -  -
4520  84 184 284 384 184 84 284 84   -  -
4521  90 190 290 390 190 90 290 90 390 90
4522}
4523do_execsql_test joinD-184 {
4524  SELECT t1.*, t2.*, t3.*, t4.*
4525  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4526  RIGHT JOIN t3 ON t1.c=t3.c
4527  LEFT JOIN t4 ON t1.d=t4.d
4528  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
4529  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4530} {
4531  30 130 230 330 130 30 230 30 330 30
4532  60 160 260 360 160 60 260 60 360 60
4533  90 190 290 390 190 90 290 90 390 90
4534}
4535do_execsql_test joinD-185 {
4536  SELECT t1.*, t2.*, t3.*, t4.*
4537  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4538  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4539  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4540  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4541} {
4542   6 106 206 306 106  6 206  6   -  -
4543  12 112 212 312 112 12 212 12   -  -
4544  18 118 218 318 118 18 218 18   -  -
4545  24 124 224 324 124 24 224 24   -  -
4546  30 130 230 330 130 30 230 30 330 30
4547  36 136 236 336 136 36 236 36   -  -
4548  42 142 242 342 142 42 242 42   -  -
4549  48 148 248 348 148 48 248 48   -  -
4550  54 154 254 354 154 54 254 54   -  -
4551  60 160 260 360 160 60 260 60 360 60
4552  66 166 266 366 166 66 266 66   -  -
4553  72 172 272 372 172 72 272 72   -  -
4554  78 178 278 378 178 78 278 78   -  -
4555  84 184 284 384 184 84 284 84   -  -
4556  90 190 290 390 190 90 290 90 390 90
4557   -   -   -   -   -  - 200  0   -  -
4558   -   -   -   -   -  - 203  3   -  -
4559   -   -   -   -   -  - 209  9   -  -
4560   -   -   -   -   -  - 215 15   -  -
4561   -   -   -   -   -  - 221 21   -  -
4562   -   -   -   -   -  - 227 27   -  -
4563   -   -   -   -   -  - 233 33   -  -
4564   -   -   -   -   -  - 239 39   -  -
4565   -   -   -   -   -  - 245 45   -  -
4566   -   -   -   -   -  - 251 51   -  -
4567   -   -   -   -   -  - 257 57   -  -
4568   -   -   -   -   -  - 263 63   -  -
4569   -   -   -   -   -  - 269 69   -  -
4570   -   -   -   -   -  - 275 75   -  -
4571   -   -   -   -   -  - 281 81   -  -
4572   -   -   -   -   -  - 287 87   -  -
4573   -   -   -   -   -  - 293 93   -  -
4574}
4575do_execsql_test joinD-186 {
4576  SELECT t1.*, t2.*, t3.*, t4.*
4577  FROM t1 INNER JOIN t2 ON t2.x>0
4578  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4579  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4580  WHERE t1.b IS NOT DISTINCT FROM t2.b
4581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4582} {
4583   6 106 206 306 106  6 206  6   -  -
4584  12 112 212 312 112 12 212 12   -  -
4585  18 118 218 318 118 18 218 18   -  -
4586  24 124 224 324 124 24 224 24   -  -
4587  30 130 230 330 130 30 230 30 330 30
4588  36 136 236 336 136 36 236 36   -  -
4589  42 142 242 342 142 42 242 42   -  -
4590  48 148 248 348 148 48 248 48   -  -
4591  54 154 254 354 154 54 254 54   -  -
4592  60 160 260 360 160 60 260 60 360 60
4593  66 166 266 366 166 66 266 66   -  -
4594  72 172 272 372 172 72 272 72   -  -
4595  78 178 278 378 178 78 278 78   -  -
4596  84 184 284 384 184 84 284 84   -  -
4597  90 190 290 390 190 90 290 90 390 90
4598   -   -   -   -   -  - 200  0   -  -
4599}
4600do_execsql_test joinD-187 {
4601  SELECT t1.*, t2.*, t3.*, t4.*
4602  FROM t1 INNER JOIN t2 ON t2.x>0
4603  RIGHT JOIN t3 ON t3.y>0
4604  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4605  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
4606  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4607} {
4608   6 106 206 306 106  6 206  6   -  -
4609  12 112 212 312 112 12 212 12   -  -
4610  18 118 218 318 118 18 218 18   -  -
4611  24 124 224 324 124 24 224 24   -  -
4612  30 130 230 330 130 30 230 30 330 30
4613  36 136 236 336 136 36 236 36   -  -
4614  42 142 242 342 142 42 242 42   -  -
4615  48 148 248 348 148 48 248 48   -  -
4616  54 154 254 354 154 54 254 54   -  -
4617  60 160 260 360 160 60 260 60 360 60
4618  66 166 266 366 166 66 266 66   -  -
4619  72 172 272 372 172 72 272 72   -  -
4620  78 178 278 378 178 78 278 78   -  -
4621  84 184 284 384 184 84 284 84   -  -
4622  90 190 290 390 190 90 290 90 390 90
4623}
4624do_execsql_test joinD-188 {
4625  SELECT t1.*, t2.*, t3.*, t4.*
4626  FROM t1 INNER JOIN t2 ON t2.x>0
4627  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4628  LEFT JOIN t4 ON t4.z>0
4629  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
4630  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4631} {
4632  30 130 230 330 130 30 230 30 330 30
4633  60 160 260 360 160 60 260 60 360 60
4634  90 190 290 390 190 90 290 90 390 90
4635}
4636do_execsql_test joinD-189 {
4637  SELECT t1.*, t2.*, t3.*, t4.*
4638  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
4639  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4640  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4641  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4642} {
4643   6 106 206 306 106  6 206  6   -  -
4644  12 112 212 312 112 12 212 12   -  -
4645  18 118 218 318 118 18 218 18   -  -
4646  24 124 224 324 124 24 224 24   -  -
4647  30 130 230 330 130 30 230 30 330 30
4648  36 136 236 336 136 36 236 36   -  -
4649  42 142 242 342 142 42 242 42   -  -
4650  48 148 248 348 148 48 248 48   -  -
4651  54 154 254 354 154 54 254 54   -  -
4652  60 160 260 360 160 60 260 60 360 60
4653  66 166 266 366 166 66 266 66   -  -
4654  72 172 272 372 172 72 272 72   -  -
4655  78 178 278 378 178 78 278 78   -  -
4656  84 184 284 384 184 84 284 84   -  -
4657  90 190 290 390 190 90 290 90 390 90
4658   -   -   -   -   -  - 200  0   -  -
4659   -   -   -   -   -  - 203  3   -  -
4660   -   -   -   -   -  - 209  9   -  -
4661   -   -   -   -   -  - 215 15   -  -
4662   -   -   -   -   -  - 221 21   -  -
4663   -   -   -   -   -  - 227 27   -  -
4664   -   -   -   -   -  - 233 33   -  -
4665   -   -   -   -   -  - 239 39   -  -
4666   -   -   -   -   -  - 245 45   -  -
4667   -   -   -   -   -  - 251 51   -  -
4668   -   -   -   -   -  - 257 57   -  -
4669   -   -   -   -   -  - 263 63   -  -
4670   -   -   -   -   -  - 269 69   -  -
4671   -   -   -   -   -  - 275 75   -  -
4672   -   -   -   -   -  - 281 81   -  -
4673   -   -   -   -   -  - 287 87   -  -
4674   -   -   -   -   -  - 293 93   -  -
4675}
4676do_execsql_test joinD-190 {
4677  SELECT t1.*, t2.*, t3.*, t4.*
4678  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4679  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
4680  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
4681  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4682} {
4683   6 106 206 306 106  6 206  6   -  -
4684  12 112 212 312 112 12 212 12   -  -
4685  18 118 218 318 118 18 218 18   -  -
4686  24 124 224 324 124 24 224 24   -  -
4687  30 130 230 330 130 30 230 30 330 30
4688  36 136 236 336 136 36 236 36   -  -
4689  42 142 242 342 142 42 242 42   -  -
4690  48 148 248 348 148 48 248 48   -  -
4691  54 154 254 354 154 54 254 54   -  -
4692  60 160 260 360 160 60 260 60 360 60
4693  66 166 266 366 166 66 266 66   -  -
4694  72 172 272 372 172 72 272 72   -  -
4695  78 178 278 378 178 78 278 78   -  -
4696  84 184 284 384 184 84 284 84   -  -
4697  90 190 290 390 190 90 290 90 390 90
4698   -   -   -   -   -  - 200  0   -  -
4699   -   -   -   -   -  - 203  3   -  -
4700   -   -   -   -   -  - 209  9   -  -
4701   -   -   -   -   -  - 215 15   -  -
4702   -   -   -   -   -  - 221 21   -  -
4703   -   -   -   -   -  - 227 27   -  -
4704   -   -   -   -   -  - 233 33   -  -
4705   -   -   -   -   -  - 239 39   -  -
4706   -   -   -   -   -  - 245 45   -  -
4707   -   -   -   -   -  - 251 51   -  -
4708   -   -   -   -   -  - 257 57   -  -
4709   -   -   -   -   -  - 263 63   -  -
4710   -   -   -   -   -  - 269 69   -  -
4711   -   -   -   -   -  - 275 75   -  -
4712   -   -   -   -   -  - 281 81   -  -
4713   -   -   -   -   -  - 287 87   -  -
4714   -   -   -   -   -  - 293 93   -  -
4715}
4716do_execsql_test joinD-191 {
4717  SELECT t1.*, t2.*, t3.*, t4.*
4718  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4719  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4720  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4721  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4722} {
4723  30 130 230 330 130 30 230 30 330 30
4724  60 160 260 360 160 60 260 60 360 60
4725  90 190 290 390 190 90 290 90 390 90
4726   -   -   -   -   -  -   -  - 300  0
4727   -   -   -   -   -  -   -  - 305  5
4728   -   -   -   -   -  -   -  - 310 10
4729   -   -   -   -   -  -   -  - 315 15
4730   -   -   -   -   -  -   -  - 320 20
4731   -   -   -   -   -  -   -  - 325 25
4732   -   -   -   -   -  -   -  - 335 35
4733   -   -   -   -   -  -   -  - 340 40
4734   -   -   -   -   -  -   -  - 345 45
4735   -   -   -   -   -  -   -  - 350 50
4736   -   -   -   -   -  -   -  - 355 55
4737   -   -   -   -   -  -   -  - 365 65
4738   -   -   -   -   -  -   -  - 370 70
4739   -   -   -   -   -  -   -  - 375 75
4740   -   -   -   -   -  -   -  - 380 80
4741   -   -   -   -   -  -   -  - 385 85
4742   -   -   -   -   -  -   -  - 395 95
4743}
4744do_execsql_test joinD-192 {
4745  SELECT t1.*, t2.*, t3.*, t4.*
4746  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4747  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4748  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4749  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4750} {
4751  30 130 230 330 130 30 230 30 330 30
4752  60 160 260 360 160 60 260 60 360 60
4753  90 190 290 390 190 90 290 90 390 90
4754   -   -   -   -   -  -   -  - 300  0
4755   -   -   -   -   -  -   -  - 305  5
4756   -   -   -   -   -  -   -  - 310 10
4757   -   -   -   -   -  -   -  - 315 15
4758   -   -   -   -   -  -   -  - 320 20
4759   -   -   -   -   -  -   -  - 325 25
4760   -   -   -   -   -  -   -  - 335 35
4761   -   -   -   -   -  -   -  - 340 40
4762   -   -   -   -   -  -   -  - 345 45
4763   -   -   -   -   -  -   -  - 350 50
4764   -   -   -   -   -  -   -  - 355 55
4765   -   -   -   -   -  -   -  - 365 65
4766   -   -   -   -   -  -   -  - 370 70
4767   -   -   -   -   -  -   -  - 375 75
4768   -   -   -   -   -  -   -  - 380 80
4769   -   -   -   -   -  -   -  - 385 85
4770   -   -   -   -   -  -   -  - 395 95
4771}
4772do_execsql_test joinD-193 {
4773  SELECT t1.*, t2.*, t3.*, t4.*
4774  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4775  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4776  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4777  WHERE t2.x>0
4778  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4779} {
4780  30 130 230 330 130 30 230 30 330 30
4781  60 160 260 360 160 60 260 60 360 60
4782  90 190 290 390 190 90 290 90 390 90
4783}
4784do_execsql_test joinD-194 {
4785  SELECT t1.*, t2.*, t3.*, t4.*
4786  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4787  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4788  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4789  WHERE (t2.x>0 OR t2.x IS NULL)
4790  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4791} {
4792  30 130 230 330 130 30 230 30 330 30
4793  60 160 260 360 160 60 260 60 360 60
4794  90 190 290 390 190 90 290 90 390 90
4795   -   -   -   -   -  -   -  - 300  0
4796   -   -   -   -   -  -   -  - 305  5
4797   -   -   -   -   -  -   -  - 310 10
4798   -   -   -   -   -  -   -  - 315 15
4799   -   -   -   -   -  -   -  - 320 20
4800   -   -   -   -   -  -   -  - 325 25
4801   -   -   -   -   -  -   -  - 335 35
4802   -   -   -   -   -  -   -  - 340 40
4803   -   -   -   -   -  -   -  - 345 45
4804   -   -   -   -   -  -   -  - 350 50
4805   -   -   -   -   -  -   -  - 355 55
4806   -   -   -   -   -  -   -  - 365 65
4807   -   -   -   -   -  -   -  - 370 70
4808   -   -   -   -   -  -   -  - 375 75
4809   -   -   -   -   -  -   -  - 380 80
4810   -   -   -   -   -  -   -  - 385 85
4811   -   -   -   -   -  -   -  - 395 95
4812}
4813do_execsql_test joinD-195 {
4814  SELECT t1.*, t2.*, t3.*, t4.*
4815  FROM t1 INNER JOIN t2 ON true
4816  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4817  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4818  WHERE t1.b=t2.b AND t2.x>0
4819  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4820} {
4821  30 130 230 330 130 30 230 30 330 30
4822  60 160 260 360 160 60 260 60 360 60
4823  90 190 290 390 190 90 290 90 390 90
4824}
4825do_execsql_test joinD-196 {
4826  SELECT t1.*, t2.*, t3.*, t4.*
4827  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4828  RIGHT JOIN t3 ON t1.c=t3.c
4829  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4830  WHERE t3.y>0
4831  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4832} {
4833  30 130 230 330 130 30 230 30 330 30
4834  60 160 260 360 160 60 260 60 360 60
4835  90 190 290 390 190 90 290 90 390 90
4836}
4837do_execsql_test joinD-197 {
4838  SELECT t1.*, t2.*, t3.*, t4.*
4839  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4840  RIGHT JOIN t3 ON t1.c=t3.c
4841  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4842  WHERE t3.y>0 OR t3.y IS NULL
4843  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4844} {
4845  30 130 230 330 130 30 230 30 330 30
4846  60 160 260 360 160 60 260 60 360 60
4847  90 190 290 390 190 90 290 90 390 90
4848   -   -   -   -   -  -   -  - 300  0
4849   -   -   -   -   -  -   -  - 305  5
4850   -   -   -   -   -  -   -  - 310 10
4851   -   -   -   -   -  -   -  - 315 15
4852   -   -   -   -   -  -   -  - 320 20
4853   -   -   -   -   -  -   -  - 325 25
4854   -   -   -   -   -  -   -  - 335 35
4855   -   -   -   -   -  -   -  - 340 40
4856   -   -   -   -   -  -   -  - 345 45
4857   -   -   -   -   -  -   -  - 350 50
4858   -   -   -   -   -  -   -  - 355 55
4859   -   -   -   -   -  -   -  - 365 65
4860   -   -   -   -   -  -   -  - 370 70
4861   -   -   -   -   -  -   -  - 375 75
4862   -   -   -   -   -  -   -  - 380 80
4863   -   -   -   -   -  -   -  - 385 85
4864   -   -   -   -   -  -   -  - 395 95
4865}
4866do_execsql_test joinD-198 {
4867  SELECT t1.*, t2.*, t3.*, t4.*
4868  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4869  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4870  RIGHT JOIN t4 ON t1.d=t4.d
4871  WHERE t4.z>0
4872  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4873} {
4874  30 130 230 330 130 30 230 30 330 30
4875  60 160 260 360 160 60 260 60 360 60
4876  90 190 290 390 190 90 290 90 390 90
4877   -   -   -   -   -  -   -  - 305  5
4878   -   -   -   -   -  -   -  - 310 10
4879   -   -   -   -   -  -   -  - 315 15
4880   -   -   -   -   -  -   -  - 320 20
4881   -   -   -   -   -  -   -  - 325 25
4882   -   -   -   -   -  -   -  - 335 35
4883   -   -   -   -   -  -   -  - 340 40
4884   -   -   -   -   -  -   -  - 345 45
4885   -   -   -   -   -  -   -  - 350 50
4886   -   -   -   -   -  -   -  - 355 55
4887   -   -   -   -   -  -   -  - 365 65
4888   -   -   -   -   -  -   -  - 370 70
4889   -   -   -   -   -  -   -  - 375 75
4890   -   -   -   -   -  -   -  - 380 80
4891   -   -   -   -   -  -   -  - 385 85
4892   -   -   -   -   -  -   -  - 395 95
4893}
4894do_execsql_test joinD-199 {
4895  SELECT t1.*, t2.*, t3.*, t4.*
4896  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4897  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4898  RIGHT JOIN t4 ON t1.d=t4.d
4899  WHERE t4.z IS NULL OR t4.z>0
4900  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4901} {
4902  30 130 230 330 130 30 230 30 330 30
4903  60 160 260 360 160 60 260 60 360 60
4904  90 190 290 390 190 90 290 90 390 90
4905   -   -   -   -   -  -   -  - 305  5
4906   -   -   -   -   -  -   -  - 310 10
4907   -   -   -   -   -  -   -  - 315 15
4908   -   -   -   -   -  -   -  - 320 20
4909   -   -   -   -   -  -   -  - 325 25
4910   -   -   -   -   -  -   -  - 335 35
4911   -   -   -   -   -  -   -  - 340 40
4912   -   -   -   -   -  -   -  - 345 45
4913   -   -   -   -   -  -   -  - 350 50
4914   -   -   -   -   -  -   -  - 355 55
4915   -   -   -   -   -  -   -  - 365 65
4916   -   -   -   -   -  -   -  - 370 70
4917   -   -   -   -   -  -   -  - 375 75
4918   -   -   -   -   -  -   -  - 380 80
4919   -   -   -   -   -  -   -  - 385 85
4920   -   -   -   -   -  -   -  - 395 95
4921}
4922do_execsql_test joinD-200 {
4923  SELECT t1.*, t2.*, t3.*, t4.*
4924  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4925  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
4926  RIGHT JOIN t4 ON t1.d=t4.d
4927  WHERE t2.x>0 AND t4.z>0
4928  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4929} {
4930  30 130 230 330 130 30 230 30 330 30
4931  60 160 260 360 160 60 260 60 360 60
4932  90 190 290 390 190 90 290 90 390 90
4933}
4934do_execsql_test joinD-201 {
4935  SELECT t1.*, t2.*, t3.*, t4.*
4936  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
4937  RIGHT JOIN t3 ON t1.c=t3.c
4938  RIGHT JOIN t4 ON t1.d=t4.d
4939  WHERE t4.z>0 AND t3.y>0
4940  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4941} {
4942  30 130 230 330 130 30 230 30 330 30
4943  60 160 260 360 160 60 260 60 360 60
4944  90 190 290 390 190 90 290 90 390 90
4945}
4946do_execsql_test joinD-202 {
4947  SELECT t1.*, t2.*, t3.*, t4.*
4948  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4949  RIGHT JOIN t3 ON t1.c=t3.c
4950  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
4951  WHERE t2.x>0 AND t3.y>0
4952  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4953} {
4954  30 130 230 330 130 30 230 30 330 30
4955  60 160 260 360 160 60 260 60 360 60
4956  90 190 290 390 190 90 290 90 390 90
4957}
4958do_execsql_test joinD-203 {
4959  SELECT t1.*, t2.*, t3.*, t4.*
4960  FROM t1 INNER JOIN t2 ON t1.b=t2.b
4961  RIGHT JOIN t3 ON t1.c=t3.c
4962  RIGHT JOIN t4 ON t1.d=t4.d
4963  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
4964  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4965} {
4966  30 130 230 330 130 30 230 30 330 30
4967  60 160 260 360 160 60 260 60 360 60
4968  90 190 290 390 190 90 290 90 390 90
4969}
4970do_execsql_test joinD-204 {
4971  SELECT t1.*, t2.*, t3.*, t4.*
4972  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
4973  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
4974  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
4975  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
4976} {
4977  30 130 230 330 130 30 230 30 330 30
4978  60 160 260 360 160 60 260 60 360 60
4979  90 190 290 390 190 90 290 90 390 90
4980   -   -   -   -   -  -   -  - 300  0
4981   -   -   -   -   -  -   -  - 305  5
4982   -   -   -   -   -  -   -  - 310 10
4983   -   -   -   -   -  -   -  - 315 15
4984   -   -   -   -   -  -   -  - 320 20
4985   -   -   -   -   -  -   -  - 325 25
4986   -   -   -   -   -  -   -  - 335 35
4987   -   -   -   -   -  -   -  - 340 40
4988   -   -   -   -   -  -   -  - 345 45
4989   -   -   -   -   -  -   -  - 350 50
4990   -   -   -   -   -  -   -  - 355 55
4991   -   -   -   -   -  -   -  - 365 65
4992   -   -   -   -   -  -   -  - 370 70
4993   -   -   -   -   -  -   -  - 375 75
4994   -   -   -   -   -  -   -  - 380 80
4995   -   -   -   -   -  -   -  - 385 85
4996   -   -   -   -   -  -   -  - 395 95
4997}
4998do_execsql_test joinD-205 {
4999  SELECT t1.*, t2.*, t3.*, t4.*
5000  FROM t1 INNER JOIN t2 ON t2.x>0
5001  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5002  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
5003  WHERE t1.b IS NOT DISTINCT FROM t2.b
5004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5005} {
5006  30 130 230 330 130 30 230 30 330 30
5007  60 160 260 360 160 60 260 60 360 60
5008  90 190 290 390 190 90 290 90 390 90
5009   -   -   -   -   -  -   -  - 300  0
5010   -   -   -   -   -  -   -  - 305  5
5011   -   -   -   -   -  -   -  - 310 10
5012   -   -   -   -   -  -   -  - 320 20
5013   -   -   -   -   -  -   -  - 325 25
5014   -   -   -   -   -  -   -  - 335 35
5015   -   -   -   -   -  -   -  - 340 40
5016   -   -   -   -   -  -   -  - 350 50
5017   -   -   -   -   -  -   -  - 355 55
5018   -   -   -   -   -  -   -  - 365 65
5019   -   -   -   -   -  -   -  - 370 70
5020   -   -   -   -   -  -   -  - 380 80
5021   -   -   -   -   -  -   -  - 385 85
5022   -   -   -   -   -  -   -  - 395 95
5023}
5024do_execsql_test joinD-206 {
5025  SELECT t1.*, t2.*, t3.*, t4.*
5026  FROM t1 INNER JOIN t2 ON t2.x>0
5027  RIGHT JOIN t3 ON t3.y>0
5028  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
5029  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
5030  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5031} {
5032  30 130 230 330 130 30 230 30 330 30
5033  60 160 260 360 160 60 260 60 360 60
5034  90 190 290 390 190 90 290 90 390 90
5035   -   -   -   -   -  -   -  - 300  0
5036}
5037do_execsql_test joinD-207 {
5038  SELECT t1.*, t2.*, t3.*, t4.*
5039  FROM t1 INNER JOIN t2 ON t2.x>0
5040  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5041  RIGHT JOIN t4 ON t4.z>0
5042  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
5043  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5044} {
5045  30 130 230 330 130 30 230 30 330 30
5046  60 160 260 360 160 60 260 60 360 60
5047  90 190 290 390 190 90 290 90 390 90
5048}
5049do_execsql_test joinD-208 {
5050  SELECT t1.*, t2.*, t3.*, t4.*
5051  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
5052  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5053  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
5054  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5055} {
5056  30 130 230 330 130 30 230 30 330 30
5057  60 160 260 360 160 60 260 60 360 60
5058  90 190 290 390 190 90 290 90 390 90
5059   -   -   -   -   -  -   -  - 300  0
5060   -   -   -   -   -  -   -  - 305  5
5061   -   -   -   -   -  -   -  - 310 10
5062   -   -   -   -   -  -   -  - 315 15
5063   -   -   -   -   -  -   -  - 320 20
5064   -   -   -   -   -  -   -  - 325 25
5065   -   -   -   -   -  -   -  - 335 35
5066   -   -   -   -   -  -   -  - 340 40
5067   -   -   -   -   -  -   -  - 345 45
5068   -   -   -   -   -  -   -  - 350 50
5069   -   -   -   -   -  -   -  - 355 55
5070   -   -   -   -   -  -   -  - 365 65
5071   -   -   -   -   -  -   -  - 370 70
5072   -   -   -   -   -  -   -  - 375 75
5073   -   -   -   -   -  -   -  - 380 80
5074   -   -   -   -   -  -   -  - 385 85
5075   -   -   -   -   -  -   -  - 395 95
5076}
5077do_execsql_test joinD-209 {
5078  SELECT t1.*, t2.*, t3.*, t4.*
5079  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5080  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
5081  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
5082  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5083} {
5084  30 130 230 330 130 30 230 30 330 30
5085  60 160 260 360 160 60 260 60 360 60
5086  90 190 290 390 190 90 290 90 390 90
5087   -   -   -   -   -  -   -  - 300  0
5088   -   -   -   -   -  -   -  - 305  5
5089   -   -   -   -   -  -   -  - 310 10
5090   -   -   -   -   -  -   -  - 315 15
5091   -   -   -   -   -  -   -  - 320 20
5092   -   -   -   -   -  -   -  - 325 25
5093   -   -   -   -   -  -   -  - 335 35
5094   -   -   -   -   -  -   -  - 340 40
5095   -   -   -   -   -  -   -  - 345 45
5096   -   -   -   -   -  -   -  - 350 50
5097   -   -   -   -   -  -   -  - 355 55
5098   -   -   -   -   -  -   -  - 365 65
5099   -   -   -   -   -  -   -  - 370 70
5100   -   -   -   -   -  -   -  - 375 75
5101   -   -   -   -   -  -   -  - 380 80
5102   -   -   -   -   -  -   -  - 385 85
5103   -   -   -   -   -  -   -  - 395 95
5104}
5105do_execsql_test joinD-210 {
5106  SELECT t1.*, t2.*, t3.*, t4.*
5107  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5108  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5109  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5110  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5111} {
5112   6 106 206 306 106  6 206  6   -  -
5113  12 112 212 312 112 12 212 12   -  -
5114  18 118 218 318 118 18 218 18   -  -
5115  24 124 224 324 124 24 224 24   -  -
5116  30 130 230 330 130 30 230 30 330 30
5117  36 136 236 336 136 36 236 36   -  -
5118  42 142 242 342 142 42 242 42   -  -
5119  48 148 248 348 148 48 248 48   -  -
5120  54 154 254 354 154 54 254 54   -  -
5121  60 160 260 360 160 60 260 60 360 60
5122  66 166 266 366 166 66 266 66   -  -
5123  72 172 272 372 172 72 272 72   -  -
5124  78 178 278 378 178 78 278 78   -  -
5125  84 184 284 384 184 84 284 84   -  -
5126  90 190 290 390 190 90 290 90 390 90
5127   -   -   -   -   -  - 200  0   -  -
5128   -   -   -   -   -  - 203  3   -  -
5129   -   -   -   -   -  - 209  9   -  -
5130   -   -   -   -   -  - 215 15   -  -
5131   -   -   -   -   -  - 221 21   -  -
5132   -   -   -   -   -  - 227 27   -  -
5133   -   -   -   -   -  - 233 33   -  -
5134   -   -   -   -   -  - 239 39   -  -
5135   -   -   -   -   -  - 245 45   -  -
5136   -   -   -   -   -  - 251 51   -  -
5137   -   -   -   -   -  - 257 57   -  -
5138   -   -   -   -   -  - 263 63   -  -
5139   -   -   -   -   -  - 269 69   -  -
5140   -   -   -   -   -  - 275 75   -  -
5141   -   -   -   -   -  - 281 81   -  -
5142   -   -   -   -   -  - 287 87   -  -
5143   -   -   -   -   -  - 293 93   -  -
5144   -   -   -   -   -  -   -  - 300  0
5145   -   -   -   -   -  -   -  - 305  5
5146   -   -   -   -   -  -   -  - 310 10
5147   -   -   -   -   -  -   -  - 315 15
5148   -   -   -   -   -  -   -  - 320 20
5149   -   -   -   -   -  -   -  - 325 25
5150   -   -   -   -   -  -   -  - 335 35
5151   -   -   -   -   -  -   -  - 340 40
5152   -   -   -   -   -  -   -  - 345 45
5153   -   -   -   -   -  -   -  - 350 50
5154   -   -   -   -   -  -   -  - 355 55
5155   -   -   -   -   -  -   -  - 365 65
5156   -   -   -   -   -  -   -  - 370 70
5157   -   -   -   -   -  -   -  - 375 75
5158   -   -   -   -   -  -   -  - 380 80
5159   -   -   -   -   -  -   -  - 385 85
5160   -   -   -   -   -  -   -  - 395 95
5161}
5162do_execsql_test joinD-211 {
5163  SELECT t1.*, t2.*, t3.*, t4.*
5164  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
5165  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5166  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5167  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5168} {
5169   6 106 206 306 106  6 206  6   -  -
5170  12 112 212 312 112 12 212 12   -  -
5171  18 118 218 318 118 18 218 18   -  -
5172  24 124 224 324 124 24 224 24   -  -
5173  30 130 230 330 130 30 230 30 330 30
5174  36 136 236 336 136 36 236 36   -  -
5175  42 142 242 342 142 42 242 42   -  -
5176  48 148 248 348 148 48 248 48   -  -
5177  54 154 254 354 154 54 254 54   -  -
5178  60 160 260 360 160 60 260 60 360 60
5179  66 166 266 366 166 66 266 66   -  -
5180  72 172 272 372 172 72 272 72   -  -
5181  78 178 278 378 178 78 278 78   -  -
5182  84 184 284 384 184 84 284 84   -  -
5183  90 190 290 390 190 90 290 90 390 90
5184   -   -   -   -   -  - 200  0   -  -
5185   -   -   -   -   -  - 203  3   -  -
5186   -   -   -   -   -  - 209  9   -  -
5187   -   -   -   -   -  - 215 15   -  -
5188   -   -   -   -   -  - 221 21   -  -
5189   -   -   -   -   -  - 227 27   -  -
5190   -   -   -   -   -  - 233 33   -  -
5191   -   -   -   -   -  - 239 39   -  -
5192   -   -   -   -   -  - 245 45   -  -
5193   -   -   -   -   -  - 251 51   -  -
5194   -   -   -   -   -  - 257 57   -  -
5195   -   -   -   -   -  - 263 63   -  -
5196   -   -   -   -   -  - 269 69   -  -
5197   -   -   -   -   -  - 275 75   -  -
5198   -   -   -   -   -  - 281 81   -  -
5199   -   -   -   -   -  - 287 87   -  -
5200   -   -   -   -   -  - 293 93   -  -
5201   -   -   -   -   -  -   -  - 300  0
5202   -   -   -   -   -  -   -  - 305  5
5203   -   -   -   -   -  -   -  - 310 10
5204   -   -   -   -   -  -   -  - 315 15
5205   -   -   -   -   -  -   -  - 320 20
5206   -   -   -   -   -  -   -  - 325 25
5207   -   -   -   -   -  -   -  - 335 35
5208   -   -   -   -   -  -   -  - 340 40
5209   -   -   -   -   -  -   -  - 345 45
5210   -   -   -   -   -  -   -  - 350 50
5211   -   -   -   -   -  -   -  - 355 55
5212   -   -   -   -   -  -   -  - 365 65
5213   -   -   -   -   -  -   -  - 370 70
5214   -   -   -   -   -  -   -  - 375 75
5215   -   -   -   -   -  -   -  - 380 80
5216   -   -   -   -   -  -   -  - 385 85
5217   -   -   -   -   -  -   -  - 395 95
5218}
5219do_execsql_test joinD-212 {
5220  SELECT t1.*, t2.*, t3.*, t4.*
5221  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5222  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5223  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5224  WHERE t2.x>0
5225  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5226} {
5227   6 106 206 306 106  6 206  6   -  -
5228  12 112 212 312 112 12 212 12   -  -
5229  18 118 218 318 118 18 218 18   -  -
5230  24 124 224 324 124 24 224 24   -  -
5231  30 130 230 330 130 30 230 30 330 30
5232  36 136 236 336 136 36 236 36   -  -
5233  42 142 242 342 142 42 242 42   -  -
5234  48 148 248 348 148 48 248 48   -  -
5235  54 154 254 354 154 54 254 54   -  -
5236  60 160 260 360 160 60 260 60 360 60
5237  66 166 266 366 166 66 266 66   -  -
5238  72 172 272 372 172 72 272 72   -  -
5239  78 178 278 378 178 78 278 78   -  -
5240  84 184 284 384 184 84 284 84   -  -
5241  90 190 290 390 190 90 290 90 390 90
5242}
5243do_execsql_test joinD-213 {
5244  SELECT t1.*, t2.*, t3.*, t4.*
5245  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5246  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5247  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5248  WHERE (t2.x>0 OR t2.x IS NULL)
5249  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5250} {
5251   6 106 206 306 106  6 206  6   -  -
5252  12 112 212 312 112 12 212 12   -  -
5253  18 118 218 318 118 18 218 18   -  -
5254  24 124 224 324 124 24 224 24   -  -
5255  30 130 230 330 130 30 230 30 330 30
5256  36 136 236 336 136 36 236 36   -  -
5257  42 142 242 342 142 42 242 42   -  -
5258  48 148 248 348 148 48 248 48   -  -
5259  54 154 254 354 154 54 254 54   -  -
5260  60 160 260 360 160 60 260 60 360 60
5261  66 166 266 366 166 66 266 66   -  -
5262  72 172 272 372 172 72 272 72   -  -
5263  78 178 278 378 178 78 278 78   -  -
5264  84 184 284 384 184 84 284 84   -  -
5265  90 190 290 390 190 90 290 90 390 90
5266   -   -   -   -   -  - 200  0   -  -
5267   -   -   -   -   -  - 203  3   -  -
5268   -   -   -   -   -  - 209  9   -  -
5269   -   -   -   -   -  - 215 15   -  -
5270   -   -   -   -   -  - 221 21   -  -
5271   -   -   -   -   -  - 227 27   -  -
5272   -   -   -   -   -  - 233 33   -  -
5273   -   -   -   -   -  - 239 39   -  -
5274   -   -   -   -   -  - 245 45   -  -
5275   -   -   -   -   -  - 251 51   -  -
5276   -   -   -   -   -  - 257 57   -  -
5277   -   -   -   -   -  - 263 63   -  -
5278   -   -   -   -   -  - 269 69   -  -
5279   -   -   -   -   -  - 275 75   -  -
5280   -   -   -   -   -  - 281 81   -  -
5281   -   -   -   -   -  - 287 87   -  -
5282   -   -   -   -   -  - 293 93   -  -
5283   -   -   -   -   -  -   -  - 300  0
5284   -   -   -   -   -  -   -  - 305  5
5285   -   -   -   -   -  -   -  - 310 10
5286   -   -   -   -   -  -   -  - 315 15
5287   -   -   -   -   -  -   -  - 320 20
5288   -   -   -   -   -  -   -  - 325 25
5289   -   -   -   -   -  -   -  - 335 35
5290   -   -   -   -   -  -   -  - 340 40
5291   -   -   -   -   -  -   -  - 345 45
5292   -   -   -   -   -  -   -  - 350 50
5293   -   -   -   -   -  -   -  - 355 55
5294   -   -   -   -   -  -   -  - 365 65
5295   -   -   -   -   -  -   -  - 370 70
5296   -   -   -   -   -  -   -  - 375 75
5297   -   -   -   -   -  -   -  - 380 80
5298   -   -   -   -   -  -   -  - 385 85
5299   -   -   -   -   -  -   -  - 395 95
5300}
5301do_execsql_test joinD-214 {
5302  SELECT t1.*, t2.*, t3.*, t4.*
5303  FROM t1 INNER JOIN t2 ON true
5304  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5305  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5306  WHERE t1.b=t2.b AND t2.x>0
5307  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5308} {
5309   6 106 206 306 106  6 206  6   -  -
5310  12 112 212 312 112 12 212 12   -  -
5311  18 118 218 318 118 18 218 18   -  -
5312  24 124 224 324 124 24 224 24   -  -
5313  30 130 230 330 130 30 230 30 330 30
5314  36 136 236 336 136 36 236 36   -  -
5315  42 142 242 342 142 42 242 42   -  -
5316  48 148 248 348 148 48 248 48   -  -
5317  54 154 254 354 154 54 254 54   -  -
5318  60 160 260 360 160 60 260 60 360 60
5319  66 166 266 366 166 66 266 66   -  -
5320  72 172 272 372 172 72 272 72   -  -
5321  78 178 278 378 178 78 278 78   -  -
5322  84 184 284 384 184 84 284 84   -  -
5323  90 190 290 390 190 90 290 90 390 90
5324}
5325do_execsql_test joinD-215 {
5326  SELECT t1.*, t2.*, t3.*, t4.*
5327  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5328  RIGHT JOIN t3 ON t1.c=t3.c
5329  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5330  WHERE t3.y>0
5331  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5332} {
5333   6 106 206 306 106  6 206  6   -  -
5334  12 112 212 312 112 12 212 12   -  -
5335  18 118 218 318 118 18 218 18   -  -
5336  24 124 224 324 124 24 224 24   -  -
5337  30 130 230 330 130 30 230 30 330 30
5338  36 136 236 336 136 36 236 36   -  -
5339  42 142 242 342 142 42 242 42   -  -
5340  48 148 248 348 148 48 248 48   -  -
5341  54 154 254 354 154 54 254 54   -  -
5342  60 160 260 360 160 60 260 60 360 60
5343  66 166 266 366 166 66 266 66   -  -
5344  72 172 272 372 172 72 272 72   -  -
5345  78 178 278 378 178 78 278 78   -  -
5346  84 184 284 384 184 84 284 84   -  -
5347  90 190 290 390 190 90 290 90 390 90
5348   -   -   -   -   -  - 203  3   -  -
5349   -   -   -   -   -  - 209  9   -  -
5350   -   -   -   -   -  - 215 15   -  -
5351   -   -   -   -   -  - 221 21   -  -
5352   -   -   -   -   -  - 227 27   -  -
5353   -   -   -   -   -  - 233 33   -  -
5354   -   -   -   -   -  - 239 39   -  -
5355   -   -   -   -   -  - 245 45   -  -
5356   -   -   -   -   -  - 251 51   -  -
5357   -   -   -   -   -  - 257 57   -  -
5358   -   -   -   -   -  - 263 63   -  -
5359   -   -   -   -   -  - 269 69   -  -
5360   -   -   -   -   -  - 275 75   -  -
5361   -   -   -   -   -  - 281 81   -  -
5362   -   -   -   -   -  - 287 87   -  -
5363   -   -   -   -   -  - 293 93   -  -
5364}
5365do_execsql_test joinD-216 {
5366  SELECT t1.*, t2.*, t3.*, t4.*
5367  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5368  RIGHT JOIN t3 ON t1.c=t3.c
5369  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5370  WHERE t3.y>0 OR t3.y IS NULL
5371  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5372} {
5373   6 106 206 306 106  6 206  6   -  -
5374  12 112 212 312 112 12 212 12   -  -
5375  18 118 218 318 118 18 218 18   -  -
5376  24 124 224 324 124 24 224 24   -  -
5377  30 130 230 330 130 30 230 30 330 30
5378  36 136 236 336 136 36 236 36   -  -
5379  42 142 242 342 142 42 242 42   -  -
5380  48 148 248 348 148 48 248 48   -  -
5381  54 154 254 354 154 54 254 54   -  -
5382  60 160 260 360 160 60 260 60 360 60
5383  66 166 266 366 166 66 266 66   -  -
5384  72 172 272 372 172 72 272 72   -  -
5385  78 178 278 378 178 78 278 78   -  -
5386  84 184 284 384 184 84 284 84   -  -
5387  90 190 290 390 190 90 290 90 390 90
5388   -   -   -   -   -  - 203  3   -  -
5389   -   -   -   -   -  - 209  9   -  -
5390   -   -   -   -   -  - 215 15   -  -
5391   -   -   -   -   -  - 221 21   -  -
5392   -   -   -   -   -  - 227 27   -  -
5393   -   -   -   -   -  - 233 33   -  -
5394   -   -   -   -   -  - 239 39   -  -
5395   -   -   -   -   -  - 245 45   -  -
5396   -   -   -   -   -  - 251 51   -  -
5397   -   -   -   -   -  - 257 57   -  -
5398   -   -   -   -   -  - 263 63   -  -
5399   -   -   -   -   -  - 269 69   -  -
5400   -   -   -   -   -  - 275 75   -  -
5401   -   -   -   -   -  - 281 81   -  -
5402   -   -   -   -   -  - 287 87   -  -
5403   -   -   -   -   -  - 293 93   -  -
5404   -   -   -   -   -  -   -  - 300  0
5405   -   -   -   -   -  -   -  - 305  5
5406   -   -   -   -   -  -   -  - 310 10
5407   -   -   -   -   -  -   -  - 315 15
5408   -   -   -   -   -  -   -  - 320 20
5409   -   -   -   -   -  -   -  - 325 25
5410   -   -   -   -   -  -   -  - 335 35
5411   -   -   -   -   -  -   -  - 340 40
5412   -   -   -   -   -  -   -  - 345 45
5413   -   -   -   -   -  -   -  - 350 50
5414   -   -   -   -   -  -   -  - 355 55
5415   -   -   -   -   -  -   -  - 365 65
5416   -   -   -   -   -  -   -  - 370 70
5417   -   -   -   -   -  -   -  - 375 75
5418   -   -   -   -   -  -   -  - 380 80
5419   -   -   -   -   -  -   -  - 385 85
5420   -   -   -   -   -  -   -  - 395 95
5421}
5422do_execsql_test joinD-217 {
5423  SELECT t1.*, t2.*, t3.*, t4.*
5424  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5425  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5426  FULL JOIN t4 ON t1.d=t4.d
5427  WHERE t4.z>0
5428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5429} {
5430  30 130 230 330 130 30 230 30 330 30
5431  60 160 260 360 160 60 260 60 360 60
5432  90 190 290 390 190 90 290 90 390 90
5433   -   -   -   -   -  -   -  - 305  5
5434   -   -   -   -   -  -   -  - 310 10
5435   -   -   -   -   -  -   -  - 315 15
5436   -   -   -   -   -  -   -  - 320 20
5437   -   -   -   -   -  -   -  - 325 25
5438   -   -   -   -   -  -   -  - 335 35
5439   -   -   -   -   -  -   -  - 340 40
5440   -   -   -   -   -  -   -  - 345 45
5441   -   -   -   -   -  -   -  - 350 50
5442   -   -   -   -   -  -   -  - 355 55
5443   -   -   -   -   -  -   -  - 365 65
5444   -   -   -   -   -  -   -  - 370 70
5445   -   -   -   -   -  -   -  - 375 75
5446   -   -   -   -   -  -   -  - 380 80
5447   -   -   -   -   -  -   -  - 385 85
5448   -   -   -   -   -  -   -  - 395 95
5449}
5450do_execsql_test joinD-218 {
5451  SELECT t1.*, t2.*, t3.*, t4.*
5452  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5453  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5454  FULL JOIN t4 ON t1.d=t4.d
5455  WHERE t4.z IS NULL OR t4.z>0
5456  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5457} {
5458   6 106 206 306 106  6 206  6   -  -
5459  12 112 212 312 112 12 212 12   -  -
5460  18 118 218 318 118 18 218 18   -  -
5461  24 124 224 324 124 24 224 24   -  -
5462  30 130 230 330 130 30 230 30 330 30
5463  36 136 236 336 136 36 236 36   -  -
5464  42 142 242 342 142 42 242 42   -  -
5465  48 148 248 348 148 48 248 48   -  -
5466  54 154 254 354 154 54 254 54   -  -
5467  60 160 260 360 160 60 260 60 360 60
5468  66 166 266 366 166 66 266 66   -  -
5469  72 172 272 372 172 72 272 72   -  -
5470  78 178 278 378 178 78 278 78   -  -
5471  84 184 284 384 184 84 284 84   -  -
5472  90 190 290 390 190 90 290 90 390 90
5473   -   -   -   -   -  - 200  0   -  -
5474   -   -   -   -   -  - 203  3   -  -
5475   -   -   -   -   -  - 209  9   -  -
5476   -   -   -   -   -  - 215 15   -  -
5477   -   -   -   -   -  - 221 21   -  -
5478   -   -   -   -   -  - 227 27   -  -
5479   -   -   -   -   -  - 233 33   -  -
5480   -   -   -   -   -  - 239 39   -  -
5481   -   -   -   -   -  - 245 45   -  -
5482   -   -   -   -   -  - 251 51   -  -
5483   -   -   -   -   -  - 257 57   -  -
5484   -   -   -   -   -  - 263 63   -  -
5485   -   -   -   -   -  - 269 69   -  -
5486   -   -   -   -   -  - 275 75   -  -
5487   -   -   -   -   -  - 281 81   -  -
5488   -   -   -   -   -  - 287 87   -  -
5489   -   -   -   -   -  - 293 93   -  -
5490   -   -   -   -   -  -   -  - 305  5
5491   -   -   -   -   -  -   -  - 310 10
5492   -   -   -   -   -  -   -  - 315 15
5493   -   -   -   -   -  -   -  - 320 20
5494   -   -   -   -   -  -   -  - 325 25
5495   -   -   -   -   -  -   -  - 335 35
5496   -   -   -   -   -  -   -  - 340 40
5497   -   -   -   -   -  -   -  - 345 45
5498   -   -   -   -   -  -   -  - 350 50
5499   -   -   -   -   -  -   -  - 355 55
5500   -   -   -   -   -  -   -  - 365 65
5501   -   -   -   -   -  -   -  - 370 70
5502   -   -   -   -   -  -   -  - 375 75
5503   -   -   -   -   -  -   -  - 380 80
5504   -   -   -   -   -  -   -  - 385 85
5505   -   -   -   -   -  -   -  - 395 95
5506}
5507do_execsql_test joinD-219 {
5508  SELECT t1.*, t2.*, t3.*, t4.*
5509  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5510  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5511  FULL JOIN t4 ON t1.d=t4.d
5512  WHERE t2.x>0 AND t4.z>0
5513  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5514} {
5515  30 130 230 330 130 30 230 30 330 30
5516  60 160 260 360 160 60 260 60 360 60
5517  90 190 290 390 190 90 290 90 390 90
5518}
5519do_execsql_test joinD-220 {
5520  SELECT t1.*, t2.*, t3.*, t4.*
5521  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5522  RIGHT JOIN t3 ON t1.c=t3.c
5523  FULL JOIN t4 ON t1.d=t4.d
5524  WHERE t4.z>0 AND t3.y>0
5525  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5526} {
5527  30 130 230 330 130 30 230 30 330 30
5528  60 160 260 360 160 60 260 60 360 60
5529  90 190 290 390 190 90 290 90 390 90
5530}
5531do_execsql_test joinD-221 {
5532  SELECT t1.*, t2.*, t3.*, t4.*
5533  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5534  RIGHT JOIN t3 ON t1.c=t3.c
5535  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5536  WHERE t2.x>0 AND t3.y>0
5537  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5538} {
5539   6 106 206 306 106  6 206  6   -  -
5540  12 112 212 312 112 12 212 12   -  -
5541  18 118 218 318 118 18 218 18   -  -
5542  24 124 224 324 124 24 224 24   -  -
5543  30 130 230 330 130 30 230 30 330 30
5544  36 136 236 336 136 36 236 36   -  -
5545  42 142 242 342 142 42 242 42   -  -
5546  48 148 248 348 148 48 248 48   -  -
5547  54 154 254 354 154 54 254 54   -  -
5548  60 160 260 360 160 60 260 60 360 60
5549  66 166 266 366 166 66 266 66   -  -
5550  72 172 272 372 172 72 272 72   -  -
5551  78 178 278 378 178 78 278 78   -  -
5552  84 184 284 384 184 84 284 84   -  -
5553  90 190 290 390 190 90 290 90 390 90
5554}
5555do_execsql_test joinD-222 {
5556  SELECT t1.*, t2.*, t3.*, t4.*
5557  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5558  RIGHT JOIN t3 ON t1.c=t3.c
5559  FULL JOIN t4 ON t1.d=t4.d
5560  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
5561  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5562} {
5563  30 130 230 330 130 30 230 30 330 30
5564  60 160 260 360 160 60 260 60 360 60
5565  90 190 290 390 190 90 290 90 390 90
5566}
5567do_execsql_test joinD-223 {
5568  SELECT t1.*, t2.*, t3.*, t4.*
5569  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
5570  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5571  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
5572  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5573} {
5574   6 106 206 306 106  6 206  6   -  -
5575  12 112 212 312 112 12 212 12   -  -
5576  18 118 218 318 118 18 218 18   -  -
5577  24 124 224 324 124 24 224 24   -  -
5578  30 130 230 330 130 30 230 30 330 30
5579  36 136 236 336 136 36 236 36   -  -
5580  42 142 242 342 142 42 242 42   -  -
5581  48 148 248 348 148 48 248 48   -  -
5582  54 154 254 354 154 54 254 54   -  -
5583  60 160 260 360 160 60 260 60 360 60
5584  66 166 266 366 166 66 266 66   -  -
5585  72 172 272 372 172 72 272 72   -  -
5586  78 178 278 378 178 78 278 78   -  -
5587  84 184 284 384 184 84 284 84   -  -
5588  90 190 290 390 190 90 290 90 390 90
5589   -   -   -   -   -  - 200  0   -  -
5590   -   -   -   -   -  - 203  3   -  -
5591   -   -   -   -   -  - 209  9   -  -
5592   -   -   -   -   -  - 215 15   -  -
5593   -   -   -   -   -  - 221 21   -  -
5594   -   -   -   -   -  - 227 27   -  -
5595   -   -   -   -   -  - 233 33   -  -
5596   -   -   -   -   -  - 239 39   -  -
5597   -   -   -   -   -  - 245 45   -  -
5598   -   -   -   -   -  - 251 51   -  -
5599   -   -   -   -   -  - 257 57   -  -
5600   -   -   -   -   -  - 263 63   -  -
5601   -   -   -   -   -  - 269 69   -  -
5602   -   -   -   -   -  - 275 75   -  -
5603   -   -   -   -   -  - 281 81   -  -
5604   -   -   -   -   -  - 287 87   -  -
5605   -   -   -   -   -  - 293 93   -  -
5606   -   -   -   -   -  -   -  - 300  0
5607   -   -   -   -   -  -   -  - 305  5
5608   -   -   -   -   -  -   -  - 310 10
5609   -   -   -   -   -  -   -  - 315 15
5610   -   -   -   -   -  -   -  - 320 20
5611   -   -   -   -   -  -   -  - 325 25
5612   -   -   -   -   -  -   -  - 335 35
5613   -   -   -   -   -  -   -  - 340 40
5614   -   -   -   -   -  -   -  - 345 45
5615   -   -   -   -   -  -   -  - 350 50
5616   -   -   -   -   -  -   -  - 355 55
5617   -   -   -   -   -  -   -  - 365 65
5618   -   -   -   -   -  -   -  - 370 70
5619   -   -   -   -   -  -   -  - 375 75
5620   -   -   -   -   -  -   -  - 380 80
5621   -   -   -   -   -  -   -  - 385 85
5622   -   -   -   -   -  -   -  - 395 95
5623}
5624do_execsql_test joinD-224 {
5625  SELECT t1.*, t2.*, t3.*, t4.*
5626  FROM t1 INNER JOIN t2 ON t2.x>0
5627  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5628  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
5629  WHERE t1.b IS NOT DISTINCT FROM t2.b
5630  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5631} {
5632   6 106 206 306 106  6 206  6   -  -
5633  12 112 212 312 112 12 212 12   -  -
5634  18 118 218 318 118 18 218 18   -  -
5635  24 124 224 324 124 24 224 24   -  -
5636  30 130 230 330 130 30 230 30 330 30
5637  36 136 236 336 136 36 236 36   -  -
5638  42 142 242 342 142 42 242 42   -  -
5639  48 148 248 348 148 48 248 48   -  -
5640  54 154 254 354 154 54 254 54   -  -
5641  60 160 260 360 160 60 260 60 360 60
5642  66 166 266 366 166 66 266 66   -  -
5643  72 172 272 372 172 72 272 72   -  -
5644  78 178 278 378 178 78 278 78   -  -
5645  84 184 284 384 184 84 284 84   -  -
5646  90 190 290 390 190 90 290 90 390 90
5647   -   -   -   -   -  - 200  0   -  -
5648   -   -   -   -   -  -   -  - 300  0
5649   -   -   -   -   -  -   -  - 305  5
5650   -   -   -   -   -  -   -  - 310 10
5651   -   -   -   -   -  -   -  - 320 20
5652   -   -   -   -   -  -   -  - 325 25
5653   -   -   -   -   -  -   -  - 335 35
5654   -   -   -   -   -  -   -  - 340 40
5655   -   -   -   -   -  -   -  - 350 50
5656   -   -   -   -   -  -   -  - 355 55
5657   -   -   -   -   -  -   -  - 365 65
5658   -   -   -   -   -  -   -  - 370 70
5659   -   -   -   -   -  -   -  - 380 80
5660   -   -   -   -   -  -   -  - 385 85
5661   -   -   -   -   -  -   -  - 395 95
5662}
5663do_execsql_test joinD-225 {
5664  SELECT t1.*, t2.*, t3.*, t4.*
5665  FROM t1 INNER JOIN t2 ON t2.x>0
5666  RIGHT JOIN t3 ON t3.y>0
5667  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
5668  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
5669  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5670} {
5671   6 106 206 306 106  6 206  6   -  -
5672  12 112 212 312 112 12 212 12   -  -
5673  18 118 218 318 118 18 218 18   -  -
5674  24 124 224 324 124 24 224 24   -  -
5675  30 130 230 330 130 30 230 30 330 30
5676  36 136 236 336 136 36 236 36   -  -
5677  42 142 242 342 142 42 242 42   -  -
5678  48 148 248 348 148 48 248 48   -  -
5679  54 154 254 354 154 54 254 54   -  -
5680  60 160 260 360 160 60 260 60 360 60
5681  66 166 266 366 166 66 266 66   -  -
5682  72 172 272 372 172 72 272 72   -  -
5683  78 178 278 378 178 78 278 78   -  -
5684  84 184 284 384 184 84 284 84   -  -
5685  90 190 290 390 190 90 290 90 390 90
5686   -   -   -   -   -  -   -  - 300  0
5687}
5688do_execsql_test joinD-226 {
5689  SELECT t1.*, t2.*, t3.*, t4.*
5690  FROM t1 INNER JOIN t2 ON t2.x>0
5691  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
5692  FULL JOIN t4 ON t4.z>0
5693  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
5694  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5695} {
5696  30 130 230 330 130 30 230 30 330 30
5697  60 160 260 360 160 60 260 60 360 60
5698  90 190 290 390 190 90 290 90 390 90
5699}
5700do_execsql_test joinD-227 {
5701  SELECT t1.*, t2.*, t3.*, t4.*
5702  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
5703  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
5704  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5705  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5706} {
5707   6 106 206 306 106  6 206  6   -  -
5708  12 112 212 312 112 12 212 12   -  -
5709  18 118 218 318 118 18 218 18   -  -
5710  24 124 224 324 124 24 224 24   -  -
5711  30 130 230 330 130 30 230 30 330 30
5712  36 136 236 336 136 36 236 36   -  -
5713  42 142 242 342 142 42 242 42   -  -
5714  48 148 248 348 148 48 248 48   -  -
5715  54 154 254 354 154 54 254 54   -  -
5716  60 160 260 360 160 60 260 60 360 60
5717  66 166 266 366 166 66 266 66   -  -
5718  72 172 272 372 172 72 272 72   -  -
5719  78 178 278 378 178 78 278 78   -  -
5720  84 184 284 384 184 84 284 84   -  -
5721  90 190 290 390 190 90 290 90 390 90
5722   -   -   -   -   -  - 200  0   -  -
5723   -   -   -   -   -  - 203  3   -  -
5724   -   -   -   -   -  - 209  9   -  -
5725   -   -   -   -   -  - 215 15   -  -
5726   -   -   -   -   -  - 221 21   -  -
5727   -   -   -   -   -  - 227 27   -  -
5728   -   -   -   -   -  - 233 33   -  -
5729   -   -   -   -   -  - 239 39   -  -
5730   -   -   -   -   -  - 245 45   -  -
5731   -   -   -   -   -  - 251 51   -  -
5732   -   -   -   -   -  - 257 57   -  -
5733   -   -   -   -   -  - 263 63   -  -
5734   -   -   -   -   -  - 269 69   -  -
5735   -   -   -   -   -  - 275 75   -  -
5736   -   -   -   -   -  - 281 81   -  -
5737   -   -   -   -   -  - 287 87   -  -
5738   -   -   -   -   -  - 293 93   -  -
5739   -   -   -   -   -  -   -  - 300  0
5740   -   -   -   -   -  -   -  - 305  5
5741   -   -   -   -   -  -   -  - 310 10
5742   -   -   -   -   -  -   -  - 315 15
5743   -   -   -   -   -  -   -  - 320 20
5744   -   -   -   -   -  -   -  - 325 25
5745   -   -   -   -   -  -   -  - 335 35
5746   -   -   -   -   -  -   -  - 340 40
5747   -   -   -   -   -  -   -  - 345 45
5748   -   -   -   -   -  -   -  - 350 50
5749   -   -   -   -   -  -   -  - 355 55
5750   -   -   -   -   -  -   -  - 365 65
5751   -   -   -   -   -  -   -  - 370 70
5752   -   -   -   -   -  -   -  - 375 75
5753   -   -   -   -   -  -   -  - 380 80
5754   -   -   -   -   -  -   -  - 385 85
5755   -   -   -   -   -  -   -  - 395 95
5756}
5757do_execsql_test joinD-228 {
5758  SELECT t1.*, t2.*, t3.*, t4.*
5759  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5760  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
5761  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
5762  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5763} {
5764   6 106 206 306 106  6 206  6   -  -
5765  12 112 212 312 112 12 212 12   -  -
5766  18 118 218 318 118 18 218 18   -  -
5767  24 124 224 324 124 24 224 24   -  -
5768  30 130 230 330 130 30 230 30 330 30
5769  36 136 236 336 136 36 236 36   -  -
5770  42 142 242 342 142 42 242 42   -  -
5771  48 148 248 348 148 48 248 48   -  -
5772  54 154 254 354 154 54 254 54   -  -
5773  60 160 260 360 160 60 260 60 360 60
5774  66 166 266 366 166 66 266 66   -  -
5775  72 172 272 372 172 72 272 72   -  -
5776  78 178 278 378 178 78 278 78   -  -
5777  84 184 284 384 184 84 284 84   -  -
5778  90 190 290 390 190 90 290 90 390 90
5779   -   -   -   -   -  - 200  0   -  -
5780   -   -   -   -   -  - 203  3   -  -
5781   -   -   -   -   -  - 209  9   -  -
5782   -   -   -   -   -  - 215 15   -  -
5783   -   -   -   -   -  - 221 21   -  -
5784   -   -   -   -   -  - 227 27   -  -
5785   -   -   -   -   -  - 233 33   -  -
5786   -   -   -   -   -  - 239 39   -  -
5787   -   -   -   -   -  - 245 45   -  -
5788   -   -   -   -   -  - 251 51   -  -
5789   -   -   -   -   -  - 257 57   -  -
5790   -   -   -   -   -  - 263 63   -  -
5791   -   -   -   -   -  - 269 69   -  -
5792   -   -   -   -   -  - 275 75   -  -
5793   -   -   -   -   -  - 281 81   -  -
5794   -   -   -   -   -  - 287 87   -  -
5795   -   -   -   -   -  - 293 93   -  -
5796   -   -   -   -   -  -   -  - 300  0
5797   -   -   -   -   -  -   -  - 305  5
5798   -   -   -   -   -  -   -  - 310 10
5799   -   -   -   -   -  -   -  - 315 15
5800   -   -   -   -   -  -   -  - 320 20
5801   -   -   -   -   -  -   -  - 325 25
5802   -   -   -   -   -  -   -  - 335 35
5803   -   -   -   -   -  -   -  - 340 40
5804   -   -   -   -   -  -   -  - 345 45
5805   -   -   -   -   -  -   -  - 350 50
5806   -   -   -   -   -  -   -  - 355 55
5807   -   -   -   -   -  -   -  - 365 65
5808   -   -   -   -   -  -   -  - 370 70
5809   -   -   -   -   -  -   -  - 375 75
5810   -   -   -   -   -  -   -  - 380 80
5811   -   -   -   -   -  -   -  - 385 85
5812   -   -   -   -   -  -   -  - 395 95
5813}
5814do_execsql_test joinD-229 {
5815  SELECT t1.*, t2.*, t3.*, t4.*
5816  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5817  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5818  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5819  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5820} {
5821  10 110 210 310 110 10   -  - 310 10
5822  20 120 220 320 120 20   -  - 320 20
5823  30 130 230 330 130 30 230 30 330 30
5824  40 140 240 340 140 40   -  - 340 40
5825  50 150 250 350 150 50   -  - 350 50
5826  60 160 260 360 160 60 260 60 360 60
5827  70 170 270 370 170 70   -  - 370 70
5828  80 180 280 380 180 80   -  - 380 80
5829  90 190 290 390 190 90 290 90 390 90
5830}
5831do_execsql_test joinD-230 {
5832  SELECT t1.*, t2.*, t3.*, t4.*
5833  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
5834  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5835  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5836  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5837} {
5838  10 110 210 310 110 10   -  - 310 10
5839  20 120 220 320 120 20   -  - 320 20
5840  30 130 230 330 130 30 230 30 330 30
5841  40 140 240 340 140 40   -  - 340 40
5842  50 150 250 350 150 50   -  - 350 50
5843  60 160 260 360 160 60 260 60 360 60
5844  70 170 270 370 170 70   -  - 370 70
5845  80 180 280 380 180 80   -  - 380 80
5846  90 190 290 390 190 90 290 90 390 90
5847}
5848do_execsql_test joinD-231 {
5849  SELECT t1.*, t2.*, t3.*, t4.*
5850  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5851  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5852  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5853  WHERE t2.x>0
5854  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5855} {
5856  10 110 210 310 110 10   -  - 310 10
5857  20 120 220 320 120 20   -  - 320 20
5858  30 130 230 330 130 30 230 30 330 30
5859  40 140 240 340 140 40   -  - 340 40
5860  50 150 250 350 150 50   -  - 350 50
5861  60 160 260 360 160 60 260 60 360 60
5862  70 170 270 370 170 70   -  - 370 70
5863  80 180 280 380 180 80   -  - 380 80
5864  90 190 290 390 190 90 290 90 390 90
5865}
5866do_execsql_test joinD-232 {
5867  SELECT t1.*, t2.*, t3.*, t4.*
5868  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5869  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5870  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5871  WHERE (t2.x>0 OR t2.x IS NULL)
5872  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5873} {
5874  10 110 210 310 110 10   -  - 310 10
5875  20 120 220 320 120 20   -  - 320 20
5876  30 130 230 330 130 30 230 30 330 30
5877  40 140 240 340 140 40   -  - 340 40
5878  50 150 250 350 150 50   -  - 350 50
5879  60 160 260 360 160 60 260 60 360 60
5880  70 170 270 370 170 70   -  - 370 70
5881  80 180 280 380 180 80   -  - 380 80
5882  90 190 290 390 190 90 290 90 390 90
5883}
5884do_execsql_test joinD-233 {
5885  SELECT t1.*, t2.*, t3.*, t4.*
5886  FROM t1 INNER JOIN t2 ON true
5887  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5888  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5889  WHERE t1.b=t2.b AND t2.x>0
5890  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5891} {
5892  10 110 210 310 110 10   -  - 310 10
5893  20 120 220 320 120 20   -  - 320 20
5894  30 130 230 330 130 30 230 30 330 30
5895  40 140 240 340 140 40   -  - 340 40
5896  50 150 250 350 150 50   -  - 350 50
5897  60 160 260 360 160 60 260 60 360 60
5898  70 170 270 370 170 70   -  - 370 70
5899  80 180 280 380 180 80   -  - 380 80
5900  90 190 290 390 190 90 290 90 390 90
5901}
5902do_execsql_test joinD-234 {
5903  SELECT t1.*, t2.*, t3.*, t4.*
5904  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5905  FULL JOIN t3 ON t1.c=t3.c
5906  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5907  WHERE t3.y>0
5908  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5909} {
5910  30 130 230 330 130 30 230 30 330 30
5911  60 160 260 360 160 60 260 60 360 60
5912  90 190 290 390 190 90 290 90 390 90
5913}
5914do_execsql_test joinD-235 {
5915  SELECT t1.*, t2.*, t3.*, t4.*
5916  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5917  FULL JOIN t3 ON t1.c=t3.c
5918  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
5919  WHERE t3.y>0 OR t3.y IS NULL
5920  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5921} {
5922  10 110 210 310 110 10   -  - 310 10
5923  20 120 220 320 120 20   -  - 320 20
5924  30 130 230 330 130 30 230 30 330 30
5925  40 140 240 340 140 40   -  - 340 40
5926  50 150 250 350 150 50   -  - 350 50
5927  60 160 260 360 160 60 260 60 360 60
5928  70 170 270 370 170 70   -  - 370 70
5929  80 180 280 380 180 80   -  - 380 80
5930  90 190 290 390 190 90 290 90 390 90
5931}
5932do_execsql_test joinD-236 {
5933  SELECT t1.*, t2.*, t3.*, t4.*
5934  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5935  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5936  INNER JOIN t4 ON t1.d=t4.d
5937  WHERE t4.z>0
5938  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5939} {
5940  10 110 210 310 110 10   -  - 310 10
5941  20 120 220 320 120 20   -  - 320 20
5942  30 130 230 330 130 30 230 30 330 30
5943  40 140 240 340 140 40   -  - 340 40
5944  50 150 250 350 150 50   -  - 350 50
5945  60 160 260 360 160 60 260 60 360 60
5946  70 170 270 370 170 70   -  - 370 70
5947  80 180 280 380 180 80   -  - 380 80
5948  90 190 290 390 190 90 290 90 390 90
5949}
5950do_execsql_test joinD-237 {
5951  SELECT t1.*, t2.*, t3.*, t4.*
5952  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5953  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5954  INNER JOIN t4 ON t1.d=t4.d
5955  WHERE t4.z IS NULL OR t4.z>0
5956  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5957} {
5958  10 110 210 310 110 10   -  - 310 10
5959  20 120 220 320 120 20   -  - 320 20
5960  30 130 230 330 130 30 230 30 330 30
5961  40 140 240 340 140 40   -  - 340 40
5962  50 150 250 350 150 50   -  - 350 50
5963  60 160 260 360 160 60 260 60 360 60
5964  70 170 270 370 170 70   -  - 370 70
5965  80 180 280 380 180 80   -  - 380 80
5966  90 190 290 390 190 90 290 90 390 90
5967}
5968do_execsql_test joinD-238 {
5969  SELECT t1.*, t2.*, t3.*, t4.*
5970  FROM t1 INNER JOIN t2 ON t1.b=t2.b
5971  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
5972  INNER JOIN t4 ON t1.d=t4.d
5973  WHERE t2.x>0 AND t4.z>0
5974  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5975} {
5976  10 110 210 310 110 10   -  - 310 10
5977  20 120 220 320 120 20   -  - 320 20
5978  30 130 230 330 130 30 230 30 330 30
5979  40 140 240 340 140 40   -  - 340 40
5980  50 150 250 350 150 50   -  - 350 50
5981  60 160 260 360 160 60 260 60 360 60
5982  70 170 270 370 170 70   -  - 370 70
5983  80 180 280 380 180 80   -  - 380 80
5984  90 190 290 390 190 90 290 90 390 90
5985}
5986do_execsql_test joinD-239 {
5987  SELECT t1.*, t2.*, t3.*, t4.*
5988  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
5989  FULL JOIN t3 ON t1.c=t3.c
5990  INNER JOIN t4 ON t1.d=t4.d
5991  WHERE t4.z>0 AND t3.y>0
5992  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
5993} {
5994  30 130 230 330 130 30 230 30 330 30
5995  60 160 260 360 160 60 260 60 360 60
5996  90 190 290 390 190 90 290 90 390 90
5997}
5998do_execsql_test joinD-240 {
5999  SELECT t1.*, t2.*, t3.*, t4.*
6000  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6001  FULL JOIN t3 ON t1.c=t3.c
6002  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
6003  WHERE t2.x>0 AND t3.y>0
6004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6005} {
6006  30 130 230 330 130 30 230 30 330 30
6007  60 160 260 360 160 60 260 60 360 60
6008  90 190 290 390 190 90 290 90 390 90
6009}
6010do_execsql_test joinD-241 {
6011  SELECT t1.*, t2.*, t3.*, t4.*
6012  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6013  FULL JOIN t3 ON t1.c=t3.c
6014  INNER JOIN t4 ON t1.d=t4.d
6015  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
6016  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6017} {
6018  30 130 230 330 130 30 230 30 330 30
6019  60 160 260 360 160 60 260 60 360 60
6020  90 190 290 390 190 90 290 90 390 90
6021}
6022do_execsql_test joinD-242 {
6023  SELECT t1.*, t2.*, t3.*, t4.*
6024  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6025  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6026  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6027  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6028} {
6029  10 110 210 310 110 10   -  - 310 10
6030  20 120 220 320 120 20   -  - 320 20
6031  30 130 230 330 130 30 230 30 330 30
6032  40 140 240 340 140 40   -  - 340 40
6033  50 150 250 350 150 50   -  - 350 50
6034  60 160 260 360 160 60 260 60 360 60
6035  70 170 270 370 170 70   -  - 370 70
6036  80 180 280 380 180 80   -  - 380 80
6037  90 190 290 390 190 90 290 90 390 90
6038}
6039do_execsql_test joinD-243 {
6040  SELECT t1.*, t2.*, t3.*, t4.*
6041  FROM t1 INNER JOIN t2 ON t2.x>0
6042  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6043  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6044  WHERE t1.b IS NOT DISTINCT FROM t2.b
6045  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6046} {
6047  10 110 210 310 110 10   -  - 310 10
6048  20 120 220 320 120 20   -  - 320 20
6049  30 130 230 330 130 30 230 30 330 30
6050  40 140 240 340 140 40   -  - 340 40
6051  50 150 250 350 150 50   -  - 350 50
6052  60 160 260 360 160 60 260 60 360 60
6053  70 170 270 370 170 70   -  - 370 70
6054  80 180 280 380 180 80   -  - 380 80
6055  90 190 290 390 190 90 290 90 390 90
6056}
6057do_execsql_test joinD-244 {
6058  SELECT t1.*, t2.*, t3.*, t4.*
6059  FROM t1 INNER JOIN t2 ON t2.x>0
6060  FULL JOIN t3 ON t3.y>0
6061  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6062  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
6063  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6064} {
6065  30 130 230 330 130 30 230 30 330 30
6066  60 160 260 360 160 60 260 60 360 60
6067  90 190 290 390 190 90 290 90 390 90
6068}
6069do_execsql_test joinD-245 {
6070  SELECT t1.*, t2.*, t3.*, t4.*
6071  FROM t1 INNER JOIN t2 ON t2.x>0
6072  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6073  INNER JOIN t4 ON t4.z>0
6074  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
6075  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6076} {
6077  10 110 210 310 110 10   -  - 310 10
6078  20 120 220 320 120 20   -  - 320 20
6079  30 130 230 330 130 30 230 30 330 30
6080  40 140 240 340 140 40   -  - 340 40
6081  50 150 250 350 150 50   -  - 350 50
6082  60 160 260 360 160 60 260 60 360 60
6083  70 170 270 370 170 70   -  - 370 70
6084  80 180 280 380 180 80   -  - 380 80
6085  90 190 290 390 190 90 290 90 390 90
6086}
6087do_execsql_test joinD-246 {
6088  SELECT t1.*, t2.*, t3.*, t4.*
6089  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
6090  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6091  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
6092  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6093} {
6094  10 110 210 310 110 10   -  - 310 10
6095  20 120 220 320 120 20   -  - 320 20
6096  30 130 230 330 130 30 230 30 330 30
6097  40 140 240 340 140 40   -  - 340 40
6098  50 150 250 350 150 50   -  - 350 50
6099  60 160 260 360 160 60 260 60 360 60
6100  70 170 270 370 170 70   -  - 370 70
6101  80 180 280 380 180 80   -  - 380 80
6102  90 190 290 390 190 90 290 90 390 90
6103}
6104do_execsql_test joinD-247 {
6105  SELECT t1.*, t2.*, t3.*, t4.*
6106  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6107  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6108  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6109  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6110} {
6111   2 102 202 302 102  2   -  -   -  -
6112   4 104 204 304 104  4   -  -   -  -
6113   6 106 206 306 106  6 206  6   -  -
6114   8 108 208 308 108  8   -  -   -  -
6115  10 110 210 310 110 10   -  - 310 10
6116  12 112 212 312 112 12 212 12   -  -
6117  14 114 214 314 114 14   -  -   -  -
6118  16 116 216 316 116 16   -  -   -  -
6119  18 118 218 318 118 18 218 18   -  -
6120  20 120 220 320 120 20   -  - 320 20
6121  22 122 222 322 122 22   -  -   -  -
6122  24 124 224 324 124 24 224 24   -  -
6123  26 126 226 326 126 26   -  -   -  -
6124  28 128 228 328 128 28   -  -   -  -
6125  30 130 230 330 130 30 230 30 330 30
6126  32 132 232 332 132 32   -  -   -  -
6127  34 134 234 334 134 34   -  -   -  -
6128  36 136 236 336 136 36 236 36   -  -
6129  38 138 238 338 138 38   -  -   -  -
6130  40 140 240 340 140 40   -  - 340 40
6131  42 142 242 342 142 42 242 42   -  -
6132  44 144 244 344 144 44   -  -   -  -
6133  46 146 246 346 146 46   -  -   -  -
6134  48 148 248 348 148 48 248 48   -  -
6135  50 150 250 350 150 50   -  - 350 50
6136  52 152 252 352 152 52   -  -   -  -
6137  54 154 254 354 154 54 254 54   -  -
6138  56 156 256 356 156 56   -  -   -  -
6139  58 158 258 358 158 58   -  -   -  -
6140  60 160 260 360 160 60 260 60 360 60
6141  62 162 262 362 162 62   -  -   -  -
6142  64 164 264 364 164 64   -  -   -  -
6143  66 166 266 366 166 66 266 66   -  -
6144  68 168 268 368 168 68   -  -   -  -
6145  70 170 270 370 170 70   -  - 370 70
6146  72 172 272 372 172 72 272 72   -  -
6147  74 174 274 374 174 74   -  -   -  -
6148  76 176 276 376 176 76   -  -   -  -
6149  78 178 278 378 178 78 278 78   -  -
6150  80 180 280 380 180 80   -  - 380 80
6151  82 182 282 382 182 82   -  -   -  -
6152  84 184 284 384 184 84 284 84   -  -
6153  86 186 286 386 186 86   -  -   -  -
6154  88 188 288 388 188 88   -  -   -  -
6155  90 190 290 390 190 90 290 90 390 90
6156  92 192 292 392 192 92   -  -   -  -
6157  94 194 294 394 194 94   -  -   -  -
6158   -   -   -   -   -  - 200  0   -  -
6159   -   -   -   -   -  - 203  3   -  -
6160   -   -   -   -   -  - 209  9   -  -
6161   -   -   -   -   -  - 215 15   -  -
6162   -   -   -   -   -  - 221 21   -  -
6163   -   -   -   -   -  - 227 27   -  -
6164   -   -   -   -   -  - 233 33   -  -
6165   -   -   -   -   -  - 239 39   -  -
6166   -   -   -   -   -  - 245 45   -  -
6167   -   -   -   -   -  - 251 51   -  -
6168   -   -   -   -   -  - 257 57   -  -
6169   -   -   -   -   -  - 263 63   -  -
6170   -   -   -   -   -  - 269 69   -  -
6171   -   -   -   -   -  - 275 75   -  -
6172   -   -   -   -   -  - 281 81   -  -
6173   -   -   -   -   -  - 287 87   -  -
6174   -   -   -   -   -  - 293 93   -  -
6175}
6176do_execsql_test joinD-248 {
6177  SELECT t1.*, t2.*, t3.*, t4.*
6178  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6179  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6180  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6181  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6182} {
6183   2 102 202 302 102  2   -  -   -  -
6184   4 104 204 304 104  4   -  -   -  -
6185   6 106 206 306 106  6 206  6   -  -
6186   8 108 208 308 108  8   -  -   -  -
6187  10 110 210 310 110 10   -  - 310 10
6188  12 112 212 312 112 12 212 12   -  -
6189  14 114 214 314 114 14   -  -   -  -
6190  16 116 216 316 116 16   -  -   -  -
6191  18 118 218 318 118 18 218 18   -  -
6192  20 120 220 320 120 20   -  - 320 20
6193  22 122 222 322 122 22   -  -   -  -
6194  24 124 224 324 124 24 224 24   -  -
6195  26 126 226 326 126 26   -  -   -  -
6196  28 128 228 328 128 28   -  -   -  -
6197  30 130 230 330 130 30 230 30 330 30
6198  32 132 232 332 132 32   -  -   -  -
6199  34 134 234 334 134 34   -  -   -  -
6200  36 136 236 336 136 36 236 36   -  -
6201  38 138 238 338 138 38   -  -   -  -
6202  40 140 240 340 140 40   -  - 340 40
6203  42 142 242 342 142 42 242 42   -  -
6204  44 144 244 344 144 44   -  -   -  -
6205  46 146 246 346 146 46   -  -   -  -
6206  48 148 248 348 148 48 248 48   -  -
6207  50 150 250 350 150 50   -  - 350 50
6208  52 152 252 352 152 52   -  -   -  -
6209  54 154 254 354 154 54 254 54   -  -
6210  56 156 256 356 156 56   -  -   -  -
6211  58 158 258 358 158 58   -  -   -  -
6212  60 160 260 360 160 60 260 60 360 60
6213  62 162 262 362 162 62   -  -   -  -
6214  64 164 264 364 164 64   -  -   -  -
6215  66 166 266 366 166 66 266 66   -  -
6216  68 168 268 368 168 68   -  -   -  -
6217  70 170 270 370 170 70   -  - 370 70
6218  72 172 272 372 172 72 272 72   -  -
6219  74 174 274 374 174 74   -  -   -  -
6220  76 176 276 376 176 76   -  -   -  -
6221  78 178 278 378 178 78 278 78   -  -
6222  80 180 280 380 180 80   -  - 380 80
6223  82 182 282 382 182 82   -  -   -  -
6224  84 184 284 384 184 84 284 84   -  -
6225  86 186 286 386 186 86   -  -   -  -
6226  88 188 288 388 188 88   -  -   -  -
6227  90 190 290 390 190 90 290 90 390 90
6228  92 192 292 392 192 92   -  -   -  -
6229  94 194 294 394 194 94   -  -   -  -
6230   -   -   -   -   -  - 200  0   -  -
6231   -   -   -   -   -  - 203  3   -  -
6232   -   -   -   -   -  - 209  9   -  -
6233   -   -   -   -   -  - 215 15   -  -
6234   -   -   -   -   -  - 221 21   -  -
6235   -   -   -   -   -  - 227 27   -  -
6236   -   -   -   -   -  - 233 33   -  -
6237   -   -   -   -   -  - 239 39   -  -
6238   -   -   -   -   -  - 245 45   -  -
6239   -   -   -   -   -  - 251 51   -  -
6240   -   -   -   -   -  - 257 57   -  -
6241   -   -   -   -   -  - 263 63   -  -
6242   -   -   -   -   -  - 269 69   -  -
6243   -   -   -   -   -  - 275 75   -  -
6244   -   -   -   -   -  - 281 81   -  -
6245   -   -   -   -   -  - 287 87   -  -
6246   -   -   -   -   -  - 293 93   -  -
6247}
6248do_execsql_test joinD-249 {
6249  SELECT t1.*, t2.*, t3.*, t4.*
6250  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6251  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6252  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6253  WHERE t2.x>0
6254  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6255} {
6256   2 102 202 302 102  2   -  -   -  -
6257   4 104 204 304 104  4   -  -   -  -
6258   6 106 206 306 106  6 206  6   -  -
6259   8 108 208 308 108  8   -  -   -  -
6260  10 110 210 310 110 10   -  - 310 10
6261  12 112 212 312 112 12 212 12   -  -
6262  14 114 214 314 114 14   -  -   -  -
6263  16 116 216 316 116 16   -  -   -  -
6264  18 118 218 318 118 18 218 18   -  -
6265  20 120 220 320 120 20   -  - 320 20
6266  22 122 222 322 122 22   -  -   -  -
6267  24 124 224 324 124 24 224 24   -  -
6268  26 126 226 326 126 26   -  -   -  -
6269  28 128 228 328 128 28   -  -   -  -
6270  30 130 230 330 130 30 230 30 330 30
6271  32 132 232 332 132 32   -  -   -  -
6272  34 134 234 334 134 34   -  -   -  -
6273  36 136 236 336 136 36 236 36   -  -
6274  38 138 238 338 138 38   -  -   -  -
6275  40 140 240 340 140 40   -  - 340 40
6276  42 142 242 342 142 42 242 42   -  -
6277  44 144 244 344 144 44   -  -   -  -
6278  46 146 246 346 146 46   -  -   -  -
6279  48 148 248 348 148 48 248 48   -  -
6280  50 150 250 350 150 50   -  - 350 50
6281  52 152 252 352 152 52   -  -   -  -
6282  54 154 254 354 154 54 254 54   -  -
6283  56 156 256 356 156 56   -  -   -  -
6284  58 158 258 358 158 58   -  -   -  -
6285  60 160 260 360 160 60 260 60 360 60
6286  62 162 262 362 162 62   -  -   -  -
6287  64 164 264 364 164 64   -  -   -  -
6288  66 166 266 366 166 66 266 66   -  -
6289  68 168 268 368 168 68   -  -   -  -
6290  70 170 270 370 170 70   -  - 370 70
6291  72 172 272 372 172 72 272 72   -  -
6292  74 174 274 374 174 74   -  -   -  -
6293  76 176 276 376 176 76   -  -   -  -
6294  78 178 278 378 178 78 278 78   -  -
6295  80 180 280 380 180 80   -  - 380 80
6296  82 182 282 382 182 82   -  -   -  -
6297  84 184 284 384 184 84 284 84   -  -
6298  86 186 286 386 186 86   -  -   -  -
6299  88 188 288 388 188 88   -  -   -  -
6300  90 190 290 390 190 90 290 90 390 90
6301  92 192 292 392 192 92   -  -   -  -
6302  94 194 294 394 194 94   -  -   -  -
6303}
6304do_execsql_test joinD-250 {
6305  SELECT t1.*, t2.*, t3.*, t4.*
6306  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6307  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6308  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6309  WHERE (t2.x>0 OR t2.x IS NULL)
6310  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6311} {
6312   2 102 202 302 102  2   -  -   -  -
6313   4 104 204 304 104  4   -  -   -  -
6314   6 106 206 306 106  6 206  6   -  -
6315   8 108 208 308 108  8   -  -   -  -
6316  10 110 210 310 110 10   -  - 310 10
6317  12 112 212 312 112 12 212 12   -  -
6318  14 114 214 314 114 14   -  -   -  -
6319  16 116 216 316 116 16   -  -   -  -
6320  18 118 218 318 118 18 218 18   -  -
6321  20 120 220 320 120 20   -  - 320 20
6322  22 122 222 322 122 22   -  -   -  -
6323  24 124 224 324 124 24 224 24   -  -
6324  26 126 226 326 126 26   -  -   -  -
6325  28 128 228 328 128 28   -  -   -  -
6326  30 130 230 330 130 30 230 30 330 30
6327  32 132 232 332 132 32   -  -   -  -
6328  34 134 234 334 134 34   -  -   -  -
6329  36 136 236 336 136 36 236 36   -  -
6330  38 138 238 338 138 38   -  -   -  -
6331  40 140 240 340 140 40   -  - 340 40
6332  42 142 242 342 142 42 242 42   -  -
6333  44 144 244 344 144 44   -  -   -  -
6334  46 146 246 346 146 46   -  -   -  -
6335  48 148 248 348 148 48 248 48   -  -
6336  50 150 250 350 150 50   -  - 350 50
6337  52 152 252 352 152 52   -  -   -  -
6338  54 154 254 354 154 54 254 54   -  -
6339  56 156 256 356 156 56   -  -   -  -
6340  58 158 258 358 158 58   -  -   -  -
6341  60 160 260 360 160 60 260 60 360 60
6342  62 162 262 362 162 62   -  -   -  -
6343  64 164 264 364 164 64   -  -   -  -
6344  66 166 266 366 166 66 266 66   -  -
6345  68 168 268 368 168 68   -  -   -  -
6346  70 170 270 370 170 70   -  - 370 70
6347  72 172 272 372 172 72 272 72   -  -
6348  74 174 274 374 174 74   -  -   -  -
6349  76 176 276 376 176 76   -  -   -  -
6350  78 178 278 378 178 78 278 78   -  -
6351  80 180 280 380 180 80   -  - 380 80
6352  82 182 282 382 182 82   -  -   -  -
6353  84 184 284 384 184 84 284 84   -  -
6354  86 186 286 386 186 86   -  -   -  -
6355  88 188 288 388 188 88   -  -   -  -
6356  90 190 290 390 190 90 290 90 390 90
6357  92 192 292 392 192 92   -  -   -  -
6358  94 194 294 394 194 94   -  -   -  -
6359   -   -   -   -   -  - 200  0   -  -
6360   -   -   -   -   -  - 203  3   -  -
6361   -   -   -   -   -  - 209  9   -  -
6362   -   -   -   -   -  - 215 15   -  -
6363   -   -   -   -   -  - 221 21   -  -
6364   -   -   -   -   -  - 227 27   -  -
6365   -   -   -   -   -  - 233 33   -  -
6366   -   -   -   -   -  - 239 39   -  -
6367   -   -   -   -   -  - 245 45   -  -
6368   -   -   -   -   -  - 251 51   -  -
6369   -   -   -   -   -  - 257 57   -  -
6370   -   -   -   -   -  - 263 63   -  -
6371   -   -   -   -   -  - 269 69   -  -
6372   -   -   -   -   -  - 275 75   -  -
6373   -   -   -   -   -  - 281 81   -  -
6374   -   -   -   -   -  - 287 87   -  -
6375   -   -   -   -   -  - 293 93   -  -
6376}
6377do_execsql_test joinD-251 {
6378  SELECT t1.*, t2.*, t3.*, t4.*
6379  FROM t1 INNER JOIN t2 ON true
6380  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6381  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6382  WHERE t1.b=t2.b AND t2.x>0
6383  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6384} {
6385   2 102 202 302 102  2   -  -   -  -
6386   4 104 204 304 104  4   -  -   -  -
6387   6 106 206 306 106  6 206  6   -  -
6388   8 108 208 308 108  8   -  -   -  -
6389  10 110 210 310 110 10   -  - 310 10
6390  12 112 212 312 112 12 212 12   -  -
6391  14 114 214 314 114 14   -  -   -  -
6392  16 116 216 316 116 16   -  -   -  -
6393  18 118 218 318 118 18 218 18   -  -
6394  20 120 220 320 120 20   -  - 320 20
6395  22 122 222 322 122 22   -  -   -  -
6396  24 124 224 324 124 24 224 24   -  -
6397  26 126 226 326 126 26   -  -   -  -
6398  28 128 228 328 128 28   -  -   -  -
6399  30 130 230 330 130 30 230 30 330 30
6400  32 132 232 332 132 32   -  -   -  -
6401  34 134 234 334 134 34   -  -   -  -
6402  36 136 236 336 136 36 236 36   -  -
6403  38 138 238 338 138 38   -  -   -  -
6404  40 140 240 340 140 40   -  - 340 40
6405  42 142 242 342 142 42 242 42   -  -
6406  44 144 244 344 144 44   -  -   -  -
6407  46 146 246 346 146 46   -  -   -  -
6408  48 148 248 348 148 48 248 48   -  -
6409  50 150 250 350 150 50   -  - 350 50
6410  52 152 252 352 152 52   -  -   -  -
6411  54 154 254 354 154 54 254 54   -  -
6412  56 156 256 356 156 56   -  -   -  -
6413  58 158 258 358 158 58   -  -   -  -
6414  60 160 260 360 160 60 260 60 360 60
6415  62 162 262 362 162 62   -  -   -  -
6416  64 164 264 364 164 64   -  -   -  -
6417  66 166 266 366 166 66 266 66   -  -
6418  68 168 268 368 168 68   -  -   -  -
6419  70 170 270 370 170 70   -  - 370 70
6420  72 172 272 372 172 72 272 72   -  -
6421  74 174 274 374 174 74   -  -   -  -
6422  76 176 276 376 176 76   -  -   -  -
6423  78 178 278 378 178 78 278 78   -  -
6424  80 180 280 380 180 80   -  - 380 80
6425  82 182 282 382 182 82   -  -   -  -
6426  84 184 284 384 184 84 284 84   -  -
6427  86 186 286 386 186 86   -  -   -  -
6428  88 188 288 388 188 88   -  -   -  -
6429  90 190 290 390 190 90 290 90 390 90
6430  92 192 292 392 192 92   -  -   -  -
6431  94 194 294 394 194 94   -  -   -  -
6432}
6433do_execsql_test joinD-252 {
6434  SELECT t1.*, t2.*, t3.*, t4.*
6435  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6436  FULL JOIN t3 ON t1.c=t3.c
6437  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6438  WHERE t3.y>0
6439  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6440} {
6441   6 106 206 306 106  6 206  6   -  -
6442  12 112 212 312 112 12 212 12   -  -
6443  18 118 218 318 118 18 218 18   -  -
6444  24 124 224 324 124 24 224 24   -  -
6445  30 130 230 330 130 30 230 30 330 30
6446  36 136 236 336 136 36 236 36   -  -
6447  42 142 242 342 142 42 242 42   -  -
6448  48 148 248 348 148 48 248 48   -  -
6449  54 154 254 354 154 54 254 54   -  -
6450  60 160 260 360 160 60 260 60 360 60
6451  66 166 266 366 166 66 266 66   -  -
6452  72 172 272 372 172 72 272 72   -  -
6453  78 178 278 378 178 78 278 78   -  -
6454  84 184 284 384 184 84 284 84   -  -
6455  90 190 290 390 190 90 290 90 390 90
6456   -   -   -   -   -  - 203  3   -  -
6457   -   -   -   -   -  - 209  9   -  -
6458   -   -   -   -   -  - 215 15   -  -
6459   -   -   -   -   -  - 221 21   -  -
6460   -   -   -   -   -  - 227 27   -  -
6461   -   -   -   -   -  - 233 33   -  -
6462   -   -   -   -   -  - 239 39   -  -
6463   -   -   -   -   -  - 245 45   -  -
6464   -   -   -   -   -  - 251 51   -  -
6465   -   -   -   -   -  - 257 57   -  -
6466   -   -   -   -   -  - 263 63   -  -
6467   -   -   -   -   -  - 269 69   -  -
6468   -   -   -   -   -  - 275 75   -  -
6469   -   -   -   -   -  - 281 81   -  -
6470   -   -   -   -   -  - 287 87   -  -
6471   -   -   -   -   -  - 293 93   -  -
6472}
6473do_execsql_test joinD-253 {
6474  SELECT t1.*, t2.*, t3.*, t4.*
6475  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6476  FULL JOIN t3 ON t1.c=t3.c
6477  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6478  WHERE t3.y>0 OR t3.y IS NULL
6479  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6480} {
6481   2 102 202 302 102  2   -  -   -  -
6482   4 104 204 304 104  4   -  -   -  -
6483   6 106 206 306 106  6 206  6   -  -
6484   8 108 208 308 108  8   -  -   -  -
6485  10 110 210 310 110 10   -  - 310 10
6486  12 112 212 312 112 12 212 12   -  -
6487  14 114 214 314 114 14   -  -   -  -
6488  16 116 216 316 116 16   -  -   -  -
6489  18 118 218 318 118 18 218 18   -  -
6490  20 120 220 320 120 20   -  - 320 20
6491  22 122 222 322 122 22   -  -   -  -
6492  24 124 224 324 124 24 224 24   -  -
6493  26 126 226 326 126 26   -  -   -  -
6494  28 128 228 328 128 28   -  -   -  -
6495  30 130 230 330 130 30 230 30 330 30
6496  32 132 232 332 132 32   -  -   -  -
6497  34 134 234 334 134 34   -  -   -  -
6498  36 136 236 336 136 36 236 36   -  -
6499  38 138 238 338 138 38   -  -   -  -
6500  40 140 240 340 140 40   -  - 340 40
6501  42 142 242 342 142 42 242 42   -  -
6502  44 144 244 344 144 44   -  -   -  -
6503  46 146 246 346 146 46   -  -   -  -
6504  48 148 248 348 148 48 248 48   -  -
6505  50 150 250 350 150 50   -  - 350 50
6506  52 152 252 352 152 52   -  -   -  -
6507  54 154 254 354 154 54 254 54   -  -
6508  56 156 256 356 156 56   -  -   -  -
6509  58 158 258 358 158 58   -  -   -  -
6510  60 160 260 360 160 60 260 60 360 60
6511  62 162 262 362 162 62   -  -   -  -
6512  64 164 264 364 164 64   -  -   -  -
6513  66 166 266 366 166 66 266 66   -  -
6514  68 168 268 368 168 68   -  -   -  -
6515  70 170 270 370 170 70   -  - 370 70
6516  72 172 272 372 172 72 272 72   -  -
6517  74 174 274 374 174 74   -  -   -  -
6518  76 176 276 376 176 76   -  -   -  -
6519  78 178 278 378 178 78 278 78   -  -
6520  80 180 280 380 180 80   -  - 380 80
6521  82 182 282 382 182 82   -  -   -  -
6522  84 184 284 384 184 84 284 84   -  -
6523  86 186 286 386 186 86   -  -   -  -
6524  88 188 288 388 188 88   -  -   -  -
6525  90 190 290 390 190 90 290 90 390 90
6526  92 192 292 392 192 92   -  -   -  -
6527  94 194 294 394 194 94   -  -   -  -
6528   -   -   -   -   -  - 203  3   -  -
6529   -   -   -   -   -  - 209  9   -  -
6530   -   -   -   -   -  - 215 15   -  -
6531   -   -   -   -   -  - 221 21   -  -
6532   -   -   -   -   -  - 227 27   -  -
6533   -   -   -   -   -  - 233 33   -  -
6534   -   -   -   -   -  - 239 39   -  -
6535   -   -   -   -   -  - 245 45   -  -
6536   -   -   -   -   -  - 251 51   -  -
6537   -   -   -   -   -  - 257 57   -  -
6538   -   -   -   -   -  - 263 63   -  -
6539   -   -   -   -   -  - 269 69   -  -
6540   -   -   -   -   -  - 275 75   -  -
6541   -   -   -   -   -  - 281 81   -  -
6542   -   -   -   -   -  - 287 87   -  -
6543   -   -   -   -   -  - 293 93   -  -
6544}
6545do_execsql_test joinD-254 {
6546  SELECT t1.*, t2.*, t3.*, t4.*
6547  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6548  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6549  LEFT JOIN t4 ON t1.d=t4.d
6550  WHERE t4.z>0
6551  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6552} {
6553  10 110 210 310 110 10   -  - 310 10
6554  20 120 220 320 120 20   -  - 320 20
6555  30 130 230 330 130 30 230 30 330 30
6556  40 140 240 340 140 40   -  - 340 40
6557  50 150 250 350 150 50   -  - 350 50
6558  60 160 260 360 160 60 260 60 360 60
6559  70 170 270 370 170 70   -  - 370 70
6560  80 180 280 380 180 80   -  - 380 80
6561  90 190 290 390 190 90 290 90 390 90
6562}
6563do_execsql_test joinD-255 {
6564  SELECT t1.*, t2.*, t3.*, t4.*
6565  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6566  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6567  LEFT JOIN t4 ON t1.d=t4.d
6568  WHERE t4.z IS NULL OR t4.z>0
6569  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6570} {
6571   2 102 202 302 102  2   -  -   -  -
6572   4 104 204 304 104  4   -  -   -  -
6573   6 106 206 306 106  6 206  6   -  -
6574   8 108 208 308 108  8   -  -   -  -
6575  10 110 210 310 110 10   -  - 310 10
6576  12 112 212 312 112 12 212 12   -  -
6577  14 114 214 314 114 14   -  -   -  -
6578  16 116 216 316 116 16   -  -   -  -
6579  18 118 218 318 118 18 218 18   -  -
6580  20 120 220 320 120 20   -  - 320 20
6581  22 122 222 322 122 22   -  -   -  -
6582  24 124 224 324 124 24 224 24   -  -
6583  26 126 226 326 126 26   -  -   -  -
6584  28 128 228 328 128 28   -  -   -  -
6585  30 130 230 330 130 30 230 30 330 30
6586  32 132 232 332 132 32   -  -   -  -
6587  34 134 234 334 134 34   -  -   -  -
6588  36 136 236 336 136 36 236 36   -  -
6589  38 138 238 338 138 38   -  -   -  -
6590  40 140 240 340 140 40   -  - 340 40
6591  42 142 242 342 142 42 242 42   -  -
6592  44 144 244 344 144 44   -  -   -  -
6593  46 146 246 346 146 46   -  -   -  -
6594  48 148 248 348 148 48 248 48   -  -
6595  50 150 250 350 150 50   -  - 350 50
6596  52 152 252 352 152 52   -  -   -  -
6597  54 154 254 354 154 54 254 54   -  -
6598  56 156 256 356 156 56   -  -   -  -
6599  58 158 258 358 158 58   -  -   -  -
6600  60 160 260 360 160 60 260 60 360 60
6601  62 162 262 362 162 62   -  -   -  -
6602  64 164 264 364 164 64   -  -   -  -
6603  66 166 266 366 166 66 266 66   -  -
6604  68 168 268 368 168 68   -  -   -  -
6605  70 170 270 370 170 70   -  - 370 70
6606  72 172 272 372 172 72 272 72   -  -
6607  74 174 274 374 174 74   -  -   -  -
6608  76 176 276 376 176 76   -  -   -  -
6609  78 178 278 378 178 78 278 78   -  -
6610  80 180 280 380 180 80   -  - 380 80
6611  82 182 282 382 182 82   -  -   -  -
6612  84 184 284 384 184 84 284 84   -  -
6613  86 186 286 386 186 86   -  -   -  -
6614  88 188 288 388 188 88   -  -   -  -
6615  90 190 290 390 190 90 290 90 390 90
6616  92 192 292 392 192 92   -  -   -  -
6617  94 194 294 394 194 94   -  -   -  -
6618   -   -   -   -   -  - 200  0   -  -
6619   -   -   -   -   -  - 203  3   -  -
6620   -   -   -   -   -  - 209  9   -  -
6621   -   -   -   -   -  - 215 15   -  -
6622   -   -   -   -   -  - 221 21   -  -
6623   -   -   -   -   -  - 227 27   -  -
6624   -   -   -   -   -  - 233 33   -  -
6625   -   -   -   -   -  - 239 39   -  -
6626   -   -   -   -   -  - 245 45   -  -
6627   -   -   -   -   -  - 251 51   -  -
6628   -   -   -   -   -  - 257 57   -  -
6629   -   -   -   -   -  - 263 63   -  -
6630   -   -   -   -   -  - 269 69   -  -
6631   -   -   -   -   -  - 275 75   -  -
6632   -   -   -   -   -  - 281 81   -  -
6633   -   -   -   -   -  - 287 87   -  -
6634   -   -   -   -   -  - 293 93   -  -
6635}
6636do_execsql_test joinD-256 {
6637  SELECT t1.*, t2.*, t3.*, t4.*
6638  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6639  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6640  LEFT JOIN t4 ON t1.d=t4.d
6641  WHERE t2.x>0 AND t4.z>0
6642  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6643} {
6644  10 110 210 310 110 10   -  - 310 10
6645  20 120 220 320 120 20   -  - 320 20
6646  30 130 230 330 130 30 230 30 330 30
6647  40 140 240 340 140 40   -  - 340 40
6648  50 150 250 350 150 50   -  - 350 50
6649  60 160 260 360 160 60 260 60 360 60
6650  70 170 270 370 170 70   -  - 370 70
6651  80 180 280 380 180 80   -  - 380 80
6652  90 190 290 390 190 90 290 90 390 90
6653}
6654do_execsql_test joinD-257 {
6655  SELECT t1.*, t2.*, t3.*, t4.*
6656  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6657  FULL JOIN t3 ON t1.c=t3.c
6658  LEFT JOIN t4 ON t1.d=t4.d
6659  WHERE t4.z>0 AND t3.y>0
6660  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6661} {
6662  30 130 230 330 130 30 230 30 330 30
6663  60 160 260 360 160 60 260 60 360 60
6664  90 190 290 390 190 90 290 90 390 90
6665}
6666do_execsql_test joinD-258 {
6667  SELECT t1.*, t2.*, t3.*, t4.*
6668  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6669  FULL JOIN t3 ON t1.c=t3.c
6670  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6671  WHERE t2.x>0 AND t3.y>0
6672  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6673} {
6674   6 106 206 306 106  6 206  6   -  -
6675  12 112 212 312 112 12 212 12   -  -
6676  18 118 218 318 118 18 218 18   -  -
6677  24 124 224 324 124 24 224 24   -  -
6678  30 130 230 330 130 30 230 30 330 30
6679  36 136 236 336 136 36 236 36   -  -
6680  42 142 242 342 142 42 242 42   -  -
6681  48 148 248 348 148 48 248 48   -  -
6682  54 154 254 354 154 54 254 54   -  -
6683  60 160 260 360 160 60 260 60 360 60
6684  66 166 266 366 166 66 266 66   -  -
6685  72 172 272 372 172 72 272 72   -  -
6686  78 178 278 378 178 78 278 78   -  -
6687  84 184 284 384 184 84 284 84   -  -
6688  90 190 290 390 190 90 290 90 390 90
6689}
6690do_execsql_test joinD-259 {
6691  SELECT t1.*, t2.*, t3.*, t4.*
6692  FROM t1 INNER JOIN t2 ON t1.b=t2.b
6693  FULL JOIN t3 ON t1.c=t3.c
6694  LEFT JOIN t4 ON t1.d=t4.d
6695  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
6696  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6697} {
6698  30 130 230 330 130 30 230 30 330 30
6699  60 160 260 360 160 60 260 60 360 60
6700  90 190 290 390 190 90 290 90 390 90
6701}
6702do_execsql_test joinD-260 {
6703  SELECT t1.*, t2.*, t3.*, t4.*
6704  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6705  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6706  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6707  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6708} {
6709   2 102 202 302 102  2   -  -   -  -
6710   4 104 204 304 104  4   -  -   -  -
6711   6 106 206 306 106  6 206  6   -  -
6712   8 108 208 308 108  8   -  -   -  -
6713  10 110 210 310 110 10   -  - 310 10
6714  12 112 212 312 112 12 212 12   -  -
6715  14 114 214 314 114 14   -  -   -  -
6716  16 116 216 316 116 16   -  -   -  -
6717  18 118 218 318 118 18 218 18   -  -
6718  20 120 220 320 120 20   -  - 320 20
6719  22 122 222 322 122 22   -  -   -  -
6720  24 124 224 324 124 24 224 24   -  -
6721  26 126 226 326 126 26   -  -   -  -
6722  28 128 228 328 128 28   -  -   -  -
6723  30 130 230 330 130 30 230 30 330 30
6724  32 132 232 332 132 32   -  -   -  -
6725  34 134 234 334 134 34   -  -   -  -
6726  36 136 236 336 136 36 236 36   -  -
6727  38 138 238 338 138 38   -  -   -  -
6728  40 140 240 340 140 40   -  - 340 40
6729  42 142 242 342 142 42 242 42   -  -
6730  44 144 244 344 144 44   -  -   -  -
6731  46 146 246 346 146 46   -  -   -  -
6732  48 148 248 348 148 48 248 48   -  -
6733  50 150 250 350 150 50   -  - 350 50
6734  52 152 252 352 152 52   -  -   -  -
6735  54 154 254 354 154 54 254 54   -  -
6736  56 156 256 356 156 56   -  -   -  -
6737  58 158 258 358 158 58   -  -   -  -
6738  60 160 260 360 160 60 260 60 360 60
6739  62 162 262 362 162 62   -  -   -  -
6740  64 164 264 364 164 64   -  -   -  -
6741  66 166 266 366 166 66 266 66   -  -
6742  68 168 268 368 168 68   -  -   -  -
6743  70 170 270 370 170 70   -  - 370 70
6744  72 172 272 372 172 72 272 72   -  -
6745  74 174 274 374 174 74   -  -   -  -
6746  76 176 276 376 176 76   -  -   -  -
6747  78 178 278 378 178 78 278 78   -  -
6748  80 180 280 380 180 80   -  - 380 80
6749  82 182 282 382 182 82   -  -   -  -
6750  84 184 284 384 184 84 284 84   -  -
6751  86 186 286 386 186 86   -  -   -  -
6752  88 188 288 388 188 88   -  -   -  -
6753  90 190 290 390 190 90 290 90 390 90
6754  92 192 292 392 192 92   -  -   -  -
6755  94 194 294 394 194 94   -  -   -  -
6756   -   -   -   -   -  - 200  0   -  -
6757   -   -   -   -   -  - 203  3   -  -
6758   -   -   -   -   -  - 209  9   -  -
6759   -   -   -   -   -  - 215 15   -  -
6760   -   -   -   -   -  - 221 21   -  -
6761   -   -   -   -   -  - 227 27   -  -
6762   -   -   -   -   -  - 233 33   -  -
6763   -   -   -   -   -  - 239 39   -  -
6764   -   -   -   -   -  - 245 45   -  -
6765   -   -   -   -   -  - 251 51   -  -
6766   -   -   -   -   -  - 257 57   -  -
6767   -   -   -   -   -  - 263 63   -  -
6768   -   -   -   -   -  - 269 69   -  -
6769   -   -   -   -   -  - 275 75   -  -
6770   -   -   -   -   -  - 281 81   -  -
6771   -   -   -   -   -  - 287 87   -  -
6772   -   -   -   -   -  - 293 93   -  -
6773}
6774do_execsql_test joinD-261 {
6775  SELECT t1.*, t2.*, t3.*, t4.*
6776  FROM t1 INNER JOIN t2 ON t2.x>0
6777  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6778  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6779  WHERE t1.b IS NOT DISTINCT FROM t2.b
6780  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6781} {
6782   2 102 202 302 102  2   -  -   -  -
6783   4 104 204 304 104  4   -  -   -  -
6784   6 106 206 306 106  6 206  6   -  -
6785   8 108 208 308 108  8   -  -   -  -
6786  10 110 210 310 110 10   -  - 310 10
6787  12 112 212 312 112 12 212 12   -  -
6788  14 114 214 314 114 14   -  -   -  -
6789  16 116 216 316 116 16   -  -   -  -
6790  18 118 218 318 118 18 218 18   -  -
6791  20 120 220 320 120 20   -  - 320 20
6792  22 122 222 322 122 22   -  -   -  -
6793  24 124 224 324 124 24 224 24   -  -
6794  26 126 226 326 126 26   -  -   -  -
6795  28 128 228 328 128 28   -  -   -  -
6796  30 130 230 330 130 30 230 30 330 30
6797  32 132 232 332 132 32   -  -   -  -
6798  34 134 234 334 134 34   -  -   -  -
6799  36 136 236 336 136 36 236 36   -  -
6800  38 138 238 338 138 38   -  -   -  -
6801  40 140 240 340 140 40   -  - 340 40
6802  42 142 242 342 142 42 242 42   -  -
6803  44 144 244 344 144 44   -  -   -  -
6804  46 146 246 346 146 46   -  -   -  -
6805  48 148 248 348 148 48 248 48   -  -
6806  50 150 250 350 150 50   -  - 350 50
6807  52 152 252 352 152 52   -  -   -  -
6808  54 154 254 354 154 54 254 54   -  -
6809  56 156 256 356 156 56   -  -   -  -
6810  58 158 258 358 158 58   -  -   -  -
6811  60 160 260 360 160 60 260 60 360 60
6812  62 162 262 362 162 62   -  -   -  -
6813  64 164 264 364 164 64   -  -   -  -
6814  66 166 266 366 166 66 266 66   -  -
6815  68 168 268 368 168 68   -  -   -  -
6816  70 170 270 370 170 70   -  - 370 70
6817  72 172 272 372 172 72 272 72   -  -
6818  74 174 274 374 174 74   -  -   -  -
6819  76 176 276 376 176 76   -  -   -  -
6820  78 178 278 378 178 78 278 78   -  -
6821  80 180 280 380 180 80   -  - 380 80
6822  82 182 282 382 182 82   -  -   -  -
6823  84 184 284 384 184 84 284 84   -  -
6824  86 186 286 386 186 86   -  -   -  -
6825  88 188 288 388 188 88   -  -   -  -
6826  90 190 290 390 190 90 290 90 390 90
6827  92 192 292 392 192 92   -  -   -  -
6828  94 194 294 394 194 94   -  -   -  -
6829   -   -   -   -   -  - 200  0   -  -
6830}
6831do_execsql_test joinD-262 {
6832  SELECT t1.*, t2.*, t3.*, t4.*
6833  FROM t1 INNER JOIN t2 ON t2.x>0
6834  FULL JOIN t3 ON t3.y>0
6835  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
6836  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
6837  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6838} {
6839   6 106 206 306 106  6 206  6   -  -
6840  12 112 212 312 112 12 212 12   -  -
6841  18 118 218 318 118 18 218 18   -  -
6842  24 124 224 324 124 24 224 24   -  -
6843  30 130 230 330 130 30 230 30 330 30
6844  36 136 236 336 136 36 236 36   -  -
6845  42 142 242 342 142 42 242 42   -  -
6846  48 148 248 348 148 48 248 48   -  -
6847  54 154 254 354 154 54 254 54   -  -
6848  60 160 260 360 160 60 260 60 360 60
6849  66 166 266 366 166 66 266 66   -  -
6850  72 172 272 372 172 72 272 72   -  -
6851  78 178 278 378 178 78 278 78   -  -
6852  84 184 284 384 184 84 284 84   -  -
6853  90 190 290 390 190 90 290 90 390 90
6854}
6855do_execsql_test joinD-263 {
6856  SELECT t1.*, t2.*, t3.*, t4.*
6857  FROM t1 INNER JOIN t2 ON t2.x>0
6858  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
6859  LEFT JOIN t4 ON t4.z>0
6860  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
6861  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6862} {
6863  10 110 210 310 110 10   -  - 310 10
6864  20 120 220 320 120 20   -  - 320 20
6865  30 130 230 330 130 30 230 30 330 30
6866  40 140 240 340 140 40   -  - 340 40
6867  50 150 250 350 150 50   -  - 350 50
6868  60 160 260 360 160 60 260 60 360 60
6869  70 170 270 370 170 70   -  - 370 70
6870  80 180 280 380 180 80   -  - 380 80
6871  90 190 290 390 190 90 290 90 390 90
6872}
6873do_execsql_test joinD-264 {
6874  SELECT t1.*, t2.*, t3.*, t4.*
6875  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
6876  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6877  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
6878  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6879} {
6880   2 102 202 302 102  2   -  -   -  -
6881   4 104 204 304 104  4   -  -   -  -
6882   6 106 206 306 106  6 206  6   -  -
6883   8 108 208 308 108  8   -  -   -  -
6884  10 110 210 310 110 10   -  - 310 10
6885  12 112 212 312 112 12 212 12   -  -
6886  14 114 214 314 114 14   -  -   -  -
6887  16 116 216 316 116 16   -  -   -  -
6888  18 118 218 318 118 18 218 18   -  -
6889  20 120 220 320 120 20   -  - 320 20
6890  22 122 222 322 122 22   -  -   -  -
6891  24 124 224 324 124 24 224 24   -  -
6892  26 126 226 326 126 26   -  -   -  -
6893  28 128 228 328 128 28   -  -   -  -
6894  30 130 230 330 130 30 230 30 330 30
6895  32 132 232 332 132 32   -  -   -  -
6896  34 134 234 334 134 34   -  -   -  -
6897  36 136 236 336 136 36 236 36   -  -
6898  38 138 238 338 138 38   -  -   -  -
6899  40 140 240 340 140 40   -  - 340 40
6900  42 142 242 342 142 42 242 42   -  -
6901  44 144 244 344 144 44   -  -   -  -
6902  46 146 246 346 146 46   -  -   -  -
6903  48 148 248 348 148 48 248 48   -  -
6904  50 150 250 350 150 50   -  - 350 50
6905  52 152 252 352 152 52   -  -   -  -
6906  54 154 254 354 154 54 254 54   -  -
6907  56 156 256 356 156 56   -  -   -  -
6908  58 158 258 358 158 58   -  -   -  -
6909  60 160 260 360 160 60 260 60 360 60
6910  62 162 262 362 162 62   -  -   -  -
6911  64 164 264 364 164 64   -  -   -  -
6912  66 166 266 366 166 66 266 66   -  -
6913  68 168 268 368 168 68   -  -   -  -
6914  70 170 270 370 170 70   -  - 370 70
6915  72 172 272 372 172 72 272 72   -  -
6916  74 174 274 374 174 74   -  -   -  -
6917  76 176 276 376 176 76   -  -   -  -
6918  78 178 278 378 178 78 278 78   -  -
6919  80 180 280 380 180 80   -  - 380 80
6920  82 182 282 382 182 82   -  -   -  -
6921  84 184 284 384 184 84 284 84   -  -
6922  86 186 286 386 186 86   -  -   -  -
6923  88 188 288 388 188 88   -  -   -  -
6924  90 190 290 390 190 90 290 90 390 90
6925  92 192 292 392 192 92   -  -   -  -
6926  94 194 294 394 194 94   -  -   -  -
6927   -   -   -   -   -  - 200  0   -  -
6928   -   -   -   -   -  - 203  3   -  -
6929   -   -   -   -   -  - 209  9   -  -
6930   -   -   -   -   -  - 215 15   -  -
6931   -   -   -   -   -  - 221 21   -  -
6932   -   -   -   -   -  - 227 27   -  -
6933   -   -   -   -   -  - 233 33   -  -
6934   -   -   -   -   -  - 239 39   -  -
6935   -   -   -   -   -  - 245 45   -  -
6936   -   -   -   -   -  - 251 51   -  -
6937   -   -   -   -   -  - 257 57   -  -
6938   -   -   -   -   -  - 263 63   -  -
6939   -   -   -   -   -  - 269 69   -  -
6940   -   -   -   -   -  - 275 75   -  -
6941   -   -   -   -   -  - 281 81   -  -
6942   -   -   -   -   -  - 287 87   -  -
6943   -   -   -   -   -  - 293 93   -  -
6944}
6945do_execsql_test joinD-265 {
6946  SELECT t1.*, t2.*, t3.*, t4.*
6947  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
6948  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6949  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
6950  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6951} {
6952  10 110 210 310 110 10   -  - 310 10
6953  20 120 220 320 120 20   -  - 320 20
6954  30 130 230 330 130 30 230 30 330 30
6955  40 140 240 340 140 40   -  - 340 40
6956  50 150 250 350 150 50   -  - 350 50
6957  60 160 260 360 160 60 260 60 360 60
6958  70 170 270 370 170 70   -  - 370 70
6959  80 180 280 380 180 80   -  - 380 80
6960  90 190 290 390 190 90 290 90 390 90
6961   -   -   -   -   -  -   -  - 300  0
6962   -   -   -   -   -  -   -  - 305  5
6963   -   -   -   -   -  -   -  - 315 15
6964   -   -   -   -   -  -   -  - 325 25
6965   -   -   -   -   -  -   -  - 335 35
6966   -   -   -   -   -  -   -  - 345 45
6967   -   -   -   -   -  -   -  - 355 55
6968   -   -   -   -   -  -   -  - 365 65
6969   -   -   -   -   -  -   -  - 375 75
6970   -   -   -   -   -  -   -  - 385 85
6971   -   -   -   -   -  -   -  - 395 95
6972}
6973do_execsql_test joinD-266 {
6974  SELECT t1.*, t2.*, t3.*, t4.*
6975  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
6976  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
6977  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
6978  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
6979} {
6980  10 110 210 310 110 10   -  - 310 10
6981  20 120 220 320 120 20   -  - 320 20
6982  30 130 230 330 130 30 230 30 330 30
6983  40 140 240 340 140 40   -  - 340 40
6984  50 150 250 350 150 50   -  - 350 50
6985  60 160 260 360 160 60 260 60 360 60
6986  70 170 270 370 170 70   -  - 370 70
6987  80 180 280 380 180 80   -  - 380 80
6988  90 190 290 390 190 90 290 90 390 90
6989   -   -   -   -   -  -   -  - 300  0
6990   -   -   -   -   -  -   -  - 305  5
6991   -   -   -   -   -  -   -  - 315 15
6992   -   -   -   -   -  -   -  - 325 25
6993   -   -   -   -   -  -   -  - 335 35
6994   -   -   -   -   -  -   -  - 345 45
6995   -   -   -   -   -  -   -  - 355 55
6996   -   -   -   -   -  -   -  - 365 65
6997   -   -   -   -   -  -   -  - 375 75
6998   -   -   -   -   -  -   -  - 385 85
6999   -   -   -   -   -  -   -  - 395 95
7000}
7001do_execsql_test joinD-267 {
7002  SELECT t1.*, t2.*, t3.*, t4.*
7003  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7004  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7005  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7006  WHERE t2.x>0
7007  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7008} {
7009  10 110 210 310 110 10   -  - 310 10
7010  20 120 220 320 120 20   -  - 320 20
7011  30 130 230 330 130 30 230 30 330 30
7012  40 140 240 340 140 40   -  - 340 40
7013  50 150 250 350 150 50   -  - 350 50
7014  60 160 260 360 160 60 260 60 360 60
7015  70 170 270 370 170 70   -  - 370 70
7016  80 180 280 380 180 80   -  - 380 80
7017  90 190 290 390 190 90 290 90 390 90
7018}
7019do_execsql_test joinD-268 {
7020  SELECT t1.*, t2.*, t3.*, t4.*
7021  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7022  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7023  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7024  WHERE (t2.x>0 OR t2.x IS NULL)
7025  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7026} {
7027  10 110 210 310 110 10   -  - 310 10
7028  20 120 220 320 120 20   -  - 320 20
7029  30 130 230 330 130 30 230 30 330 30
7030  40 140 240 340 140 40   -  - 340 40
7031  50 150 250 350 150 50   -  - 350 50
7032  60 160 260 360 160 60 260 60 360 60
7033  70 170 270 370 170 70   -  - 370 70
7034  80 180 280 380 180 80   -  - 380 80
7035  90 190 290 390 190 90 290 90 390 90
7036   -   -   -   -   -  -   -  - 300  0
7037   -   -   -   -   -  -   -  - 305  5
7038   -   -   -   -   -  -   -  - 315 15
7039   -   -   -   -   -  -   -  - 325 25
7040   -   -   -   -   -  -   -  - 335 35
7041   -   -   -   -   -  -   -  - 345 45
7042   -   -   -   -   -  -   -  - 355 55
7043   -   -   -   -   -  -   -  - 365 65
7044   -   -   -   -   -  -   -  - 375 75
7045   -   -   -   -   -  -   -  - 385 85
7046   -   -   -   -   -  -   -  - 395 95
7047}
7048do_execsql_test joinD-269 {
7049  SELECT t1.*, t2.*, t3.*, t4.*
7050  FROM t1 INNER JOIN t2 ON true
7051  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7052  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7053  WHERE t1.b=t2.b AND t2.x>0
7054  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7055} {
7056  10 110 210 310 110 10   -  - 310 10
7057  20 120 220 320 120 20   -  - 320 20
7058  30 130 230 330 130 30 230 30 330 30
7059  40 140 240 340 140 40   -  - 340 40
7060  50 150 250 350 150 50   -  - 350 50
7061  60 160 260 360 160 60 260 60 360 60
7062  70 170 270 370 170 70   -  - 370 70
7063  80 180 280 380 180 80   -  - 380 80
7064  90 190 290 390 190 90 290 90 390 90
7065}
7066do_execsql_test joinD-270 {
7067  SELECT t1.*, t2.*, t3.*, t4.*
7068  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7069  FULL JOIN t3 ON t1.c=t3.c
7070  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7071  WHERE t3.y>0
7072  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7073} {
7074  30 130 230 330 130 30 230 30 330 30
7075  60 160 260 360 160 60 260 60 360 60
7076  90 190 290 390 190 90 290 90 390 90
7077}
7078do_execsql_test joinD-271 {
7079  SELECT t1.*, t2.*, t3.*, t4.*
7080  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7081  FULL JOIN t3 ON t1.c=t3.c
7082  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7083  WHERE t3.y>0 OR t3.y IS NULL
7084  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7085} {
7086  10 110 210 310 110 10   -  - 310 10
7087  20 120 220 320 120 20   -  - 320 20
7088  30 130 230 330 130 30 230 30 330 30
7089  40 140 240 340 140 40   -  - 340 40
7090  50 150 250 350 150 50   -  - 350 50
7091  60 160 260 360 160 60 260 60 360 60
7092  70 170 270 370 170 70   -  - 370 70
7093  80 180 280 380 180 80   -  - 380 80
7094  90 190 290 390 190 90 290 90 390 90
7095   -   -   -   -   -  -   -  - 300  0
7096   -   -   -   -   -  -   -  - 305  5
7097   -   -   -   -   -  -   -  - 315 15
7098   -   -   -   -   -  -   -  - 325 25
7099   -   -   -   -   -  -   -  - 335 35
7100   -   -   -   -   -  -   -  - 345 45
7101   -   -   -   -   -  -   -  - 355 55
7102   -   -   -   -   -  -   -  - 365 65
7103   -   -   -   -   -  -   -  - 375 75
7104   -   -   -   -   -  -   -  - 385 85
7105   -   -   -   -   -  -   -  - 395 95
7106}
7107do_execsql_test joinD-272 {
7108  SELECT t1.*, t2.*, t3.*, t4.*
7109  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7110  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7111  RIGHT JOIN t4 ON t1.d=t4.d
7112  WHERE t4.z>0
7113  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7114} {
7115  10 110 210 310 110 10   -  - 310 10
7116  20 120 220 320 120 20   -  - 320 20
7117  30 130 230 330 130 30 230 30 330 30
7118  40 140 240 340 140 40   -  - 340 40
7119  50 150 250 350 150 50   -  - 350 50
7120  60 160 260 360 160 60 260 60 360 60
7121  70 170 270 370 170 70   -  - 370 70
7122  80 180 280 380 180 80   -  - 380 80
7123  90 190 290 390 190 90 290 90 390 90
7124   -   -   -   -   -  -   -  - 305  5
7125   -   -   -   -   -  -   -  - 315 15
7126   -   -   -   -   -  -   -  - 325 25
7127   -   -   -   -   -  -   -  - 335 35
7128   -   -   -   -   -  -   -  - 345 45
7129   -   -   -   -   -  -   -  - 355 55
7130   -   -   -   -   -  -   -  - 365 65
7131   -   -   -   -   -  -   -  - 375 75
7132   -   -   -   -   -  -   -  - 385 85
7133   -   -   -   -   -  -   -  - 395 95
7134}
7135do_execsql_test joinD-273 {
7136  SELECT t1.*, t2.*, t3.*, t4.*
7137  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7138  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7139  RIGHT JOIN t4 ON t1.d=t4.d
7140  WHERE t4.z IS NULL OR t4.z>0
7141  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7142} {
7143  10 110 210 310 110 10   -  - 310 10
7144  20 120 220 320 120 20   -  - 320 20
7145  30 130 230 330 130 30 230 30 330 30
7146  40 140 240 340 140 40   -  - 340 40
7147  50 150 250 350 150 50   -  - 350 50
7148  60 160 260 360 160 60 260 60 360 60
7149  70 170 270 370 170 70   -  - 370 70
7150  80 180 280 380 180 80   -  - 380 80
7151  90 190 290 390 190 90 290 90 390 90
7152   -   -   -   -   -  -   -  - 305  5
7153   -   -   -   -   -  -   -  - 315 15
7154   -   -   -   -   -  -   -  - 325 25
7155   -   -   -   -   -  -   -  - 335 35
7156   -   -   -   -   -  -   -  - 345 45
7157   -   -   -   -   -  -   -  - 355 55
7158   -   -   -   -   -  -   -  - 365 65
7159   -   -   -   -   -  -   -  - 375 75
7160   -   -   -   -   -  -   -  - 385 85
7161   -   -   -   -   -  -   -  - 395 95
7162}
7163do_execsql_test joinD-274 {
7164  SELECT t1.*, t2.*, t3.*, t4.*
7165  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7166  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7167  RIGHT JOIN t4 ON t1.d=t4.d
7168  WHERE t2.x>0 AND t4.z>0
7169  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7170} {
7171  10 110 210 310 110 10   -  - 310 10
7172  20 120 220 320 120 20   -  - 320 20
7173  30 130 230 330 130 30 230 30 330 30
7174  40 140 240 340 140 40   -  - 340 40
7175  50 150 250 350 150 50   -  - 350 50
7176  60 160 260 360 160 60 260 60 360 60
7177  70 170 270 370 170 70   -  - 370 70
7178  80 180 280 380 180 80   -  - 380 80
7179  90 190 290 390 190 90 290 90 390 90
7180}
7181do_execsql_test joinD-275 {
7182  SELECT t1.*, t2.*, t3.*, t4.*
7183  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7184  FULL JOIN t3 ON t1.c=t3.c
7185  RIGHT JOIN t4 ON t1.d=t4.d
7186  WHERE t4.z>0 AND t3.y>0
7187  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7188} {
7189  30 130 230 330 130 30 230 30 330 30
7190  60 160 260 360 160 60 260 60 360 60
7191  90 190 290 390 190 90 290 90 390 90
7192}
7193do_execsql_test joinD-276 {
7194  SELECT t1.*, t2.*, t3.*, t4.*
7195  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7196  FULL JOIN t3 ON t1.c=t3.c
7197  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7198  WHERE t2.x>0 AND t3.y>0
7199  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7200} {
7201  30 130 230 330 130 30 230 30 330 30
7202  60 160 260 360 160 60 260 60 360 60
7203  90 190 290 390 190 90 290 90 390 90
7204}
7205do_execsql_test joinD-277 {
7206  SELECT t1.*, t2.*, t3.*, t4.*
7207  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7208  FULL JOIN t3 ON t1.c=t3.c
7209  RIGHT JOIN t4 ON t1.d=t4.d
7210  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
7211  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7212} {
7213  30 130 230 330 130 30 230 30 330 30
7214  60 160 260 360 160 60 260 60 360 60
7215  90 190 290 390 190 90 290 90 390 90
7216}
7217do_execsql_test joinD-278 {
7218  SELECT t1.*, t2.*, t3.*, t4.*
7219  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
7220  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7221  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
7222  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7223} {
7224  10 110 210 310 110 10   -  - 310 10
7225  20 120 220 320 120 20   -  - 320 20
7226  30 130 230 330 130 30 230 30 330 30
7227  40 140 240 340 140 40   -  - 340 40
7228  50 150 250 350 150 50   -  - 350 50
7229  60 160 260 360 160 60 260 60 360 60
7230  70 170 270 370 170 70   -  - 370 70
7231  80 180 280 380 180 80   -  - 380 80
7232  90 190 290 390 190 90 290 90 390 90
7233   -   -   -   -   -  -   -  - 300  0
7234   -   -   -   -   -  -   -  - 305  5
7235   -   -   -   -   -  -   -  - 315 15
7236   -   -   -   -   -  -   -  - 325 25
7237   -   -   -   -   -  -   -  - 335 35
7238   -   -   -   -   -  -   -  - 345 45
7239   -   -   -   -   -  -   -  - 355 55
7240   -   -   -   -   -  -   -  - 365 65
7241   -   -   -   -   -  -   -  - 375 75
7242   -   -   -   -   -  -   -  - 385 85
7243   -   -   -   -   -  -   -  - 395 95
7244}
7245do_execsql_test joinD-279 {
7246  SELECT t1.*, t2.*, t3.*, t4.*
7247  FROM t1 INNER JOIN t2 ON t2.x>0
7248  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7249  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
7250  WHERE t1.b IS NOT DISTINCT FROM t2.b
7251  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7252} {
7253  10 110 210 310 110 10   -  - 310 10
7254  20 120 220 320 120 20   -  - 320 20
7255  30 130 230 330 130 30 230 30 330 30
7256  40 140 240 340 140 40   -  - 340 40
7257  50 150 250 350 150 50   -  - 350 50
7258  60 160 260 360 160 60 260 60 360 60
7259  70 170 270 370 170 70   -  - 370 70
7260  80 180 280 380 180 80   -  - 380 80
7261  90 190 290 390 190 90 290 90 390 90
7262   -   -   -   -   -  -   -  - 300  0
7263}
7264do_execsql_test joinD-280 {
7265  SELECT t1.*, t2.*, t3.*, t4.*
7266  FROM t1 INNER JOIN t2 ON t2.x>0
7267  FULL JOIN t3 ON t3.y>0
7268  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
7269  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
7270  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7271} {
7272  30 130 230 330 130 30 230 30 330 30
7273  60 160 260 360 160 60 260 60 360 60
7274  90 190 290 390 190 90 290 90 390 90
7275}
7276do_execsql_test joinD-281 {
7277  SELECT t1.*, t2.*, t3.*, t4.*
7278  FROM t1 INNER JOIN t2 ON t2.x>0
7279  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7280  RIGHT JOIN t4 ON t4.z>0
7281  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
7282  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7283} {
7284  10 110 210 310 110 10   -  - 310 10
7285  20 120 220 320 120 20   -  - 320 20
7286  30 130 230 330 130 30 230 30 330 30
7287  40 140 240 340 140 40   -  - 340 40
7288  50 150 250 350 150 50   -  - 350 50
7289  60 160 260 360 160 60 260 60 360 60
7290  70 170 270 370 170 70   -  - 370 70
7291  80 180 280 380 180 80   -  - 380 80
7292  90 190 290 390 190 90 290 90 390 90
7293}
7294do_execsql_test joinD-282 {
7295  SELECT t1.*, t2.*, t3.*, t4.*
7296  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
7297  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7298  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
7299  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7300} {
7301  10 110 210 310 110 10   -  - 310 10
7302  20 120 220 320 120 20   -  - 320 20
7303  30 130 230 330 130 30 230 30 330 30
7304  40 140 240 340 140 40   -  - 340 40
7305  50 150 250 350 150 50   -  - 350 50
7306  60 160 260 360 160 60 260 60 360 60
7307  70 170 270 370 170 70   -  - 370 70
7308  80 180 280 380 180 80   -  - 380 80
7309  90 190 290 390 190 90 290 90 390 90
7310   -   -   -   -   -  -   -  - 300  0
7311   -   -   -   -   -  -   -  - 305  5
7312   -   -   -   -   -  -   -  - 315 15
7313   -   -   -   -   -  -   -  - 325 25
7314   -   -   -   -   -  -   -  - 335 35
7315   -   -   -   -   -  -   -  - 345 45
7316   -   -   -   -   -  -   -  - 355 55
7317   -   -   -   -   -  -   -  - 365 65
7318   -   -   -   -   -  -   -  - 375 75
7319   -   -   -   -   -  -   -  - 385 85
7320   -   -   -   -   -  -   -  - 395 95
7321}
7322do_execsql_test joinD-283 {
7323  SELECT t1.*, t2.*, t3.*, t4.*
7324  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7325  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7326  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7327  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7328} {
7329   2 102 202 302 102  2   -  -   -  -
7330   4 104 204 304 104  4   -  -   -  -
7331   6 106 206 306 106  6 206  6   -  -
7332   8 108 208 308 108  8   -  -   -  -
7333  10 110 210 310 110 10   -  - 310 10
7334  12 112 212 312 112 12 212 12   -  -
7335  14 114 214 314 114 14   -  -   -  -
7336  16 116 216 316 116 16   -  -   -  -
7337  18 118 218 318 118 18 218 18   -  -
7338  20 120 220 320 120 20   -  - 320 20
7339  22 122 222 322 122 22   -  -   -  -
7340  24 124 224 324 124 24 224 24   -  -
7341  26 126 226 326 126 26   -  -   -  -
7342  28 128 228 328 128 28   -  -   -  -
7343  30 130 230 330 130 30 230 30 330 30
7344  32 132 232 332 132 32   -  -   -  -
7345  34 134 234 334 134 34   -  -   -  -
7346  36 136 236 336 136 36 236 36   -  -
7347  38 138 238 338 138 38   -  -   -  -
7348  40 140 240 340 140 40   -  - 340 40
7349  42 142 242 342 142 42 242 42   -  -
7350  44 144 244 344 144 44   -  -   -  -
7351  46 146 246 346 146 46   -  -   -  -
7352  48 148 248 348 148 48 248 48   -  -
7353  50 150 250 350 150 50   -  - 350 50
7354  52 152 252 352 152 52   -  -   -  -
7355  54 154 254 354 154 54 254 54   -  -
7356  56 156 256 356 156 56   -  -   -  -
7357  58 158 258 358 158 58   -  -   -  -
7358  60 160 260 360 160 60 260 60 360 60
7359  62 162 262 362 162 62   -  -   -  -
7360  64 164 264 364 164 64   -  -   -  -
7361  66 166 266 366 166 66 266 66   -  -
7362  68 168 268 368 168 68   -  -   -  -
7363  70 170 270 370 170 70   -  - 370 70
7364  72 172 272 372 172 72 272 72   -  -
7365  74 174 274 374 174 74   -  -   -  -
7366  76 176 276 376 176 76   -  -   -  -
7367  78 178 278 378 178 78 278 78   -  -
7368  80 180 280 380 180 80   -  - 380 80
7369  82 182 282 382 182 82   -  -   -  -
7370  84 184 284 384 184 84 284 84   -  -
7371  86 186 286 386 186 86   -  -   -  -
7372  88 188 288 388 188 88   -  -   -  -
7373  90 190 290 390 190 90 290 90 390 90
7374  92 192 292 392 192 92   -  -   -  -
7375  94 194 294 394 194 94   -  -   -  -
7376   -   -   -   -   -  - 200  0   -  -
7377   -   -   -   -   -  - 203  3   -  -
7378   -   -   -   -   -  - 209  9   -  -
7379   -   -   -   -   -  - 215 15   -  -
7380   -   -   -   -   -  - 221 21   -  -
7381   -   -   -   -   -  - 227 27   -  -
7382   -   -   -   -   -  - 233 33   -  -
7383   -   -   -   -   -  - 239 39   -  -
7384   -   -   -   -   -  - 245 45   -  -
7385   -   -   -   -   -  - 251 51   -  -
7386   -   -   -   -   -  - 257 57   -  -
7387   -   -   -   -   -  - 263 63   -  -
7388   -   -   -   -   -  - 269 69   -  -
7389   -   -   -   -   -  - 275 75   -  -
7390   -   -   -   -   -  - 281 81   -  -
7391   -   -   -   -   -  - 287 87   -  -
7392   -   -   -   -   -  - 293 93   -  -
7393   -   -   -   -   -  -   -  - 300  0
7394   -   -   -   -   -  -   -  - 305  5
7395   -   -   -   -   -  -   -  - 315 15
7396   -   -   -   -   -  -   -  - 325 25
7397   -   -   -   -   -  -   -  - 335 35
7398   -   -   -   -   -  -   -  - 345 45
7399   -   -   -   -   -  -   -  - 355 55
7400   -   -   -   -   -  -   -  - 365 65
7401   -   -   -   -   -  -   -  - 375 75
7402   -   -   -   -   -  -   -  - 385 85
7403   -   -   -   -   -  -   -  - 395 95
7404}
7405do_execsql_test joinD-284 {
7406  SELECT t1.*, t2.*, t3.*, t4.*
7407  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
7408  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7409  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7410  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7411} {
7412   2 102 202 302 102  2   -  -   -  -
7413   4 104 204 304 104  4   -  -   -  -
7414   6 106 206 306 106  6 206  6   -  -
7415   8 108 208 308 108  8   -  -   -  -
7416  10 110 210 310 110 10   -  - 310 10
7417  12 112 212 312 112 12 212 12   -  -
7418  14 114 214 314 114 14   -  -   -  -
7419  16 116 216 316 116 16   -  -   -  -
7420  18 118 218 318 118 18 218 18   -  -
7421  20 120 220 320 120 20   -  - 320 20
7422  22 122 222 322 122 22   -  -   -  -
7423  24 124 224 324 124 24 224 24   -  -
7424  26 126 226 326 126 26   -  -   -  -
7425  28 128 228 328 128 28   -  -   -  -
7426  30 130 230 330 130 30 230 30 330 30
7427  32 132 232 332 132 32   -  -   -  -
7428  34 134 234 334 134 34   -  -   -  -
7429  36 136 236 336 136 36 236 36   -  -
7430  38 138 238 338 138 38   -  -   -  -
7431  40 140 240 340 140 40   -  - 340 40
7432  42 142 242 342 142 42 242 42   -  -
7433  44 144 244 344 144 44   -  -   -  -
7434  46 146 246 346 146 46   -  -   -  -
7435  48 148 248 348 148 48 248 48   -  -
7436  50 150 250 350 150 50   -  - 350 50
7437  52 152 252 352 152 52   -  -   -  -
7438  54 154 254 354 154 54 254 54   -  -
7439  56 156 256 356 156 56   -  -   -  -
7440  58 158 258 358 158 58   -  -   -  -
7441  60 160 260 360 160 60 260 60 360 60
7442  62 162 262 362 162 62   -  -   -  -
7443  64 164 264 364 164 64   -  -   -  -
7444  66 166 266 366 166 66 266 66   -  -
7445  68 168 268 368 168 68   -  -   -  -
7446  70 170 270 370 170 70   -  - 370 70
7447  72 172 272 372 172 72 272 72   -  -
7448  74 174 274 374 174 74   -  -   -  -
7449  76 176 276 376 176 76   -  -   -  -
7450  78 178 278 378 178 78 278 78   -  -
7451  80 180 280 380 180 80   -  - 380 80
7452  82 182 282 382 182 82   -  -   -  -
7453  84 184 284 384 184 84 284 84   -  -
7454  86 186 286 386 186 86   -  -   -  -
7455  88 188 288 388 188 88   -  -   -  -
7456  90 190 290 390 190 90 290 90 390 90
7457  92 192 292 392 192 92   -  -   -  -
7458  94 194 294 394 194 94   -  -   -  -
7459   -   -   -   -   -  - 200  0   -  -
7460   -   -   -   -   -  - 203  3   -  -
7461   -   -   -   -   -  - 209  9   -  -
7462   -   -   -   -   -  - 215 15   -  -
7463   -   -   -   -   -  - 221 21   -  -
7464   -   -   -   -   -  - 227 27   -  -
7465   -   -   -   -   -  - 233 33   -  -
7466   -   -   -   -   -  - 239 39   -  -
7467   -   -   -   -   -  - 245 45   -  -
7468   -   -   -   -   -  - 251 51   -  -
7469   -   -   -   -   -  - 257 57   -  -
7470   -   -   -   -   -  - 263 63   -  -
7471   -   -   -   -   -  - 269 69   -  -
7472   -   -   -   -   -  - 275 75   -  -
7473   -   -   -   -   -  - 281 81   -  -
7474   -   -   -   -   -  - 287 87   -  -
7475   -   -   -   -   -  - 293 93   -  -
7476   -   -   -   -   -  -   -  - 300  0
7477   -   -   -   -   -  -   -  - 305  5
7478   -   -   -   -   -  -   -  - 315 15
7479   -   -   -   -   -  -   -  - 325 25
7480   -   -   -   -   -  -   -  - 335 35
7481   -   -   -   -   -  -   -  - 345 45
7482   -   -   -   -   -  -   -  - 355 55
7483   -   -   -   -   -  -   -  - 365 65
7484   -   -   -   -   -  -   -  - 375 75
7485   -   -   -   -   -  -   -  - 385 85
7486   -   -   -   -   -  -   -  - 395 95
7487}
7488do_execsql_test joinD-285 {
7489  SELECT t1.*, t2.*, t3.*, t4.*
7490  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7491  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7492  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7493  WHERE t2.x>0
7494  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7495} {
7496   2 102 202 302 102  2   -  -   -  -
7497   4 104 204 304 104  4   -  -   -  -
7498   6 106 206 306 106  6 206  6   -  -
7499   8 108 208 308 108  8   -  -   -  -
7500  10 110 210 310 110 10   -  - 310 10
7501  12 112 212 312 112 12 212 12   -  -
7502  14 114 214 314 114 14   -  -   -  -
7503  16 116 216 316 116 16   -  -   -  -
7504  18 118 218 318 118 18 218 18   -  -
7505  20 120 220 320 120 20   -  - 320 20
7506  22 122 222 322 122 22   -  -   -  -
7507  24 124 224 324 124 24 224 24   -  -
7508  26 126 226 326 126 26   -  -   -  -
7509  28 128 228 328 128 28   -  -   -  -
7510  30 130 230 330 130 30 230 30 330 30
7511  32 132 232 332 132 32   -  -   -  -
7512  34 134 234 334 134 34   -  -   -  -
7513  36 136 236 336 136 36 236 36   -  -
7514  38 138 238 338 138 38   -  -   -  -
7515  40 140 240 340 140 40   -  - 340 40
7516  42 142 242 342 142 42 242 42   -  -
7517  44 144 244 344 144 44   -  -   -  -
7518  46 146 246 346 146 46   -  -   -  -
7519  48 148 248 348 148 48 248 48   -  -
7520  50 150 250 350 150 50   -  - 350 50
7521  52 152 252 352 152 52   -  -   -  -
7522  54 154 254 354 154 54 254 54   -  -
7523  56 156 256 356 156 56   -  -   -  -
7524  58 158 258 358 158 58   -  -   -  -
7525  60 160 260 360 160 60 260 60 360 60
7526  62 162 262 362 162 62   -  -   -  -
7527  64 164 264 364 164 64   -  -   -  -
7528  66 166 266 366 166 66 266 66   -  -
7529  68 168 268 368 168 68   -  -   -  -
7530  70 170 270 370 170 70   -  - 370 70
7531  72 172 272 372 172 72 272 72   -  -
7532  74 174 274 374 174 74   -  -   -  -
7533  76 176 276 376 176 76   -  -   -  -
7534  78 178 278 378 178 78 278 78   -  -
7535  80 180 280 380 180 80   -  - 380 80
7536  82 182 282 382 182 82   -  -   -  -
7537  84 184 284 384 184 84 284 84   -  -
7538  86 186 286 386 186 86   -  -   -  -
7539  88 188 288 388 188 88   -  -   -  -
7540  90 190 290 390 190 90 290 90 390 90
7541  92 192 292 392 192 92   -  -   -  -
7542  94 194 294 394 194 94   -  -   -  -
7543}
7544do_execsql_test joinD-286 {
7545  SELECT t1.*, t2.*, t3.*, t4.*
7546  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7547  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7548  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7549  WHERE (t2.x>0 OR t2.x IS NULL)
7550  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7551} {
7552   2 102 202 302 102  2   -  -   -  -
7553   4 104 204 304 104  4   -  -   -  -
7554   6 106 206 306 106  6 206  6   -  -
7555   8 108 208 308 108  8   -  -   -  -
7556  10 110 210 310 110 10   -  - 310 10
7557  12 112 212 312 112 12 212 12   -  -
7558  14 114 214 314 114 14   -  -   -  -
7559  16 116 216 316 116 16   -  -   -  -
7560  18 118 218 318 118 18 218 18   -  -
7561  20 120 220 320 120 20   -  - 320 20
7562  22 122 222 322 122 22   -  -   -  -
7563  24 124 224 324 124 24 224 24   -  -
7564  26 126 226 326 126 26   -  -   -  -
7565  28 128 228 328 128 28   -  -   -  -
7566  30 130 230 330 130 30 230 30 330 30
7567  32 132 232 332 132 32   -  -   -  -
7568  34 134 234 334 134 34   -  -   -  -
7569  36 136 236 336 136 36 236 36   -  -
7570  38 138 238 338 138 38   -  -   -  -
7571  40 140 240 340 140 40   -  - 340 40
7572  42 142 242 342 142 42 242 42   -  -
7573  44 144 244 344 144 44   -  -   -  -
7574  46 146 246 346 146 46   -  -   -  -
7575  48 148 248 348 148 48 248 48   -  -
7576  50 150 250 350 150 50   -  - 350 50
7577  52 152 252 352 152 52   -  -   -  -
7578  54 154 254 354 154 54 254 54   -  -
7579  56 156 256 356 156 56   -  -   -  -
7580  58 158 258 358 158 58   -  -   -  -
7581  60 160 260 360 160 60 260 60 360 60
7582  62 162 262 362 162 62   -  -   -  -
7583  64 164 264 364 164 64   -  -   -  -
7584  66 166 266 366 166 66 266 66   -  -
7585  68 168 268 368 168 68   -  -   -  -
7586  70 170 270 370 170 70   -  - 370 70
7587  72 172 272 372 172 72 272 72   -  -
7588  74 174 274 374 174 74   -  -   -  -
7589  76 176 276 376 176 76   -  -   -  -
7590  78 178 278 378 178 78 278 78   -  -
7591  80 180 280 380 180 80   -  - 380 80
7592  82 182 282 382 182 82   -  -   -  -
7593  84 184 284 384 184 84 284 84   -  -
7594  86 186 286 386 186 86   -  -   -  -
7595  88 188 288 388 188 88   -  -   -  -
7596  90 190 290 390 190 90 290 90 390 90
7597  92 192 292 392 192 92   -  -   -  -
7598  94 194 294 394 194 94   -  -   -  -
7599   -   -   -   -   -  - 200  0   -  -
7600   -   -   -   -   -  - 203  3   -  -
7601   -   -   -   -   -  - 209  9   -  -
7602   -   -   -   -   -  - 215 15   -  -
7603   -   -   -   -   -  - 221 21   -  -
7604   -   -   -   -   -  - 227 27   -  -
7605   -   -   -   -   -  - 233 33   -  -
7606   -   -   -   -   -  - 239 39   -  -
7607   -   -   -   -   -  - 245 45   -  -
7608   -   -   -   -   -  - 251 51   -  -
7609   -   -   -   -   -  - 257 57   -  -
7610   -   -   -   -   -  - 263 63   -  -
7611   -   -   -   -   -  - 269 69   -  -
7612   -   -   -   -   -  - 275 75   -  -
7613   -   -   -   -   -  - 281 81   -  -
7614   -   -   -   -   -  - 287 87   -  -
7615   -   -   -   -   -  - 293 93   -  -
7616   -   -   -   -   -  -   -  - 300  0
7617   -   -   -   -   -  -   -  - 305  5
7618   -   -   -   -   -  -   -  - 315 15
7619   -   -   -   -   -  -   -  - 325 25
7620   -   -   -   -   -  -   -  - 335 35
7621   -   -   -   -   -  -   -  - 345 45
7622   -   -   -   -   -  -   -  - 355 55
7623   -   -   -   -   -  -   -  - 365 65
7624   -   -   -   -   -  -   -  - 375 75
7625   -   -   -   -   -  -   -  - 385 85
7626   -   -   -   -   -  -   -  - 395 95
7627}
7628do_execsql_test joinD-287 {
7629  SELECT t1.*, t2.*, t3.*, t4.*
7630  FROM t1 INNER JOIN t2 ON true
7631  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7632  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7633  WHERE t1.b=t2.b AND t2.x>0
7634  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7635} {
7636   2 102 202 302 102  2   -  -   -  -
7637   4 104 204 304 104  4   -  -   -  -
7638   6 106 206 306 106  6 206  6   -  -
7639   8 108 208 308 108  8   -  -   -  -
7640  10 110 210 310 110 10   -  - 310 10
7641  12 112 212 312 112 12 212 12   -  -
7642  14 114 214 314 114 14   -  -   -  -
7643  16 116 216 316 116 16   -  -   -  -
7644  18 118 218 318 118 18 218 18   -  -
7645  20 120 220 320 120 20   -  - 320 20
7646  22 122 222 322 122 22   -  -   -  -
7647  24 124 224 324 124 24 224 24   -  -
7648  26 126 226 326 126 26   -  -   -  -
7649  28 128 228 328 128 28   -  -   -  -
7650  30 130 230 330 130 30 230 30 330 30
7651  32 132 232 332 132 32   -  -   -  -
7652  34 134 234 334 134 34   -  -   -  -
7653  36 136 236 336 136 36 236 36   -  -
7654  38 138 238 338 138 38   -  -   -  -
7655  40 140 240 340 140 40   -  - 340 40
7656  42 142 242 342 142 42 242 42   -  -
7657  44 144 244 344 144 44   -  -   -  -
7658  46 146 246 346 146 46   -  -   -  -
7659  48 148 248 348 148 48 248 48   -  -
7660  50 150 250 350 150 50   -  - 350 50
7661  52 152 252 352 152 52   -  -   -  -
7662  54 154 254 354 154 54 254 54   -  -
7663  56 156 256 356 156 56   -  -   -  -
7664  58 158 258 358 158 58   -  -   -  -
7665  60 160 260 360 160 60 260 60 360 60
7666  62 162 262 362 162 62   -  -   -  -
7667  64 164 264 364 164 64   -  -   -  -
7668  66 166 266 366 166 66 266 66   -  -
7669  68 168 268 368 168 68   -  -   -  -
7670  70 170 270 370 170 70   -  - 370 70
7671  72 172 272 372 172 72 272 72   -  -
7672  74 174 274 374 174 74   -  -   -  -
7673  76 176 276 376 176 76   -  -   -  -
7674  78 178 278 378 178 78 278 78   -  -
7675  80 180 280 380 180 80   -  - 380 80
7676  82 182 282 382 182 82   -  -   -  -
7677  84 184 284 384 184 84 284 84   -  -
7678  86 186 286 386 186 86   -  -   -  -
7679  88 188 288 388 188 88   -  -   -  -
7680  90 190 290 390 190 90 290 90 390 90
7681  92 192 292 392 192 92   -  -   -  -
7682  94 194 294 394 194 94   -  -   -  -
7683}
7684do_execsql_test joinD-288 {
7685  SELECT t1.*, t2.*, t3.*, t4.*
7686  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7687  FULL JOIN t3 ON t1.c=t3.c
7688  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7689  WHERE t3.y>0
7690  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7691} {
7692   6 106 206 306 106  6 206  6   -  -
7693  12 112 212 312 112 12 212 12   -  -
7694  18 118 218 318 118 18 218 18   -  -
7695  24 124 224 324 124 24 224 24   -  -
7696  30 130 230 330 130 30 230 30 330 30
7697  36 136 236 336 136 36 236 36   -  -
7698  42 142 242 342 142 42 242 42   -  -
7699  48 148 248 348 148 48 248 48   -  -
7700  54 154 254 354 154 54 254 54   -  -
7701  60 160 260 360 160 60 260 60 360 60
7702  66 166 266 366 166 66 266 66   -  -
7703  72 172 272 372 172 72 272 72   -  -
7704  78 178 278 378 178 78 278 78   -  -
7705  84 184 284 384 184 84 284 84   -  -
7706  90 190 290 390 190 90 290 90 390 90
7707   -   -   -   -   -  - 203  3   -  -
7708   -   -   -   -   -  - 209  9   -  -
7709   -   -   -   -   -  - 215 15   -  -
7710   -   -   -   -   -  - 221 21   -  -
7711   -   -   -   -   -  - 227 27   -  -
7712   -   -   -   -   -  - 233 33   -  -
7713   -   -   -   -   -  - 239 39   -  -
7714   -   -   -   -   -  - 245 45   -  -
7715   -   -   -   -   -  - 251 51   -  -
7716   -   -   -   -   -  - 257 57   -  -
7717   -   -   -   -   -  - 263 63   -  -
7718   -   -   -   -   -  - 269 69   -  -
7719   -   -   -   -   -  - 275 75   -  -
7720   -   -   -   -   -  - 281 81   -  -
7721   -   -   -   -   -  - 287 87   -  -
7722   -   -   -   -   -  - 293 93   -  -
7723}
7724do_execsql_test joinD-289 {
7725  SELECT t1.*, t2.*, t3.*, t4.*
7726  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7727  FULL JOIN t3 ON t1.c=t3.c
7728  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7729  WHERE t3.y>0 OR t3.y IS NULL
7730  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7731} {
7732   2 102 202 302 102  2   -  -   -  -
7733   4 104 204 304 104  4   -  -   -  -
7734   6 106 206 306 106  6 206  6   -  -
7735   8 108 208 308 108  8   -  -   -  -
7736  10 110 210 310 110 10   -  - 310 10
7737  12 112 212 312 112 12 212 12   -  -
7738  14 114 214 314 114 14   -  -   -  -
7739  16 116 216 316 116 16   -  -   -  -
7740  18 118 218 318 118 18 218 18   -  -
7741  20 120 220 320 120 20   -  - 320 20
7742  22 122 222 322 122 22   -  -   -  -
7743  24 124 224 324 124 24 224 24   -  -
7744  26 126 226 326 126 26   -  -   -  -
7745  28 128 228 328 128 28   -  -   -  -
7746  30 130 230 330 130 30 230 30 330 30
7747  32 132 232 332 132 32   -  -   -  -
7748  34 134 234 334 134 34   -  -   -  -
7749  36 136 236 336 136 36 236 36   -  -
7750  38 138 238 338 138 38   -  -   -  -
7751  40 140 240 340 140 40   -  - 340 40
7752  42 142 242 342 142 42 242 42   -  -
7753  44 144 244 344 144 44   -  -   -  -
7754  46 146 246 346 146 46   -  -   -  -
7755  48 148 248 348 148 48 248 48   -  -
7756  50 150 250 350 150 50   -  - 350 50
7757  52 152 252 352 152 52   -  -   -  -
7758  54 154 254 354 154 54 254 54   -  -
7759  56 156 256 356 156 56   -  -   -  -
7760  58 158 258 358 158 58   -  -   -  -
7761  60 160 260 360 160 60 260 60 360 60
7762  62 162 262 362 162 62   -  -   -  -
7763  64 164 264 364 164 64   -  -   -  -
7764  66 166 266 366 166 66 266 66   -  -
7765  68 168 268 368 168 68   -  -   -  -
7766  70 170 270 370 170 70   -  - 370 70
7767  72 172 272 372 172 72 272 72   -  -
7768  74 174 274 374 174 74   -  -   -  -
7769  76 176 276 376 176 76   -  -   -  -
7770  78 178 278 378 178 78 278 78   -  -
7771  80 180 280 380 180 80   -  - 380 80
7772  82 182 282 382 182 82   -  -   -  -
7773  84 184 284 384 184 84 284 84   -  -
7774  86 186 286 386 186 86   -  -   -  -
7775  88 188 288 388 188 88   -  -   -  -
7776  90 190 290 390 190 90 290 90 390 90
7777  92 192 292 392 192 92   -  -   -  -
7778  94 194 294 394 194 94   -  -   -  -
7779   -   -   -   -   -  - 203  3   -  -
7780   -   -   -   -   -  - 209  9   -  -
7781   -   -   -   -   -  - 215 15   -  -
7782   -   -   -   -   -  - 221 21   -  -
7783   -   -   -   -   -  - 227 27   -  -
7784   -   -   -   -   -  - 233 33   -  -
7785   -   -   -   -   -  - 239 39   -  -
7786   -   -   -   -   -  - 245 45   -  -
7787   -   -   -   -   -  - 251 51   -  -
7788   -   -   -   -   -  - 257 57   -  -
7789   -   -   -   -   -  - 263 63   -  -
7790   -   -   -   -   -  - 269 69   -  -
7791   -   -   -   -   -  - 275 75   -  -
7792   -   -   -   -   -  - 281 81   -  -
7793   -   -   -   -   -  - 287 87   -  -
7794   -   -   -   -   -  - 293 93   -  -
7795   -   -   -   -   -  -   -  - 300  0
7796   -   -   -   -   -  -   -  - 305  5
7797   -   -   -   -   -  -   -  - 315 15
7798   -   -   -   -   -  -   -  - 325 25
7799   -   -   -   -   -  -   -  - 335 35
7800   -   -   -   -   -  -   -  - 345 45
7801   -   -   -   -   -  -   -  - 355 55
7802   -   -   -   -   -  -   -  - 365 65
7803   -   -   -   -   -  -   -  - 375 75
7804   -   -   -   -   -  -   -  - 385 85
7805   -   -   -   -   -  -   -  - 395 95
7806}
7807do_execsql_test joinD-290 {
7808  SELECT t1.*, t2.*, t3.*, t4.*
7809  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7810  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7811  FULL JOIN t4 ON t1.d=t4.d
7812  WHERE t4.z>0
7813  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7814} {
7815  10 110 210 310 110 10   -  - 310 10
7816  20 120 220 320 120 20   -  - 320 20
7817  30 130 230 330 130 30 230 30 330 30
7818  40 140 240 340 140 40   -  - 340 40
7819  50 150 250 350 150 50   -  - 350 50
7820  60 160 260 360 160 60 260 60 360 60
7821  70 170 270 370 170 70   -  - 370 70
7822  80 180 280 380 180 80   -  - 380 80
7823  90 190 290 390 190 90 290 90 390 90
7824   -   -   -   -   -  -   -  - 305  5
7825   -   -   -   -   -  -   -  - 315 15
7826   -   -   -   -   -  -   -  - 325 25
7827   -   -   -   -   -  -   -  - 335 35
7828   -   -   -   -   -  -   -  - 345 45
7829   -   -   -   -   -  -   -  - 355 55
7830   -   -   -   -   -  -   -  - 365 65
7831   -   -   -   -   -  -   -  - 375 75
7832   -   -   -   -   -  -   -  - 385 85
7833   -   -   -   -   -  -   -  - 395 95
7834}
7835do_execsql_test joinD-291 {
7836  SELECT t1.*, t2.*, t3.*, t4.*
7837  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7838  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7839  FULL JOIN t4 ON t1.d=t4.d
7840  WHERE t4.z IS NULL OR t4.z>0
7841  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7842} {
7843   2 102 202 302 102  2   -  -   -  -
7844   4 104 204 304 104  4   -  -   -  -
7845   6 106 206 306 106  6 206  6   -  -
7846   8 108 208 308 108  8   -  -   -  -
7847  10 110 210 310 110 10   -  - 310 10
7848  12 112 212 312 112 12 212 12   -  -
7849  14 114 214 314 114 14   -  -   -  -
7850  16 116 216 316 116 16   -  -   -  -
7851  18 118 218 318 118 18 218 18   -  -
7852  20 120 220 320 120 20   -  - 320 20
7853  22 122 222 322 122 22   -  -   -  -
7854  24 124 224 324 124 24 224 24   -  -
7855  26 126 226 326 126 26   -  -   -  -
7856  28 128 228 328 128 28   -  -   -  -
7857  30 130 230 330 130 30 230 30 330 30
7858  32 132 232 332 132 32   -  -   -  -
7859  34 134 234 334 134 34   -  -   -  -
7860  36 136 236 336 136 36 236 36   -  -
7861  38 138 238 338 138 38   -  -   -  -
7862  40 140 240 340 140 40   -  - 340 40
7863  42 142 242 342 142 42 242 42   -  -
7864  44 144 244 344 144 44   -  -   -  -
7865  46 146 246 346 146 46   -  -   -  -
7866  48 148 248 348 148 48 248 48   -  -
7867  50 150 250 350 150 50   -  - 350 50
7868  52 152 252 352 152 52   -  -   -  -
7869  54 154 254 354 154 54 254 54   -  -
7870  56 156 256 356 156 56   -  -   -  -
7871  58 158 258 358 158 58   -  -   -  -
7872  60 160 260 360 160 60 260 60 360 60
7873  62 162 262 362 162 62   -  -   -  -
7874  64 164 264 364 164 64   -  -   -  -
7875  66 166 266 366 166 66 266 66   -  -
7876  68 168 268 368 168 68   -  -   -  -
7877  70 170 270 370 170 70   -  - 370 70
7878  72 172 272 372 172 72 272 72   -  -
7879  74 174 274 374 174 74   -  -   -  -
7880  76 176 276 376 176 76   -  -   -  -
7881  78 178 278 378 178 78 278 78   -  -
7882  80 180 280 380 180 80   -  - 380 80
7883  82 182 282 382 182 82   -  -   -  -
7884  84 184 284 384 184 84 284 84   -  -
7885  86 186 286 386 186 86   -  -   -  -
7886  88 188 288 388 188 88   -  -   -  -
7887  90 190 290 390 190 90 290 90 390 90
7888  92 192 292 392 192 92   -  -   -  -
7889  94 194 294 394 194 94   -  -   -  -
7890   -   -   -   -   -  - 200  0   -  -
7891   -   -   -   -   -  - 203  3   -  -
7892   -   -   -   -   -  - 209  9   -  -
7893   -   -   -   -   -  - 215 15   -  -
7894   -   -   -   -   -  - 221 21   -  -
7895   -   -   -   -   -  - 227 27   -  -
7896   -   -   -   -   -  - 233 33   -  -
7897   -   -   -   -   -  - 239 39   -  -
7898   -   -   -   -   -  - 245 45   -  -
7899   -   -   -   -   -  - 251 51   -  -
7900   -   -   -   -   -  - 257 57   -  -
7901   -   -   -   -   -  - 263 63   -  -
7902   -   -   -   -   -  - 269 69   -  -
7903   -   -   -   -   -  - 275 75   -  -
7904   -   -   -   -   -  - 281 81   -  -
7905   -   -   -   -   -  - 287 87   -  -
7906   -   -   -   -   -  - 293 93   -  -
7907   -   -   -   -   -  -   -  - 305  5
7908   -   -   -   -   -  -   -  - 315 15
7909   -   -   -   -   -  -   -  - 325 25
7910   -   -   -   -   -  -   -  - 335 35
7911   -   -   -   -   -  -   -  - 345 45
7912   -   -   -   -   -  -   -  - 355 55
7913   -   -   -   -   -  -   -  - 365 65
7914   -   -   -   -   -  -   -  - 375 75
7915   -   -   -   -   -  -   -  - 385 85
7916   -   -   -   -   -  -   -  - 395 95
7917}
7918do_execsql_test joinD-292 {
7919  SELECT t1.*, t2.*, t3.*, t4.*
7920  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7921  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
7922  FULL JOIN t4 ON t1.d=t4.d
7923  WHERE t2.x>0 AND t4.z>0
7924  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7925} {
7926  10 110 210 310 110 10   -  - 310 10
7927  20 120 220 320 120 20   -  - 320 20
7928  30 130 230 330 130 30 230 30 330 30
7929  40 140 240 340 140 40   -  - 340 40
7930  50 150 250 350 150 50   -  - 350 50
7931  60 160 260 360 160 60 260 60 360 60
7932  70 170 270 370 170 70   -  - 370 70
7933  80 180 280 380 180 80   -  - 380 80
7934  90 190 290 390 190 90 290 90 390 90
7935}
7936do_execsql_test joinD-293 {
7937  SELECT t1.*, t2.*, t3.*, t4.*
7938  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
7939  FULL JOIN t3 ON t1.c=t3.c
7940  FULL JOIN t4 ON t1.d=t4.d
7941  WHERE t4.z>0 AND t3.y>0
7942  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7943} {
7944  30 130 230 330 130 30 230 30 330 30
7945  60 160 260 360 160 60 260 60 360 60
7946  90 190 290 390 190 90 290 90 390 90
7947}
7948do_execsql_test joinD-294 {
7949  SELECT t1.*, t2.*, t3.*, t4.*
7950  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7951  FULL JOIN t3 ON t1.c=t3.c
7952  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
7953  WHERE t2.x>0 AND t3.y>0
7954  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7955} {
7956   6 106 206 306 106  6 206  6   -  -
7957  12 112 212 312 112 12 212 12   -  -
7958  18 118 218 318 118 18 218 18   -  -
7959  24 124 224 324 124 24 224 24   -  -
7960  30 130 230 330 130 30 230 30 330 30
7961  36 136 236 336 136 36 236 36   -  -
7962  42 142 242 342 142 42 242 42   -  -
7963  48 148 248 348 148 48 248 48   -  -
7964  54 154 254 354 154 54 254 54   -  -
7965  60 160 260 360 160 60 260 60 360 60
7966  66 166 266 366 166 66 266 66   -  -
7967  72 172 272 372 172 72 272 72   -  -
7968  78 178 278 378 178 78 278 78   -  -
7969  84 184 284 384 184 84 284 84   -  -
7970  90 190 290 390 190 90 290 90 390 90
7971}
7972do_execsql_test joinD-295 {
7973  SELECT t1.*, t2.*, t3.*, t4.*
7974  FROM t1 INNER JOIN t2 ON t1.b=t2.b
7975  FULL JOIN t3 ON t1.c=t3.c
7976  FULL JOIN t4 ON t1.d=t4.d
7977  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
7978  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7979} {
7980  30 130 230 330 130 30 230 30 330 30
7981  60 160 260 360 160 60 260 60 360 60
7982  90 190 290 390 190 90 290 90 390 90
7983}
7984do_execsql_test joinD-296 {
7985  SELECT t1.*, t2.*, t3.*, t4.*
7986  FROM t1 INNER JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
7987  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
7988  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
7989  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
7990} {
7991   2 102 202 302 102  2   -  -   -  -
7992   4 104 204 304 104  4   -  -   -  -
7993   6 106 206 306 106  6 206  6   -  -
7994   8 108 208 308 108  8   -  -   -  -
7995  10 110 210 310 110 10   -  - 310 10
7996  12 112 212 312 112 12 212 12   -  -
7997  14 114 214 314 114 14   -  -   -  -
7998  16 116 216 316 116 16   -  -   -  -
7999  18 118 218 318 118 18 218 18   -  -
8000  20 120 220 320 120 20   -  - 320 20
8001  22 122 222 322 122 22   -  -   -  -
8002  24 124 224 324 124 24 224 24   -  -
8003  26 126 226 326 126 26   -  -   -  -
8004  28 128 228 328 128 28   -  -   -  -
8005  30 130 230 330 130 30 230 30 330 30
8006  32 132 232 332 132 32   -  -   -  -
8007  34 134 234 334 134 34   -  -   -  -
8008  36 136 236 336 136 36 236 36   -  -
8009  38 138 238 338 138 38   -  -   -  -
8010  40 140 240 340 140 40   -  - 340 40
8011  42 142 242 342 142 42 242 42   -  -
8012  44 144 244 344 144 44   -  -   -  -
8013  46 146 246 346 146 46   -  -   -  -
8014  48 148 248 348 148 48 248 48   -  -
8015  50 150 250 350 150 50   -  - 350 50
8016  52 152 252 352 152 52   -  -   -  -
8017  54 154 254 354 154 54 254 54   -  -
8018  56 156 256 356 156 56   -  -   -  -
8019  58 158 258 358 158 58   -  -   -  -
8020  60 160 260 360 160 60 260 60 360 60
8021  62 162 262 362 162 62   -  -   -  -
8022  64 164 264 364 164 64   -  -   -  -
8023  66 166 266 366 166 66 266 66   -  -
8024  68 168 268 368 168 68   -  -   -  -
8025  70 170 270 370 170 70   -  - 370 70
8026  72 172 272 372 172 72 272 72   -  -
8027  74 174 274 374 174 74   -  -   -  -
8028  76 176 276 376 176 76   -  -   -  -
8029  78 178 278 378 178 78 278 78   -  -
8030  80 180 280 380 180 80   -  - 380 80
8031  82 182 282 382 182 82   -  -   -  -
8032  84 184 284 384 184 84 284 84   -  -
8033  86 186 286 386 186 86   -  -   -  -
8034  88 188 288 388 188 88   -  -   -  -
8035  90 190 290 390 190 90 290 90 390 90
8036  92 192 292 392 192 92   -  -   -  -
8037  94 194 294 394 194 94   -  -   -  -
8038   -   -   -   -   -  - 200  0   -  -
8039   -   -   -   -   -  - 203  3   -  -
8040   -   -   -   -   -  - 209  9   -  -
8041   -   -   -   -   -  - 215 15   -  -
8042   -   -   -   -   -  - 221 21   -  -
8043   -   -   -   -   -  - 227 27   -  -
8044   -   -   -   -   -  - 233 33   -  -
8045   -   -   -   -   -  - 239 39   -  -
8046   -   -   -   -   -  - 245 45   -  -
8047   -   -   -   -   -  - 251 51   -  -
8048   -   -   -   -   -  - 257 57   -  -
8049   -   -   -   -   -  - 263 63   -  -
8050   -   -   -   -   -  - 269 69   -  -
8051   -   -   -   -   -  - 275 75   -  -
8052   -   -   -   -   -  - 281 81   -  -
8053   -   -   -   -   -  - 287 87   -  -
8054   -   -   -   -   -  - 293 93   -  -
8055   -   -   -   -   -  -   -  - 300  0
8056   -   -   -   -   -  -   -  - 305  5
8057   -   -   -   -   -  -   -  - 315 15
8058   -   -   -   -   -  -   -  - 325 25
8059   -   -   -   -   -  -   -  - 335 35
8060   -   -   -   -   -  -   -  - 345 45
8061   -   -   -   -   -  -   -  - 355 55
8062   -   -   -   -   -  -   -  - 365 65
8063   -   -   -   -   -  -   -  - 375 75
8064   -   -   -   -   -  -   -  - 385 85
8065   -   -   -   -   -  -   -  - 395 95
8066}
8067do_execsql_test joinD-297 {
8068  SELECT t1.*, t2.*, t3.*, t4.*
8069  FROM t1 INNER JOIN t2 ON t2.x>0
8070  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
8071  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
8072  WHERE t1.b IS NOT DISTINCT FROM t2.b
8073  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8074} {
8075   2 102 202 302 102  2   -  -   -  -
8076   4 104 204 304 104  4   -  -   -  -
8077   6 106 206 306 106  6 206  6   -  -
8078   8 108 208 308 108  8   -  -   -  -
8079  10 110 210 310 110 10   -  - 310 10
8080  12 112 212 312 112 12 212 12   -  -
8081  14 114 214 314 114 14   -  -   -  -
8082  16 116 216 316 116 16   -  -   -  -
8083  18 118 218 318 118 18 218 18   -  -
8084  20 120 220 320 120 20   -  - 320 20
8085  22 122 222 322 122 22   -  -   -  -
8086  24 124 224 324 124 24 224 24   -  -
8087  26 126 226 326 126 26   -  -   -  -
8088  28 128 228 328 128 28   -  -   -  -
8089  30 130 230 330 130 30 230 30 330 30
8090  32 132 232 332 132 32   -  -   -  -
8091  34 134 234 334 134 34   -  -   -  -
8092  36 136 236 336 136 36 236 36   -  -
8093  38 138 238 338 138 38   -  -   -  -
8094  40 140 240 340 140 40   -  - 340 40
8095  42 142 242 342 142 42 242 42   -  -
8096  44 144 244 344 144 44   -  -   -  -
8097  46 146 246 346 146 46   -  -   -  -
8098  48 148 248 348 148 48 248 48   -  -
8099  50 150 250 350 150 50   -  - 350 50
8100  52 152 252 352 152 52   -  -   -  -
8101  54 154 254 354 154 54 254 54   -  -
8102  56 156 256 356 156 56   -  -   -  -
8103  58 158 258 358 158 58   -  -   -  -
8104  60 160 260 360 160 60 260 60 360 60
8105  62 162 262 362 162 62   -  -   -  -
8106  64 164 264 364 164 64   -  -   -  -
8107  66 166 266 366 166 66 266 66   -  -
8108  68 168 268 368 168 68   -  -   -  -
8109  70 170 270 370 170 70   -  - 370 70
8110  72 172 272 372 172 72 272 72   -  -
8111  74 174 274 374 174 74   -  -   -  -
8112  76 176 276 376 176 76   -  -   -  -
8113  78 178 278 378 178 78 278 78   -  -
8114  80 180 280 380 180 80   -  - 380 80
8115  82 182 282 382 182 82   -  -   -  -
8116  84 184 284 384 184 84 284 84   -  -
8117  86 186 286 386 186 86   -  -   -  -
8118  88 188 288 388 188 88   -  -   -  -
8119  90 190 290 390 190 90 290 90 390 90
8120  92 192 292 392 192 92   -  -   -  -
8121  94 194 294 394 194 94   -  -   -  -
8122   -   -   -   -   -  - 200  0   -  -
8123   -   -   -   -   -  -   -  - 300  0
8124}
8125do_execsql_test joinD-298 {
8126  SELECT t1.*, t2.*, t3.*, t4.*
8127  FROM t1 INNER JOIN t2 ON t2.x>0
8128  FULL JOIN t3 ON t3.y>0
8129  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
8130  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
8131  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8132} {
8133   6 106 206 306 106  6 206  6   -  -
8134  12 112 212 312 112 12 212 12   -  -
8135  18 118 218 318 118 18 218 18   -  -
8136  24 124 224 324 124 24 224 24   -  -
8137  30 130 230 330 130 30 230 30 330 30
8138  36 136 236 336 136 36 236 36   -  -
8139  42 142 242 342 142 42 242 42   -  -
8140  48 148 248 348 148 48 248 48   -  -
8141  54 154 254 354 154 54 254 54   -  -
8142  60 160 260 360 160 60 260 60 360 60
8143  66 166 266 366 166 66 266 66   -  -
8144  72 172 272 372 172 72 272 72   -  -
8145  78 178 278 378 178 78 278 78   -  -
8146  84 184 284 384 184 84 284 84   -  -
8147  90 190 290 390 190 90 290 90 390 90
8148}
8149do_execsql_test joinD-299 {
8150  SELECT t1.*, t2.*, t3.*, t4.*
8151  FROM t1 INNER JOIN t2 ON t2.x>0
8152  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
8153  FULL JOIN t4 ON t4.z>0
8154  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
8155  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8156} {
8157  10 110 210 310 110 10   -  - 310 10
8158  20 120 220 320 120 20   -  - 320 20
8159  30 130 230 330 130 30 230 30 330 30
8160  40 140 240 340 140 40   -  - 340 40
8161  50 150 250 350 150 50   -  - 350 50
8162  60 160 260 360 160 60 260 60 360 60
8163  70 170 270 370 170 70   -  - 370 70
8164  80 180 280 380 180 80   -  - 380 80
8165  90 190 290 390 190 90 290 90 390 90
8166}
8167do_execsql_test joinD-300 {
8168  SELECT t1.*, t2.*, t3.*, t4.*
8169  FROM t1 INNER JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
8170  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
8171  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
8172  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8173} {
8174   2 102 202 302 102  2   -  -   -  -
8175   4 104 204 304 104  4   -  -   -  -
8176   6 106 206 306 106  6 206  6   -  -
8177   8 108 208 308 108  8   -  -   -  -
8178  10 110 210 310 110 10   -  - 310 10
8179  12 112 212 312 112 12 212 12   -  -
8180  14 114 214 314 114 14   -  -   -  -
8181  16 116 216 316 116 16   -  -   -  -
8182  18 118 218 318 118 18 218 18   -  -
8183  20 120 220 320 120 20   -  - 320 20
8184  22 122 222 322 122 22   -  -   -  -
8185  24 124 224 324 124 24 224 24   -  -
8186  26 126 226 326 126 26   -  -   -  -
8187  28 128 228 328 128 28   -  -   -  -
8188  30 130 230 330 130 30 230 30 330 30
8189  32 132 232 332 132 32   -  -   -  -
8190  34 134 234 334 134 34   -  -   -  -
8191  36 136 236 336 136 36 236 36   -  -
8192  38 138 238 338 138 38   -  -   -  -
8193  40 140 240 340 140 40   -  - 340 40
8194  42 142 242 342 142 42 242 42   -  -
8195  44 144 244 344 144 44   -  -   -  -
8196  46 146 246 346 146 46   -  -   -  -
8197  48 148 248 348 148 48 248 48   -  -
8198  50 150 250 350 150 50   -  - 350 50
8199  52 152 252 352 152 52   -  -   -  -
8200  54 154 254 354 154 54 254 54   -  -
8201  56 156 256 356 156 56   -  -   -  -
8202  58 158 258 358 158 58   -  -   -  -
8203  60 160 260 360 160 60 260 60 360 60
8204  62 162 262 362 162 62   -  -   -  -
8205  64 164 264 364 164 64   -  -   -  -
8206  66 166 266 366 166 66 266 66   -  -
8207  68 168 268 368 168 68   -  -   -  -
8208  70 170 270 370 170 70   -  - 370 70
8209  72 172 272 372 172 72 272 72   -  -
8210  74 174 274 374 174 74   -  -   -  -
8211  76 176 276 376 176 76   -  -   -  -
8212  78 178 278 378 178 78 278 78   -  -
8213  80 180 280 380 180 80   -  - 380 80
8214  82 182 282 382 182 82   -  -   -  -
8215  84 184 284 384 184 84 284 84   -  -
8216  86 186 286 386 186 86   -  -   -  -
8217  88 188 288 388 188 88   -  -   -  -
8218  90 190 290 390 190 90 290 90 390 90
8219  92 192 292 392 192 92   -  -   -  -
8220  94 194 294 394 194 94   -  -   -  -
8221   -   -   -   -   -  - 200  0   -  -
8222   -   -   -   -   -  - 203  3   -  -
8223   -   -   -   -   -  - 209  9   -  -
8224   -   -   -   -   -  - 215 15   -  -
8225   -   -   -   -   -  - 221 21   -  -
8226   -   -   -   -   -  - 227 27   -  -
8227   -   -   -   -   -  - 233 33   -  -
8228   -   -   -   -   -  - 239 39   -  -
8229   -   -   -   -   -  - 245 45   -  -
8230   -   -   -   -   -  - 251 51   -  -
8231   -   -   -   -   -  - 257 57   -  -
8232   -   -   -   -   -  - 263 63   -  -
8233   -   -   -   -   -  - 269 69   -  -
8234   -   -   -   -   -  - 275 75   -  -
8235   -   -   -   -   -  - 281 81   -  -
8236   -   -   -   -   -  - 287 87   -  -
8237   -   -   -   -   -  - 293 93   -  -
8238   -   -   -   -   -  -   -  - 300  0
8239   -   -   -   -   -  -   -  - 305  5
8240   -   -   -   -   -  -   -  - 315 15
8241   -   -   -   -   -  -   -  - 325 25
8242   -   -   -   -   -  -   -  - 335 35
8243   -   -   -   -   -  -   -  - 345 45
8244   -   -   -   -   -  -   -  - 355 55
8245   -   -   -   -   -  -   -  - 365 65
8246   -   -   -   -   -  -   -  - 375 75
8247   -   -   -   -   -  -   -  - 385 85
8248   -   -   -   -   -  -   -  - 395 95
8249}
8250do_execsql_test joinD-301 {
8251  SELECT t1.*, t2.*, t3.*, t4.*
8252  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8253  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8254  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8255  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8256} {
8257  15 115 215 315   -  - 215 15 315 15
8258  30 130 230 330 130 30 230 30 330 30
8259  45 145 245 345   -  - 245 45 345 45
8260  60 160 260 360 160 60 260 60 360 60
8261  75 175 275 375   -  - 275 75 375 75
8262  90 190 290 390 190 90 290 90 390 90
8263}
8264do_execsql_test joinD-302 {
8265  SELECT t1.*, t2.*, t3.*, t4.*
8266  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8267  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8268  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8269  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8270} {
8271  15 115 215 315   -  - 215 15 315 15
8272  30 130 230 330 130 30 230 30 330 30
8273  45 145 245 345   -  - 245 45 345 45
8274  60 160 260 360 160 60 260 60 360 60
8275  75 175 275 375   -  - 275 75 375 75
8276  90 190 290 390 190 90 290 90 390 90
8277}
8278do_execsql_test joinD-303 {
8279  SELECT t1.*, t2.*, t3.*, t4.*
8280  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8281  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8282  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8283  WHERE t2.x>0
8284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8285} {
8286  30 130 230 330 130 30 230 30 330 30
8287  60 160 260 360 160 60 260 60 360 60
8288  90 190 290 390 190 90 290 90 390 90
8289}
8290do_execsql_test joinD-304 {
8291  SELECT t1.*, t2.*, t3.*, t4.*
8292  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8293  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8294  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8295  WHERE (t2.x>0 OR t2.x IS NULL)
8296  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8297} {
8298  15 115 215 315   -  - 215 15 315 15
8299  30 130 230 330 130 30 230 30 330 30
8300  45 145 245 345   -  - 245 45 345 45
8301  60 160 260 360 160 60 260 60 360 60
8302  75 175 275 375   -  - 275 75 375 75
8303  90 190 290 390 190 90 290 90 390 90
8304}
8305do_execsql_test joinD-305 {
8306  SELECT t1.*, t2.*, t3.*, t4.*
8307  FROM t1 LEFT JOIN t2 ON true
8308  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8309  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8310  WHERE t1.b=t2.b AND t2.x>0
8311  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8312} {
8313  30 130 230 330 130 30 230 30 330 30
8314  60 160 260 360 160 60 260 60 360 60
8315  90 190 290 390 190 90 290 90 390 90
8316}
8317do_execsql_test joinD-306 {
8318  SELECT t1.*, t2.*, t3.*, t4.*
8319  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8320  INNER JOIN t3 ON t1.c=t3.c
8321  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8322  WHERE t3.y>0
8323  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8324} {
8325  15 115 215 315   -  - 215 15 315 15
8326  30 130 230 330 130 30 230 30 330 30
8327  45 145 245 345   -  - 245 45 345 45
8328  60 160 260 360 160 60 260 60 360 60
8329  75 175 275 375   -  - 275 75 375 75
8330  90 190 290 390 190 90 290 90 390 90
8331}
8332do_execsql_test joinD-307 {
8333  SELECT t1.*, t2.*, t3.*, t4.*
8334  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8335  INNER JOIN t3 ON t1.c=t3.c
8336  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8337  WHERE t3.y>0 OR t3.y IS NULL
8338  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8339} {
8340  15 115 215 315   -  - 215 15 315 15
8341  30 130 230 330 130 30 230 30 330 30
8342  45 145 245 345   -  - 245 45 345 45
8343  60 160 260 360 160 60 260 60 360 60
8344  75 175 275 375   -  - 275 75 375 75
8345  90 190 290 390 190 90 290 90 390 90
8346}
8347do_execsql_test joinD-308 {
8348  SELECT t1.*, t2.*, t3.*, t4.*
8349  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8350  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8351  INNER JOIN t4 ON t1.d=t4.d
8352  WHERE t4.z>0
8353  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8354} {
8355  15 115 215 315   -  - 215 15 315 15
8356  30 130 230 330 130 30 230 30 330 30
8357  45 145 245 345   -  - 245 45 345 45
8358  60 160 260 360 160 60 260 60 360 60
8359  75 175 275 375   -  - 275 75 375 75
8360  90 190 290 390 190 90 290 90 390 90
8361}
8362do_execsql_test joinD-309 {
8363  SELECT t1.*, t2.*, t3.*, t4.*
8364  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8365  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8366  INNER JOIN t4 ON t1.d=t4.d
8367  WHERE t4.z IS NULL OR t4.z>0
8368  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8369} {
8370  15 115 215 315   -  - 215 15 315 15
8371  30 130 230 330 130 30 230 30 330 30
8372  45 145 245 345   -  - 245 45 345 45
8373  60 160 260 360 160 60 260 60 360 60
8374  75 175 275 375   -  - 275 75 375 75
8375  90 190 290 390 190 90 290 90 390 90
8376}
8377do_execsql_test joinD-310 {
8378  SELECT t1.*, t2.*, t3.*, t4.*
8379  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8380  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8381  INNER JOIN t4 ON t1.d=t4.d
8382  WHERE t2.x>0 AND t4.z>0
8383  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8384} {
8385  30 130 230 330 130 30 230 30 330 30
8386  60 160 260 360 160 60 260 60 360 60
8387  90 190 290 390 190 90 290 90 390 90
8388}
8389do_execsql_test joinD-311 {
8390  SELECT t1.*, t2.*, t3.*, t4.*
8391  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8392  INNER JOIN t3 ON t1.c=t3.c
8393  INNER JOIN t4 ON t1.d=t4.d
8394  WHERE t4.z>0 AND t3.y>0
8395  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8396} {
8397  15 115 215 315   -  - 215 15 315 15
8398  30 130 230 330 130 30 230 30 330 30
8399  45 145 245 345   -  - 245 45 345 45
8400  60 160 260 360 160 60 260 60 360 60
8401  75 175 275 375   -  - 275 75 375 75
8402  90 190 290 390 190 90 290 90 390 90
8403}
8404do_execsql_test joinD-312 {
8405  SELECT t1.*, t2.*, t3.*, t4.*
8406  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8407  INNER JOIN t3 ON t1.c=t3.c
8408  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8409  WHERE t2.x>0 AND t3.y>0
8410  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8411} {
8412  30 130 230 330 130 30 230 30 330 30
8413  60 160 260 360 160 60 260 60 360 60
8414  90 190 290 390 190 90 290 90 390 90
8415}
8416do_execsql_test joinD-313 {
8417  SELECT t1.*, t2.*, t3.*, t4.*
8418  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8419  INNER JOIN t3 ON t1.c=t3.c
8420  INNER JOIN t4 ON t1.d=t4.d
8421  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
8422  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8423} {
8424  30 130 230 330 130 30 230 30 330 30
8425  60 160 260 360 160 60 260 60 360 60
8426  90 190 290 390 190 90 290 90 390 90
8427}
8428do_execsql_test joinD-314 {
8429  SELECT t1.*, t2.*, t3.*, t4.*
8430  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8431  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8432  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8433  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8434} {
8435  15 115 215 315   -  - 215 15 315 15
8436  30 130 230 330 130 30 230 30 330 30
8437  45 145 245 345   -  - 245 45 345 45
8438  60 160 260 360 160 60 260 60 360 60
8439  75 175 275 375   -  - 275 75 375 75
8440  90 190 290 390 190 90 290 90 390 90
8441}
8442do_execsql_test joinD-315 {
8443  SELECT t1.*, t2.*, t3.*, t4.*
8444  FROM t1 LEFT JOIN t2 ON t2.x>0
8445  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8446  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8447  WHERE t1.b IS NOT DISTINCT FROM t2.b
8448  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8449} {
8450  30 130 230 330 130 30 230 30 330 30
8451  60 160 260 360 160 60 260 60 360 60
8452  90 190 290 390 190 90 290 90 390 90
8453}
8454do_execsql_test joinD-316 {
8455  SELECT t1.*, t2.*, t3.*, t4.*
8456  FROM t1 LEFT JOIN t2 ON t2.x>0
8457  INNER JOIN t3 ON t3.y>0
8458  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8459  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
8460  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8461} {
8462  30 130 230 330 130 30 230 30 330 30
8463  60 160 260 360 160 60 260 60 360 60
8464  90 190 290 390 190 90 290 90 390 90
8465}
8466do_execsql_test joinD-317 {
8467  SELECT t1.*, t2.*, t3.*, t4.*
8468  FROM t1 LEFT JOIN t2 ON t2.x>0
8469  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8470  INNER JOIN t4 ON t4.z>0
8471  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
8472  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8473} {
8474  30 130 230 330 130 30 230 30 330 30
8475  60 160 260 360 160 60 260 60 360 60
8476  90 190 290 390 190 90 290 90 390 90
8477}
8478do_execsql_test joinD-318 {
8479  SELECT t1.*, t2.*, t3.*, t4.*
8480  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
8481  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8482  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8483  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8484} {
8485  15 115 215 315   -  - 215 15 315 15
8486  30 130 230 330 130 30 230 30 330 30
8487  45 145 245 345   -  - 245 45 345 45
8488  60 160 260 360 160 60 260 60 360 60
8489  75 175 275 375   -  - 275 75 375 75
8490  90 190 290 390 190 90 290 90 390 90
8491}
8492do_execsql_test joinD-319 {
8493  SELECT t1.*, t2.*, t3.*, t4.*
8494  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8495  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
8496  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
8497  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8498} {
8499  15 115 215 315   -  - 215 15 315 15
8500  30 130 230 330 130 30 230 30 330 30
8501  45 145 245 345   -  - 245 45 345 45
8502  60 160 260 360 160 60 260 60 360 60
8503  75 175 275 375   -  - 275 75 375 75
8504  90 190 290 390 190 90 290 90 390 90
8505}
8506do_execsql_test joinD-320 {
8507  SELECT t1.*, t2.*, t3.*, t4.*
8508  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8509  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8510  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8511  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8512} {
8513   3 103 203 303   -  - 203  3   -  -
8514   6 106 206 306 106  6 206  6   -  -
8515   9 109 209 309   -  - 209  9   -  -
8516  12 112 212 312 112 12 212 12   -  -
8517  15 115 215 315   -  - 215 15 315 15
8518  18 118 218 318 118 18 218 18   -  -
8519  21 121 221 321   -  - 221 21   -  -
8520  24 124 224 324 124 24 224 24   -  -
8521  27 127 227 327   -  - 227 27   -  -
8522  30 130 230 330 130 30 230 30 330 30
8523  33 133 233 333   -  - 233 33   -  -
8524  36 136 236 336 136 36 236 36   -  -
8525  39 139 239 339   -  - 239 39   -  -
8526  42 142 242 342 142 42 242 42   -  -
8527  45 145 245 345   -  - 245 45 345 45
8528  48 148 248 348 148 48 248 48   -  -
8529  51 151 251 351   -  - 251 51   -  -
8530  54 154 254 354 154 54 254 54   -  -
8531  57 157 257 357   -  - 257 57   -  -
8532  60 160 260 360 160 60 260 60 360 60
8533  63 163 263 363   -  - 263 63   -  -
8534  66 166 266 366 166 66 266 66   -  -
8535  69 169 269 369   -  - 269 69   -  -
8536  72 172 272 372 172 72 272 72   -  -
8537  75 175 275 375   -  - 275 75 375 75
8538  78 178 278 378 178 78 278 78   -  -
8539  81 181 281 381   -  - 281 81   -  -
8540  84 184 284 384 184 84 284 84   -  -
8541  87 187 287 387   -  - 287 87   -  -
8542  90 190 290 390 190 90 290 90 390 90
8543  93 193 293 393   -  - 293 93   -  -
8544}
8545do_execsql_test joinD-321 {
8546  SELECT t1.*, t2.*, t3.*, t4.*
8547  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8548  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8549  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8550  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8551} {
8552   3 103 203 303   -  - 203  3   -  -
8553   6 106 206 306 106  6 206  6   -  -
8554   9 109 209 309   -  - 209  9   -  -
8555  12 112 212 312 112 12 212 12   -  -
8556  15 115 215 315   -  - 215 15 315 15
8557  18 118 218 318 118 18 218 18   -  -
8558  21 121 221 321   -  - 221 21   -  -
8559  24 124 224 324 124 24 224 24   -  -
8560  27 127 227 327   -  - 227 27   -  -
8561  30 130 230 330 130 30 230 30 330 30
8562  33 133 233 333   -  - 233 33   -  -
8563  36 136 236 336 136 36 236 36   -  -
8564  39 139 239 339   -  - 239 39   -  -
8565  42 142 242 342 142 42 242 42   -  -
8566  45 145 245 345   -  - 245 45 345 45
8567  48 148 248 348 148 48 248 48   -  -
8568  51 151 251 351   -  - 251 51   -  -
8569  54 154 254 354 154 54 254 54   -  -
8570  57 157 257 357   -  - 257 57   -  -
8571  60 160 260 360 160 60 260 60 360 60
8572  63 163 263 363   -  - 263 63   -  -
8573  66 166 266 366 166 66 266 66   -  -
8574  69 169 269 369   -  - 269 69   -  -
8575  72 172 272 372 172 72 272 72   -  -
8576  75 175 275 375   -  - 275 75 375 75
8577  78 178 278 378 178 78 278 78   -  -
8578  81 181 281 381   -  - 281 81   -  -
8579  84 184 284 384 184 84 284 84   -  -
8580  87 187 287 387   -  - 287 87   -  -
8581  90 190 290 390 190 90 290 90 390 90
8582  93 193 293 393   -  - 293 93   -  -
8583}
8584do_execsql_test joinD-322 {
8585  SELECT t1.*, t2.*, t3.*, t4.*
8586  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8587  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8588  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8589  WHERE t2.x>0
8590  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8591} {
8592   6 106 206 306 106  6 206  6   -  -
8593  12 112 212 312 112 12 212 12   -  -
8594  18 118 218 318 118 18 218 18   -  -
8595  24 124 224 324 124 24 224 24   -  -
8596  30 130 230 330 130 30 230 30 330 30
8597  36 136 236 336 136 36 236 36   -  -
8598  42 142 242 342 142 42 242 42   -  -
8599  48 148 248 348 148 48 248 48   -  -
8600  54 154 254 354 154 54 254 54   -  -
8601  60 160 260 360 160 60 260 60 360 60
8602  66 166 266 366 166 66 266 66   -  -
8603  72 172 272 372 172 72 272 72   -  -
8604  78 178 278 378 178 78 278 78   -  -
8605  84 184 284 384 184 84 284 84   -  -
8606  90 190 290 390 190 90 290 90 390 90
8607}
8608do_execsql_test joinD-323 {
8609  SELECT t1.*, t2.*, t3.*, t4.*
8610  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8611  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8612  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8613  WHERE (t2.x>0 OR t2.x IS NULL)
8614  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8615} {
8616   3 103 203 303   -  - 203  3   -  -
8617   6 106 206 306 106  6 206  6   -  -
8618   9 109 209 309   -  - 209  9   -  -
8619  12 112 212 312 112 12 212 12   -  -
8620  15 115 215 315   -  - 215 15 315 15
8621  18 118 218 318 118 18 218 18   -  -
8622  21 121 221 321   -  - 221 21   -  -
8623  24 124 224 324 124 24 224 24   -  -
8624  27 127 227 327   -  - 227 27   -  -
8625  30 130 230 330 130 30 230 30 330 30
8626  33 133 233 333   -  - 233 33   -  -
8627  36 136 236 336 136 36 236 36   -  -
8628  39 139 239 339   -  - 239 39   -  -
8629  42 142 242 342 142 42 242 42   -  -
8630  45 145 245 345   -  - 245 45 345 45
8631  48 148 248 348 148 48 248 48   -  -
8632  51 151 251 351   -  - 251 51   -  -
8633  54 154 254 354 154 54 254 54   -  -
8634  57 157 257 357   -  - 257 57   -  -
8635  60 160 260 360 160 60 260 60 360 60
8636  63 163 263 363   -  - 263 63   -  -
8637  66 166 266 366 166 66 266 66   -  -
8638  69 169 269 369   -  - 269 69   -  -
8639  72 172 272 372 172 72 272 72   -  -
8640  75 175 275 375   -  - 275 75 375 75
8641  78 178 278 378 178 78 278 78   -  -
8642  81 181 281 381   -  - 281 81   -  -
8643  84 184 284 384 184 84 284 84   -  -
8644  87 187 287 387   -  - 287 87   -  -
8645  90 190 290 390 190 90 290 90 390 90
8646  93 193 293 393   -  - 293 93   -  -
8647}
8648do_execsql_test joinD-324 {
8649  SELECT t1.*, t2.*, t3.*, t4.*
8650  FROM t1 LEFT JOIN t2 ON true
8651  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8652  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8653  WHERE t1.b=t2.b AND t2.x>0
8654  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8655} {
8656   6 106 206 306 106  6 206  6   -  -
8657  12 112 212 312 112 12 212 12   -  -
8658  18 118 218 318 118 18 218 18   -  -
8659  24 124 224 324 124 24 224 24   -  -
8660  30 130 230 330 130 30 230 30 330 30
8661  36 136 236 336 136 36 236 36   -  -
8662  42 142 242 342 142 42 242 42   -  -
8663  48 148 248 348 148 48 248 48   -  -
8664  54 154 254 354 154 54 254 54   -  -
8665  60 160 260 360 160 60 260 60 360 60
8666  66 166 266 366 166 66 266 66   -  -
8667  72 172 272 372 172 72 272 72   -  -
8668  78 178 278 378 178 78 278 78   -  -
8669  84 184 284 384 184 84 284 84   -  -
8670  90 190 290 390 190 90 290 90 390 90
8671}
8672do_execsql_test joinD-325 {
8673  SELECT t1.*, t2.*, t3.*, t4.*
8674  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8675  INNER JOIN t3 ON t1.c=t3.c
8676  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8677  WHERE t3.y>0
8678  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8679} {
8680   3 103 203 303   -  - 203  3   -  -
8681   6 106 206 306 106  6 206  6   -  -
8682   9 109 209 309   -  - 209  9   -  -
8683  12 112 212 312 112 12 212 12   -  -
8684  15 115 215 315   -  - 215 15 315 15
8685  18 118 218 318 118 18 218 18   -  -
8686  21 121 221 321   -  - 221 21   -  -
8687  24 124 224 324 124 24 224 24   -  -
8688  27 127 227 327   -  - 227 27   -  -
8689  30 130 230 330 130 30 230 30 330 30
8690  33 133 233 333   -  - 233 33   -  -
8691  36 136 236 336 136 36 236 36   -  -
8692  39 139 239 339   -  - 239 39   -  -
8693  42 142 242 342 142 42 242 42   -  -
8694  45 145 245 345   -  - 245 45 345 45
8695  48 148 248 348 148 48 248 48   -  -
8696  51 151 251 351   -  - 251 51   -  -
8697  54 154 254 354 154 54 254 54   -  -
8698  57 157 257 357   -  - 257 57   -  -
8699  60 160 260 360 160 60 260 60 360 60
8700  63 163 263 363   -  - 263 63   -  -
8701  66 166 266 366 166 66 266 66   -  -
8702  69 169 269 369   -  - 269 69   -  -
8703  72 172 272 372 172 72 272 72   -  -
8704  75 175 275 375   -  - 275 75 375 75
8705  78 178 278 378 178 78 278 78   -  -
8706  81 181 281 381   -  - 281 81   -  -
8707  84 184 284 384 184 84 284 84   -  -
8708  87 187 287 387   -  - 287 87   -  -
8709  90 190 290 390 190 90 290 90 390 90
8710  93 193 293 393   -  - 293 93   -  -
8711}
8712do_execsql_test joinD-326 {
8713  SELECT t1.*, t2.*, t3.*, t4.*
8714  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8715  INNER JOIN t3 ON t1.c=t3.c
8716  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8717  WHERE t3.y>0 OR t3.y IS NULL
8718  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8719} {
8720   3 103 203 303   -  - 203  3   -  -
8721   6 106 206 306 106  6 206  6   -  -
8722   9 109 209 309   -  - 209  9   -  -
8723  12 112 212 312 112 12 212 12   -  -
8724  15 115 215 315   -  - 215 15 315 15
8725  18 118 218 318 118 18 218 18   -  -
8726  21 121 221 321   -  - 221 21   -  -
8727  24 124 224 324 124 24 224 24   -  -
8728  27 127 227 327   -  - 227 27   -  -
8729  30 130 230 330 130 30 230 30 330 30
8730  33 133 233 333   -  - 233 33   -  -
8731  36 136 236 336 136 36 236 36   -  -
8732  39 139 239 339   -  - 239 39   -  -
8733  42 142 242 342 142 42 242 42   -  -
8734  45 145 245 345   -  - 245 45 345 45
8735  48 148 248 348 148 48 248 48   -  -
8736  51 151 251 351   -  - 251 51   -  -
8737  54 154 254 354 154 54 254 54   -  -
8738  57 157 257 357   -  - 257 57   -  -
8739  60 160 260 360 160 60 260 60 360 60
8740  63 163 263 363   -  - 263 63   -  -
8741  66 166 266 366 166 66 266 66   -  -
8742  69 169 269 369   -  - 269 69   -  -
8743  72 172 272 372 172 72 272 72   -  -
8744  75 175 275 375   -  - 275 75 375 75
8745  78 178 278 378 178 78 278 78   -  -
8746  81 181 281 381   -  - 281 81   -  -
8747  84 184 284 384 184 84 284 84   -  -
8748  87 187 287 387   -  - 287 87   -  -
8749  90 190 290 390 190 90 290 90 390 90
8750  93 193 293 393   -  - 293 93   -  -
8751}
8752do_execsql_test joinD-327 {
8753  SELECT t1.*, t2.*, t3.*, t4.*
8754  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8755  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8756  LEFT JOIN t4 ON t1.d=t4.d
8757  WHERE t4.z>0
8758  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8759} {
8760  15 115 215 315   -  - 215 15 315 15
8761  30 130 230 330 130 30 230 30 330 30
8762  45 145 245 345   -  - 245 45 345 45
8763  60 160 260 360 160 60 260 60 360 60
8764  75 175 275 375   -  - 275 75 375 75
8765  90 190 290 390 190 90 290 90 390 90
8766}
8767do_execsql_test joinD-328 {
8768  SELECT t1.*, t2.*, t3.*, t4.*
8769  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8770  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8771  LEFT JOIN t4 ON t1.d=t4.d
8772  WHERE t4.z IS NULL OR t4.z>0
8773  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8774} {
8775   3 103 203 303   -  - 203  3   -  -
8776   6 106 206 306 106  6 206  6   -  -
8777   9 109 209 309   -  - 209  9   -  -
8778  12 112 212 312 112 12 212 12   -  -
8779  15 115 215 315   -  - 215 15 315 15
8780  18 118 218 318 118 18 218 18   -  -
8781  21 121 221 321   -  - 221 21   -  -
8782  24 124 224 324 124 24 224 24   -  -
8783  27 127 227 327   -  - 227 27   -  -
8784  30 130 230 330 130 30 230 30 330 30
8785  33 133 233 333   -  - 233 33   -  -
8786  36 136 236 336 136 36 236 36   -  -
8787  39 139 239 339   -  - 239 39   -  -
8788  42 142 242 342 142 42 242 42   -  -
8789  45 145 245 345   -  - 245 45 345 45
8790  48 148 248 348 148 48 248 48   -  -
8791  51 151 251 351   -  - 251 51   -  -
8792  54 154 254 354 154 54 254 54   -  -
8793  57 157 257 357   -  - 257 57   -  -
8794  60 160 260 360 160 60 260 60 360 60
8795  63 163 263 363   -  - 263 63   -  -
8796  66 166 266 366 166 66 266 66   -  -
8797  69 169 269 369   -  - 269 69   -  -
8798  72 172 272 372 172 72 272 72   -  -
8799  75 175 275 375   -  - 275 75 375 75
8800  78 178 278 378 178 78 278 78   -  -
8801  81 181 281 381   -  - 281 81   -  -
8802  84 184 284 384 184 84 284 84   -  -
8803  87 187 287 387   -  - 287 87   -  -
8804  90 190 290 390 190 90 290 90 390 90
8805  93 193 293 393   -  - 293 93   -  -
8806}
8807do_execsql_test joinD-329 {
8808  SELECT t1.*, t2.*, t3.*, t4.*
8809  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8810  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8811  LEFT JOIN t4 ON t1.d=t4.d
8812  WHERE t2.x>0 AND t4.z>0
8813  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8814} {
8815  30 130 230 330 130 30 230 30 330 30
8816  60 160 260 360 160 60 260 60 360 60
8817  90 190 290 390 190 90 290 90 390 90
8818}
8819do_execsql_test joinD-330 {
8820  SELECT t1.*, t2.*, t3.*, t4.*
8821  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
8822  INNER JOIN t3 ON t1.c=t3.c
8823  LEFT JOIN t4 ON t1.d=t4.d
8824  WHERE t4.z>0 AND t3.y>0
8825  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8826} {
8827  15 115 215 315   -  - 215 15 315 15
8828  30 130 230 330 130 30 230 30 330 30
8829  45 145 245 345   -  - 245 45 345 45
8830  60 160 260 360 160 60 260 60 360 60
8831  75 175 275 375   -  - 275 75 375 75
8832  90 190 290 390 190 90 290 90 390 90
8833}
8834do_execsql_test joinD-331 {
8835  SELECT t1.*, t2.*, t3.*, t4.*
8836  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8837  INNER JOIN t3 ON t1.c=t3.c
8838  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8839  WHERE t2.x>0 AND t3.y>0
8840  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8841} {
8842   6 106 206 306 106  6 206  6   -  -
8843  12 112 212 312 112 12 212 12   -  -
8844  18 118 218 318 118 18 218 18   -  -
8845  24 124 224 324 124 24 224 24   -  -
8846  30 130 230 330 130 30 230 30 330 30
8847  36 136 236 336 136 36 236 36   -  -
8848  42 142 242 342 142 42 242 42   -  -
8849  48 148 248 348 148 48 248 48   -  -
8850  54 154 254 354 154 54 254 54   -  -
8851  60 160 260 360 160 60 260 60 360 60
8852  66 166 266 366 166 66 266 66   -  -
8853  72 172 272 372 172 72 272 72   -  -
8854  78 178 278 378 178 78 278 78   -  -
8855  84 184 284 384 184 84 284 84   -  -
8856  90 190 290 390 190 90 290 90 390 90
8857}
8858do_execsql_test joinD-332 {
8859  SELECT t1.*, t2.*, t3.*, t4.*
8860  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
8861  INNER JOIN t3 ON t1.c=t3.c
8862  LEFT JOIN t4 ON t1.d=t4.d
8863  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
8864  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8865} {
8866  30 130 230 330 130 30 230 30 330 30
8867  60 160 260 360 160 60 260 60 360 60
8868  90 190 290 390 190 90 290 90 390 90
8869}
8870do_execsql_test joinD-333 {
8871  SELECT t1.*, t2.*, t3.*, t4.*
8872  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
8873  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8874  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8875  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8876} {
8877   3 103 203 303   -  - 203  3   -  -
8878   6 106 206 306 106  6 206  6   -  -
8879   9 109 209 309   -  - 209  9   -  -
8880  12 112 212 312 112 12 212 12   -  -
8881  15 115 215 315   -  - 215 15 315 15
8882  18 118 218 318 118 18 218 18   -  -
8883  21 121 221 321   -  - 221 21   -  -
8884  24 124 224 324 124 24 224 24   -  -
8885  27 127 227 327   -  - 227 27   -  -
8886  30 130 230 330 130 30 230 30 330 30
8887  33 133 233 333   -  - 233 33   -  -
8888  36 136 236 336 136 36 236 36   -  -
8889  39 139 239 339   -  - 239 39   -  -
8890  42 142 242 342 142 42 242 42   -  -
8891  45 145 245 345   -  - 245 45 345 45
8892  48 148 248 348 148 48 248 48   -  -
8893  51 151 251 351   -  - 251 51   -  -
8894  54 154 254 354 154 54 254 54   -  -
8895  57 157 257 357   -  - 257 57   -  -
8896  60 160 260 360 160 60 260 60 360 60
8897  63 163 263 363   -  - 263 63   -  -
8898  66 166 266 366 166 66 266 66   -  -
8899  69 169 269 369   -  - 269 69   -  -
8900  72 172 272 372 172 72 272 72   -  -
8901  75 175 275 375   -  - 275 75 375 75
8902  78 178 278 378 178 78 278 78   -  -
8903  81 181 281 381   -  - 281 81   -  -
8904  84 184 284 384 184 84 284 84   -  -
8905  87 187 287 387   -  - 287 87   -  -
8906  90 190 290 390 190 90 290 90 390 90
8907  93 193 293 393   -  - 293 93   -  -
8908}
8909do_execsql_test joinD-334 {
8910  SELECT t1.*, t2.*, t3.*, t4.*
8911  FROM t1 LEFT JOIN t2 ON t2.x>0
8912  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8913  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8914  WHERE t1.b IS NOT DISTINCT FROM t2.b
8915  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8916} {
8917   6 106 206 306 106  6 206  6   -  -
8918  12 112 212 312 112 12 212 12   -  -
8919  18 118 218 318 118 18 218 18   -  -
8920  24 124 224 324 124 24 224 24   -  -
8921  30 130 230 330 130 30 230 30 330 30
8922  36 136 236 336 136 36 236 36   -  -
8923  42 142 242 342 142 42 242 42   -  -
8924  48 148 248 348 148 48 248 48   -  -
8925  54 154 254 354 154 54 254 54   -  -
8926  60 160 260 360 160 60 260 60 360 60
8927  66 166 266 366 166 66 266 66   -  -
8928  72 172 272 372 172 72 272 72   -  -
8929  78 178 278 378 178 78 278 78   -  -
8930  84 184 284 384 184 84 284 84   -  -
8931  90 190 290 390 190 90 290 90 390 90
8932}
8933do_execsql_test joinD-335 {
8934  SELECT t1.*, t2.*, t3.*, t4.*
8935  FROM t1 LEFT JOIN t2 ON t2.x>0
8936  INNER JOIN t3 ON t3.y>0
8937  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
8938  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
8939  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8940} {
8941   6 106 206 306 106  6 206  6   -  -
8942  12 112 212 312 112 12 212 12   -  -
8943  18 118 218 318 118 18 218 18   -  -
8944  24 124 224 324 124 24 224 24   -  -
8945  30 130 230 330 130 30 230 30 330 30
8946  36 136 236 336 136 36 236 36   -  -
8947  42 142 242 342 142 42 242 42   -  -
8948  48 148 248 348 148 48 248 48   -  -
8949  54 154 254 354 154 54 254 54   -  -
8950  60 160 260 360 160 60 260 60 360 60
8951  66 166 266 366 166 66 266 66   -  -
8952  72 172 272 372 172 72 272 72   -  -
8953  78 178 278 378 178 78 278 78   -  -
8954  84 184 284 384 184 84 284 84   -  -
8955  90 190 290 390 190 90 290 90 390 90
8956}
8957do_execsql_test joinD-336 {
8958  SELECT t1.*, t2.*, t3.*, t4.*
8959  FROM t1 LEFT JOIN t2 ON t2.x>0
8960  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
8961  LEFT JOIN t4 ON t4.z>0
8962  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
8963  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8964} {
8965  30 130 230 330 130 30 230 30 330 30
8966  60 160 260 360 160 60 260 60 360 60
8967  90 190 290 390 190 90 290 90 390 90
8968}
8969do_execsql_test joinD-337 {
8970  SELECT t1.*, t2.*, t3.*, t4.*
8971  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
8972  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
8973  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
8974  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
8975} {
8976   3 103 203 303   -  - 203  3   -  -
8977   6 106 206 306 106  6 206  6   -  -
8978   9 109 209 309   -  - 209  9   -  -
8979  12 112 212 312 112 12 212 12   -  -
8980  15 115 215 315   -  - 215 15 315 15
8981  18 118 218 318 118 18 218 18   -  -
8982  21 121 221 321   -  - 221 21   -  -
8983  24 124 224 324 124 24 224 24   -  -
8984  27 127 227 327   -  - 227 27   -  -
8985  30 130 230 330 130 30 230 30 330 30
8986  33 133 233 333   -  - 233 33   -  -
8987  36 136 236 336 136 36 236 36   -  -
8988  39 139 239 339   -  - 239 39   -  -
8989  42 142 242 342 142 42 242 42   -  -
8990  45 145 245 345   -  - 245 45 345 45
8991  48 148 248 348 148 48 248 48   -  -
8992  51 151 251 351   -  - 251 51   -  -
8993  54 154 254 354 154 54 254 54   -  -
8994  57 157 257 357   -  - 257 57   -  -
8995  60 160 260 360 160 60 260 60 360 60
8996  63 163 263 363   -  - 263 63   -  -
8997  66 166 266 366 166 66 266 66   -  -
8998  69 169 269 369   -  - 269 69   -  -
8999  72 172 272 372 172 72 272 72   -  -
9000  75 175 275 375   -  - 275 75 375 75
9001  78 178 278 378 178 78 278 78   -  -
9002  81 181 281 381   -  - 281 81   -  -
9003  84 184 284 384 184 84 284 84   -  -
9004  87 187 287 387   -  - 287 87   -  -
9005  90 190 290 390 190 90 290 90 390 90
9006  93 193 293 393   -  - 293 93   -  -
9007}
9008do_execsql_test joinD-338 {
9009  SELECT t1.*, t2.*, t3.*, t4.*
9010  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9011  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
9012  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
9013  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9014} {
9015   3 103 203 303   -  - 203  3   -  -
9016   6 106 206 306 106  6 206  6   -  -
9017   9 109 209 309   -  - 209  9   -  -
9018  12 112 212 312 112 12 212 12   -  -
9019  15 115 215 315   -  - 215 15 315 15
9020  18 118 218 318 118 18 218 18   -  -
9021  21 121 221 321   -  - 221 21   -  -
9022  24 124 224 324 124 24 224 24   -  -
9023  27 127 227 327   -  - 227 27   -  -
9024  30 130 230 330 130 30 230 30 330 30
9025  33 133 233 333   -  - 233 33   -  -
9026  36 136 236 336 136 36 236 36   -  -
9027  39 139 239 339   -  - 239 39   -  -
9028  42 142 242 342 142 42 242 42   -  -
9029  45 145 245 345   -  - 245 45 345 45
9030  48 148 248 348 148 48 248 48   -  -
9031  51 151 251 351   -  - 251 51   -  -
9032  54 154 254 354 154 54 254 54   -  -
9033  57 157 257 357   -  - 257 57   -  -
9034  60 160 260 360 160 60 260 60 360 60
9035  63 163 263 363   -  - 263 63   -  -
9036  66 166 266 366 166 66 266 66   -  -
9037  69 169 269 369   -  - 269 69   -  -
9038  72 172 272 372 172 72 272 72   -  -
9039  75 175 275 375   -  - 275 75 375 75
9040  78 178 278 378 178 78 278 78   -  -
9041  81 181 281 381   -  - 281 81   -  -
9042  84 184 284 384 184 84 284 84   -  -
9043  87 187 287 387   -  - 287 87   -  -
9044  90 190 290 390 190 90 290 90 390 90
9045  93 193 293 393   -  - 293 93   -  -
9046}
9047do_execsql_test joinD-339 {
9048  SELECT t1.*, t2.*, t3.*, t4.*
9049  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9050  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9051  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9052  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9053} {
9054  15 115 215 315   -  - 215 15 315 15
9055  30 130 230 330 130 30 230 30 330 30
9056  45 145 245 345   -  - 245 45 345 45
9057  60 160 260 360 160 60 260 60 360 60
9058  75 175 275 375   -  - 275 75 375 75
9059  90 190 290 390 190 90 290 90 390 90
9060   -   -   -   -   -  -   -  - 300  0
9061   -   -   -   -   -  -   -  - 305  5
9062   -   -   -   -   -  -   -  - 310 10
9063   -   -   -   -   -  -   -  - 320 20
9064   -   -   -   -   -  -   -  - 325 25
9065   -   -   -   -   -  -   -  - 335 35
9066   -   -   -   -   -  -   -  - 340 40
9067   -   -   -   -   -  -   -  - 350 50
9068   -   -   -   -   -  -   -  - 355 55
9069   -   -   -   -   -  -   -  - 365 65
9070   -   -   -   -   -  -   -  - 370 70
9071   -   -   -   -   -  -   -  - 380 80
9072   -   -   -   -   -  -   -  - 385 85
9073   -   -   -   -   -  -   -  - 395 95
9074}
9075do_execsql_test joinD-340 {
9076  SELECT t1.*, t2.*, t3.*, t4.*
9077  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9078  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9079  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9080  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9081} {
9082  15 115 215 315   -  - 215 15 315 15
9083  30 130 230 330 130 30 230 30 330 30
9084  45 145 245 345   -  - 245 45 345 45
9085  60 160 260 360 160 60 260 60 360 60
9086  75 175 275 375   -  - 275 75 375 75
9087  90 190 290 390 190 90 290 90 390 90
9088   -   -   -   -   -  -   -  - 300  0
9089   -   -   -   -   -  -   -  - 305  5
9090   -   -   -   -   -  -   -  - 310 10
9091   -   -   -   -   -  -   -  - 320 20
9092   -   -   -   -   -  -   -  - 325 25
9093   -   -   -   -   -  -   -  - 335 35
9094   -   -   -   -   -  -   -  - 340 40
9095   -   -   -   -   -  -   -  - 350 50
9096   -   -   -   -   -  -   -  - 355 55
9097   -   -   -   -   -  -   -  - 365 65
9098   -   -   -   -   -  -   -  - 370 70
9099   -   -   -   -   -  -   -  - 380 80
9100   -   -   -   -   -  -   -  - 385 85
9101   -   -   -   -   -  -   -  - 395 95
9102}
9103do_execsql_test joinD-341 {
9104  SELECT t1.*, t2.*, t3.*, t4.*
9105  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9106  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9107  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9108  WHERE t2.x>0
9109  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9110} {
9111  30 130 230 330 130 30 230 30 330 30
9112  60 160 260 360 160 60 260 60 360 60
9113  90 190 290 390 190 90 290 90 390 90
9114}
9115do_execsql_test joinD-342 {
9116  SELECT t1.*, t2.*, t3.*, t4.*
9117  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9118  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9119  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9120  WHERE (t2.x>0 OR t2.x IS NULL)
9121  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9122} {
9123  15 115 215 315   -  - 215 15 315 15
9124  30 130 230 330 130 30 230 30 330 30
9125  45 145 245 345   -  - 245 45 345 45
9126  60 160 260 360 160 60 260 60 360 60
9127  75 175 275 375   -  - 275 75 375 75
9128  90 190 290 390 190 90 290 90 390 90
9129   -   -   -   -   -  -   -  - 300  0
9130   -   -   -   -   -  -   -  - 305  5
9131   -   -   -   -   -  -   -  - 310 10
9132   -   -   -   -   -  -   -  - 320 20
9133   -   -   -   -   -  -   -  - 325 25
9134   -   -   -   -   -  -   -  - 335 35
9135   -   -   -   -   -  -   -  - 340 40
9136   -   -   -   -   -  -   -  - 350 50
9137   -   -   -   -   -  -   -  - 355 55
9138   -   -   -   -   -  -   -  - 365 65
9139   -   -   -   -   -  -   -  - 370 70
9140   -   -   -   -   -  -   -  - 380 80
9141   -   -   -   -   -  -   -  - 385 85
9142   -   -   -   -   -  -   -  - 395 95
9143}
9144do_execsql_test joinD-343 {
9145  SELECT t1.*, t2.*, t3.*, t4.*
9146  FROM t1 LEFT JOIN t2 ON true
9147  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9148  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9149  WHERE t1.b=t2.b AND t2.x>0
9150  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9151} {
9152  30 130 230 330 130 30 230 30 330 30
9153  60 160 260 360 160 60 260 60 360 60
9154  90 190 290 390 190 90 290 90 390 90
9155}
9156do_execsql_test joinD-344 {
9157  SELECT t1.*, t2.*, t3.*, t4.*
9158  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9159  INNER JOIN t3 ON t1.c=t3.c
9160  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9161  WHERE t3.y>0
9162  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9163} {
9164  15 115 215 315   -  - 215 15 315 15
9165  30 130 230 330 130 30 230 30 330 30
9166  45 145 245 345   -  - 245 45 345 45
9167  60 160 260 360 160 60 260 60 360 60
9168  75 175 275 375   -  - 275 75 375 75
9169  90 190 290 390 190 90 290 90 390 90
9170}
9171do_execsql_test joinD-345 {
9172  SELECT t1.*, t2.*, t3.*, t4.*
9173  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9174  INNER JOIN t3 ON t1.c=t3.c
9175  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9176  WHERE t3.y>0 OR t3.y IS NULL
9177  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9178} {
9179  15 115 215 315   -  - 215 15 315 15
9180  30 130 230 330 130 30 230 30 330 30
9181  45 145 245 345   -  - 245 45 345 45
9182  60 160 260 360 160 60 260 60 360 60
9183  75 175 275 375   -  - 275 75 375 75
9184  90 190 290 390 190 90 290 90 390 90
9185   -   -   -   -   -  -   -  - 300  0
9186   -   -   -   -   -  -   -  - 305  5
9187   -   -   -   -   -  -   -  - 310 10
9188   -   -   -   -   -  -   -  - 320 20
9189   -   -   -   -   -  -   -  - 325 25
9190   -   -   -   -   -  -   -  - 335 35
9191   -   -   -   -   -  -   -  - 340 40
9192   -   -   -   -   -  -   -  - 350 50
9193   -   -   -   -   -  -   -  - 355 55
9194   -   -   -   -   -  -   -  - 365 65
9195   -   -   -   -   -  -   -  - 370 70
9196   -   -   -   -   -  -   -  - 380 80
9197   -   -   -   -   -  -   -  - 385 85
9198   -   -   -   -   -  -   -  - 395 95
9199}
9200do_execsql_test joinD-346 {
9201  SELECT t1.*, t2.*, t3.*, t4.*
9202  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9203  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9204  RIGHT JOIN t4 ON t1.d=t4.d
9205  WHERE t4.z>0
9206  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9207} {
9208  15 115 215 315   -  - 215 15 315 15
9209  30 130 230 330 130 30 230 30 330 30
9210  45 145 245 345   -  - 245 45 345 45
9211  60 160 260 360 160 60 260 60 360 60
9212  75 175 275 375   -  - 275 75 375 75
9213  90 190 290 390 190 90 290 90 390 90
9214   -   -   -   -   -  -   -  - 305  5
9215   -   -   -   -   -  -   -  - 310 10
9216   -   -   -   -   -  -   -  - 320 20
9217   -   -   -   -   -  -   -  - 325 25
9218   -   -   -   -   -  -   -  - 335 35
9219   -   -   -   -   -  -   -  - 340 40
9220   -   -   -   -   -  -   -  - 350 50
9221   -   -   -   -   -  -   -  - 355 55
9222   -   -   -   -   -  -   -  - 365 65
9223   -   -   -   -   -  -   -  - 370 70
9224   -   -   -   -   -  -   -  - 380 80
9225   -   -   -   -   -  -   -  - 385 85
9226   -   -   -   -   -  -   -  - 395 95
9227}
9228do_execsql_test joinD-347 {
9229  SELECT t1.*, t2.*, t3.*, t4.*
9230  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9231  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9232  RIGHT JOIN t4 ON t1.d=t4.d
9233  WHERE t4.z IS NULL OR t4.z>0
9234  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9235} {
9236  15 115 215 315   -  - 215 15 315 15
9237  30 130 230 330 130 30 230 30 330 30
9238  45 145 245 345   -  - 245 45 345 45
9239  60 160 260 360 160 60 260 60 360 60
9240  75 175 275 375   -  - 275 75 375 75
9241  90 190 290 390 190 90 290 90 390 90
9242   -   -   -   -   -  -   -  - 305  5
9243   -   -   -   -   -  -   -  - 310 10
9244   -   -   -   -   -  -   -  - 320 20
9245   -   -   -   -   -  -   -  - 325 25
9246   -   -   -   -   -  -   -  - 335 35
9247   -   -   -   -   -  -   -  - 340 40
9248   -   -   -   -   -  -   -  - 350 50
9249   -   -   -   -   -  -   -  - 355 55
9250   -   -   -   -   -  -   -  - 365 65
9251   -   -   -   -   -  -   -  - 370 70
9252   -   -   -   -   -  -   -  - 380 80
9253   -   -   -   -   -  -   -  - 385 85
9254   -   -   -   -   -  -   -  - 395 95
9255}
9256do_execsql_test joinD-348 {
9257  SELECT t1.*, t2.*, t3.*, t4.*
9258  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9259  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9260  RIGHT JOIN t4 ON t1.d=t4.d
9261  WHERE t2.x>0 AND t4.z>0
9262  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9263} {
9264  30 130 230 330 130 30 230 30 330 30
9265  60 160 260 360 160 60 260 60 360 60
9266  90 190 290 390 190 90 290 90 390 90
9267}
9268do_execsql_test joinD-349 {
9269  SELECT t1.*, t2.*, t3.*, t4.*
9270  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9271  INNER JOIN t3 ON t1.c=t3.c
9272  RIGHT JOIN t4 ON t1.d=t4.d
9273  WHERE t4.z>0 AND t3.y>0
9274  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9275} {
9276  15 115 215 315   -  - 215 15 315 15
9277  30 130 230 330 130 30 230 30 330 30
9278  45 145 245 345   -  - 245 45 345 45
9279  60 160 260 360 160 60 260 60 360 60
9280  75 175 275 375   -  - 275 75 375 75
9281  90 190 290 390 190 90 290 90 390 90
9282}
9283do_execsql_test joinD-350 {
9284  SELECT t1.*, t2.*, t3.*, t4.*
9285  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9286  INNER JOIN t3 ON t1.c=t3.c
9287  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9288  WHERE t2.x>0 AND t3.y>0
9289  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9290} {
9291  30 130 230 330 130 30 230 30 330 30
9292  60 160 260 360 160 60 260 60 360 60
9293  90 190 290 390 190 90 290 90 390 90
9294}
9295do_execsql_test joinD-351 {
9296  SELECT t1.*, t2.*, t3.*, t4.*
9297  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9298  INNER JOIN t3 ON t1.c=t3.c
9299  RIGHT JOIN t4 ON t1.d=t4.d
9300  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
9301  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9302} {
9303  30 130 230 330 130 30 230 30 330 30
9304  60 160 260 360 160 60 260 60 360 60
9305  90 190 290 390 190 90 290 90 390 90
9306}
9307do_execsql_test joinD-352 {
9308  SELECT t1.*, t2.*, t3.*, t4.*
9309  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9310  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9311  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
9312  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9313} {
9314  15 115 215 315   -  - 215 15 315 15
9315  30 130 230 330 130 30 230 30 330 30
9316  45 145 245 345   -  - 245 45 345 45
9317  60 160 260 360 160 60 260 60 360 60
9318  75 175 275 375   -  - 275 75 375 75
9319  90 190 290 390 190 90 290 90 390 90
9320   -   -   -   -   -  -   -  - 300  0
9321   -   -   -   -   -  -   -  - 305  5
9322   -   -   -   -   -  -   -  - 310 10
9323   -   -   -   -   -  -   -  - 320 20
9324   -   -   -   -   -  -   -  - 325 25
9325   -   -   -   -   -  -   -  - 335 35
9326   -   -   -   -   -  -   -  - 340 40
9327   -   -   -   -   -  -   -  - 350 50
9328   -   -   -   -   -  -   -  - 355 55
9329   -   -   -   -   -  -   -  - 365 65
9330   -   -   -   -   -  -   -  - 370 70
9331   -   -   -   -   -  -   -  - 380 80
9332   -   -   -   -   -  -   -  - 385 85
9333   -   -   -   -   -  -   -  - 395 95
9334}
9335do_execsql_test joinD-353 {
9336  SELECT t1.*, t2.*, t3.*, t4.*
9337  FROM t1 LEFT JOIN t2 ON t2.x>0
9338  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9339  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
9340  WHERE t1.b IS NOT DISTINCT FROM t2.b
9341  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9342} {
9343  30 130 230 330 130 30 230 30 330 30
9344  60 160 260 360 160 60 260 60 360 60
9345  90 190 290 390 190 90 290 90 390 90
9346   -   -   -   -   -  -   -  - 300  0
9347   -   -   -   -   -  -   -  - 305  5
9348   -   -   -   -   -  -   -  - 310 10
9349   -   -   -   -   -  -   -  - 320 20
9350   -   -   -   -   -  -   -  - 325 25
9351   -   -   -   -   -  -   -  - 335 35
9352   -   -   -   -   -  -   -  - 340 40
9353   -   -   -   -   -  -   -  - 350 50
9354   -   -   -   -   -  -   -  - 355 55
9355   -   -   -   -   -  -   -  - 365 65
9356   -   -   -   -   -  -   -  - 370 70
9357   -   -   -   -   -  -   -  - 380 80
9358   -   -   -   -   -  -   -  - 385 85
9359   -   -   -   -   -  -   -  - 395 95
9360}
9361do_execsql_test joinD-354 {
9362  SELECT t1.*, t2.*, t3.*, t4.*
9363  FROM t1 LEFT JOIN t2 ON t2.x>0
9364  INNER JOIN t3 ON t3.y>0
9365  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
9366  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
9367  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9368} {
9369  30 130 230 330 130 30 230 30 330 30
9370  60 160 260 360 160 60 260 60 360 60
9371  90 190 290 390 190 90 290 90 390 90
9372   -   -   -   -   -  -   -  - 300  0
9373}
9374do_execsql_test joinD-355 {
9375  SELECT t1.*, t2.*, t3.*, t4.*
9376  FROM t1 LEFT JOIN t2 ON t2.x>0
9377  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9378  RIGHT JOIN t4 ON t4.z>0
9379  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
9380  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9381} {
9382  30 130 230 330 130 30 230 30 330 30
9383  60 160 260 360 160 60 260 60 360 60
9384  90 190 290 390 190 90 290 90 390 90
9385}
9386do_execsql_test joinD-356 {
9387  SELECT t1.*, t2.*, t3.*, t4.*
9388  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
9389  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9390  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9391  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9392} {
9393  15 115 215 315   -  - 215 15 315 15
9394  30 130 230 330 130 30 230 30 330 30
9395  45 145 245 345   -  - 245 45 345 45
9396  60 160 260 360 160 60 260 60 360 60
9397  75 175 275 375   -  - 275 75 375 75
9398  90 190 290 390 190 90 290 90 390 90
9399   -   -   -   -   -  -   -  - 300  0
9400   -   -   -   -   -  -   -  - 305  5
9401   -   -   -   -   -  -   -  - 310 10
9402   -   -   -   -   -  -   -  - 320 20
9403   -   -   -   -   -  -   -  - 325 25
9404   -   -   -   -   -  -   -  - 335 35
9405   -   -   -   -   -  -   -  - 340 40
9406   -   -   -   -   -  -   -  - 350 50
9407   -   -   -   -   -  -   -  - 355 55
9408   -   -   -   -   -  -   -  - 365 65
9409   -   -   -   -   -  -   -  - 370 70
9410   -   -   -   -   -  -   -  - 380 80
9411   -   -   -   -   -  -   -  - 385 85
9412   -   -   -   -   -  -   -  - 395 95
9413}
9414do_execsql_test joinD-357 {
9415  SELECT t1.*, t2.*, t3.*, t4.*
9416  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9417  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
9418  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
9419  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9420} {
9421  15 115 215 315   -  - 215 15 315 15
9422  30 130 230 330 130 30 230 30 330 30
9423  45 145 245 345   -  - 245 45 345 45
9424  60 160 260 360 160 60 260 60 360 60
9425  75 175 275 375   -  - 275 75 375 75
9426  90 190 290 390 190 90 290 90 390 90
9427   -   -   -   -   -  -   -  - 300  0
9428   -   -   -   -   -  -   -  - 305  5
9429   -   -   -   -   -  -   -  - 310 10
9430   -   -   -   -   -  -   -  - 320 20
9431   -   -   -   -   -  -   -  - 325 25
9432   -   -   -   -   -  -   -  - 335 35
9433   -   -   -   -   -  -   -  - 340 40
9434   -   -   -   -   -  -   -  - 350 50
9435   -   -   -   -   -  -   -  - 355 55
9436   -   -   -   -   -  -   -  - 365 65
9437   -   -   -   -   -  -   -  - 370 70
9438   -   -   -   -   -  -   -  - 380 80
9439   -   -   -   -   -  -   -  - 385 85
9440   -   -   -   -   -  -   -  - 395 95
9441}
9442do_execsql_test joinD-358 {
9443  SELECT t1.*, t2.*, t3.*, t4.*
9444  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9445  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9446  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9447  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9448} {
9449   3 103 203 303   -  - 203  3   -  -
9450   6 106 206 306 106  6 206  6   -  -
9451   9 109 209 309   -  - 209  9   -  -
9452  12 112 212 312 112 12 212 12   -  -
9453  15 115 215 315   -  - 215 15 315 15
9454  18 118 218 318 118 18 218 18   -  -
9455  21 121 221 321   -  - 221 21   -  -
9456  24 124 224 324 124 24 224 24   -  -
9457  27 127 227 327   -  - 227 27   -  -
9458  30 130 230 330 130 30 230 30 330 30
9459  33 133 233 333   -  - 233 33   -  -
9460  36 136 236 336 136 36 236 36   -  -
9461  39 139 239 339   -  - 239 39   -  -
9462  42 142 242 342 142 42 242 42   -  -
9463  45 145 245 345   -  - 245 45 345 45
9464  48 148 248 348 148 48 248 48   -  -
9465  51 151 251 351   -  - 251 51   -  -
9466  54 154 254 354 154 54 254 54   -  -
9467  57 157 257 357   -  - 257 57   -  -
9468  60 160 260 360 160 60 260 60 360 60
9469  63 163 263 363   -  - 263 63   -  -
9470  66 166 266 366 166 66 266 66   -  -
9471  69 169 269 369   -  - 269 69   -  -
9472  72 172 272 372 172 72 272 72   -  -
9473  75 175 275 375   -  - 275 75 375 75
9474  78 178 278 378 178 78 278 78   -  -
9475  81 181 281 381   -  - 281 81   -  -
9476  84 184 284 384 184 84 284 84   -  -
9477  87 187 287 387   -  - 287 87   -  -
9478  90 190 290 390 190 90 290 90 390 90
9479  93 193 293 393   -  - 293 93   -  -
9480   -   -   -   -   -  -   -  - 300  0
9481   -   -   -   -   -  -   -  - 305  5
9482   -   -   -   -   -  -   -  - 310 10
9483   -   -   -   -   -  -   -  - 320 20
9484   -   -   -   -   -  -   -  - 325 25
9485   -   -   -   -   -  -   -  - 335 35
9486   -   -   -   -   -  -   -  - 340 40
9487   -   -   -   -   -  -   -  - 350 50
9488   -   -   -   -   -  -   -  - 355 55
9489   -   -   -   -   -  -   -  - 365 65
9490   -   -   -   -   -  -   -  - 370 70
9491   -   -   -   -   -  -   -  - 380 80
9492   -   -   -   -   -  -   -  - 385 85
9493   -   -   -   -   -  -   -  - 395 95
9494}
9495do_execsql_test joinD-359 {
9496  SELECT t1.*, t2.*, t3.*, t4.*
9497  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9498  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9499  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9500  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9501} {
9502   3 103 203 303   -  - 203  3   -  -
9503   6 106 206 306 106  6 206  6   -  -
9504   9 109 209 309   -  - 209  9   -  -
9505  12 112 212 312 112 12 212 12   -  -
9506  15 115 215 315   -  - 215 15 315 15
9507  18 118 218 318 118 18 218 18   -  -
9508  21 121 221 321   -  - 221 21   -  -
9509  24 124 224 324 124 24 224 24   -  -
9510  27 127 227 327   -  - 227 27   -  -
9511  30 130 230 330 130 30 230 30 330 30
9512  33 133 233 333   -  - 233 33   -  -
9513  36 136 236 336 136 36 236 36   -  -
9514  39 139 239 339   -  - 239 39   -  -
9515  42 142 242 342 142 42 242 42   -  -
9516  45 145 245 345   -  - 245 45 345 45
9517  48 148 248 348 148 48 248 48   -  -
9518  51 151 251 351   -  - 251 51   -  -
9519  54 154 254 354 154 54 254 54   -  -
9520  57 157 257 357   -  - 257 57   -  -
9521  60 160 260 360 160 60 260 60 360 60
9522  63 163 263 363   -  - 263 63   -  -
9523  66 166 266 366 166 66 266 66   -  -
9524  69 169 269 369   -  - 269 69   -  -
9525  72 172 272 372 172 72 272 72   -  -
9526  75 175 275 375   -  - 275 75 375 75
9527  78 178 278 378 178 78 278 78   -  -
9528  81 181 281 381   -  - 281 81   -  -
9529  84 184 284 384 184 84 284 84   -  -
9530  87 187 287 387   -  - 287 87   -  -
9531  90 190 290 390 190 90 290 90 390 90
9532  93 193 293 393   -  - 293 93   -  -
9533   -   -   -   -   -  -   -  - 300  0
9534   -   -   -   -   -  -   -  - 305  5
9535   -   -   -   -   -  -   -  - 310 10
9536   -   -   -   -   -  -   -  - 320 20
9537   -   -   -   -   -  -   -  - 325 25
9538   -   -   -   -   -  -   -  - 335 35
9539   -   -   -   -   -  -   -  - 340 40
9540   -   -   -   -   -  -   -  - 350 50
9541   -   -   -   -   -  -   -  - 355 55
9542   -   -   -   -   -  -   -  - 365 65
9543   -   -   -   -   -  -   -  - 370 70
9544   -   -   -   -   -  -   -  - 380 80
9545   -   -   -   -   -  -   -  - 385 85
9546   -   -   -   -   -  -   -  - 395 95
9547}
9548do_execsql_test joinD-360 {
9549  SELECT t1.*, t2.*, t3.*, t4.*
9550  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9551  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9552  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9553  WHERE t2.x>0
9554  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9555} {
9556   6 106 206 306 106  6 206  6   -  -
9557  12 112 212 312 112 12 212 12   -  -
9558  18 118 218 318 118 18 218 18   -  -
9559  24 124 224 324 124 24 224 24   -  -
9560  30 130 230 330 130 30 230 30 330 30
9561  36 136 236 336 136 36 236 36   -  -
9562  42 142 242 342 142 42 242 42   -  -
9563  48 148 248 348 148 48 248 48   -  -
9564  54 154 254 354 154 54 254 54   -  -
9565  60 160 260 360 160 60 260 60 360 60
9566  66 166 266 366 166 66 266 66   -  -
9567  72 172 272 372 172 72 272 72   -  -
9568  78 178 278 378 178 78 278 78   -  -
9569  84 184 284 384 184 84 284 84   -  -
9570  90 190 290 390 190 90 290 90 390 90
9571}
9572do_execsql_test joinD-361 {
9573  SELECT t1.*, t2.*, t3.*, t4.*
9574  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9575  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9576  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9577  WHERE (t2.x>0 OR t2.x IS NULL)
9578  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9579} {
9580   3 103 203 303   -  - 203  3   -  -
9581   6 106 206 306 106  6 206  6   -  -
9582   9 109 209 309   -  - 209  9   -  -
9583  12 112 212 312 112 12 212 12   -  -
9584  15 115 215 315   -  - 215 15 315 15
9585  18 118 218 318 118 18 218 18   -  -
9586  21 121 221 321   -  - 221 21   -  -
9587  24 124 224 324 124 24 224 24   -  -
9588  27 127 227 327   -  - 227 27   -  -
9589  30 130 230 330 130 30 230 30 330 30
9590  33 133 233 333   -  - 233 33   -  -
9591  36 136 236 336 136 36 236 36   -  -
9592  39 139 239 339   -  - 239 39   -  -
9593  42 142 242 342 142 42 242 42   -  -
9594  45 145 245 345   -  - 245 45 345 45
9595  48 148 248 348 148 48 248 48   -  -
9596  51 151 251 351   -  - 251 51   -  -
9597  54 154 254 354 154 54 254 54   -  -
9598  57 157 257 357   -  - 257 57   -  -
9599  60 160 260 360 160 60 260 60 360 60
9600  63 163 263 363   -  - 263 63   -  -
9601  66 166 266 366 166 66 266 66   -  -
9602  69 169 269 369   -  - 269 69   -  -
9603  72 172 272 372 172 72 272 72   -  -
9604  75 175 275 375   -  - 275 75 375 75
9605  78 178 278 378 178 78 278 78   -  -
9606  81 181 281 381   -  - 281 81   -  -
9607  84 184 284 384 184 84 284 84   -  -
9608  87 187 287 387   -  - 287 87   -  -
9609  90 190 290 390 190 90 290 90 390 90
9610  93 193 293 393   -  - 293 93   -  -
9611   -   -   -   -   -  -   -  - 300  0
9612   -   -   -   -   -  -   -  - 305  5
9613   -   -   -   -   -  -   -  - 310 10
9614   -   -   -   -   -  -   -  - 320 20
9615   -   -   -   -   -  -   -  - 325 25
9616   -   -   -   -   -  -   -  - 335 35
9617   -   -   -   -   -  -   -  - 340 40
9618   -   -   -   -   -  -   -  - 350 50
9619   -   -   -   -   -  -   -  - 355 55
9620   -   -   -   -   -  -   -  - 365 65
9621   -   -   -   -   -  -   -  - 370 70
9622   -   -   -   -   -  -   -  - 380 80
9623   -   -   -   -   -  -   -  - 385 85
9624   -   -   -   -   -  -   -  - 395 95
9625}
9626do_execsql_test joinD-362 {
9627  SELECT t1.*, t2.*, t3.*, t4.*
9628  FROM t1 LEFT JOIN t2 ON true
9629  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9630  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9631  WHERE t1.b=t2.b AND t2.x>0
9632  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9633} {
9634   6 106 206 306 106  6 206  6   -  -
9635  12 112 212 312 112 12 212 12   -  -
9636  18 118 218 318 118 18 218 18   -  -
9637  24 124 224 324 124 24 224 24   -  -
9638  30 130 230 330 130 30 230 30 330 30
9639  36 136 236 336 136 36 236 36   -  -
9640  42 142 242 342 142 42 242 42   -  -
9641  48 148 248 348 148 48 248 48   -  -
9642  54 154 254 354 154 54 254 54   -  -
9643  60 160 260 360 160 60 260 60 360 60
9644  66 166 266 366 166 66 266 66   -  -
9645  72 172 272 372 172 72 272 72   -  -
9646  78 178 278 378 178 78 278 78   -  -
9647  84 184 284 384 184 84 284 84   -  -
9648  90 190 290 390 190 90 290 90 390 90
9649}
9650do_execsql_test joinD-363 {
9651  SELECT t1.*, t2.*, t3.*, t4.*
9652  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9653  INNER JOIN t3 ON t1.c=t3.c
9654  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9655  WHERE t3.y>0
9656  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9657} {
9658   3 103 203 303   -  - 203  3   -  -
9659   6 106 206 306 106  6 206  6   -  -
9660   9 109 209 309   -  - 209  9   -  -
9661  12 112 212 312 112 12 212 12   -  -
9662  15 115 215 315   -  - 215 15 315 15
9663  18 118 218 318 118 18 218 18   -  -
9664  21 121 221 321   -  - 221 21   -  -
9665  24 124 224 324 124 24 224 24   -  -
9666  27 127 227 327   -  - 227 27   -  -
9667  30 130 230 330 130 30 230 30 330 30
9668  33 133 233 333   -  - 233 33   -  -
9669  36 136 236 336 136 36 236 36   -  -
9670  39 139 239 339   -  - 239 39   -  -
9671  42 142 242 342 142 42 242 42   -  -
9672  45 145 245 345   -  - 245 45 345 45
9673  48 148 248 348 148 48 248 48   -  -
9674  51 151 251 351   -  - 251 51   -  -
9675  54 154 254 354 154 54 254 54   -  -
9676  57 157 257 357   -  - 257 57   -  -
9677  60 160 260 360 160 60 260 60 360 60
9678  63 163 263 363   -  - 263 63   -  -
9679  66 166 266 366 166 66 266 66   -  -
9680  69 169 269 369   -  - 269 69   -  -
9681  72 172 272 372 172 72 272 72   -  -
9682  75 175 275 375   -  - 275 75 375 75
9683  78 178 278 378 178 78 278 78   -  -
9684  81 181 281 381   -  - 281 81   -  -
9685  84 184 284 384 184 84 284 84   -  -
9686  87 187 287 387   -  - 287 87   -  -
9687  90 190 290 390 190 90 290 90 390 90
9688  93 193 293 393   -  - 293 93   -  -
9689}
9690do_execsql_test joinD-364 {
9691  SELECT t1.*, t2.*, t3.*, t4.*
9692  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9693  INNER JOIN t3 ON t1.c=t3.c
9694  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9695  WHERE t3.y>0 OR t3.y IS NULL
9696  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9697} {
9698   3 103 203 303   -  - 203  3   -  -
9699   6 106 206 306 106  6 206  6   -  -
9700   9 109 209 309   -  - 209  9   -  -
9701  12 112 212 312 112 12 212 12   -  -
9702  15 115 215 315   -  - 215 15 315 15
9703  18 118 218 318 118 18 218 18   -  -
9704  21 121 221 321   -  - 221 21   -  -
9705  24 124 224 324 124 24 224 24   -  -
9706  27 127 227 327   -  - 227 27   -  -
9707  30 130 230 330 130 30 230 30 330 30
9708  33 133 233 333   -  - 233 33   -  -
9709  36 136 236 336 136 36 236 36   -  -
9710  39 139 239 339   -  - 239 39   -  -
9711  42 142 242 342 142 42 242 42   -  -
9712  45 145 245 345   -  - 245 45 345 45
9713  48 148 248 348 148 48 248 48   -  -
9714  51 151 251 351   -  - 251 51   -  -
9715  54 154 254 354 154 54 254 54   -  -
9716  57 157 257 357   -  - 257 57   -  -
9717  60 160 260 360 160 60 260 60 360 60
9718  63 163 263 363   -  - 263 63   -  -
9719  66 166 266 366 166 66 266 66   -  -
9720  69 169 269 369   -  - 269 69   -  -
9721  72 172 272 372 172 72 272 72   -  -
9722  75 175 275 375   -  - 275 75 375 75
9723  78 178 278 378 178 78 278 78   -  -
9724  81 181 281 381   -  - 281 81   -  -
9725  84 184 284 384 184 84 284 84   -  -
9726  87 187 287 387   -  - 287 87   -  -
9727  90 190 290 390 190 90 290 90 390 90
9728  93 193 293 393   -  - 293 93   -  -
9729   -   -   -   -   -  -   -  - 300  0
9730   -   -   -   -   -  -   -  - 305  5
9731   -   -   -   -   -  -   -  - 310 10
9732   -   -   -   -   -  -   -  - 320 20
9733   -   -   -   -   -  -   -  - 325 25
9734   -   -   -   -   -  -   -  - 335 35
9735   -   -   -   -   -  -   -  - 340 40
9736   -   -   -   -   -  -   -  - 350 50
9737   -   -   -   -   -  -   -  - 355 55
9738   -   -   -   -   -  -   -  - 365 65
9739   -   -   -   -   -  -   -  - 370 70
9740   -   -   -   -   -  -   -  - 380 80
9741   -   -   -   -   -  -   -  - 385 85
9742   -   -   -   -   -  -   -  - 395 95
9743}
9744do_execsql_test joinD-365 {
9745  SELECT t1.*, t2.*, t3.*, t4.*
9746  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9747  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9748  FULL JOIN t4 ON t1.d=t4.d
9749  WHERE t4.z>0
9750  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9751} {
9752  15 115 215 315   -  - 215 15 315 15
9753  30 130 230 330 130 30 230 30 330 30
9754  45 145 245 345   -  - 245 45 345 45
9755  60 160 260 360 160 60 260 60 360 60
9756  75 175 275 375   -  - 275 75 375 75
9757  90 190 290 390 190 90 290 90 390 90
9758   -   -   -   -   -  -   -  - 305  5
9759   -   -   -   -   -  -   -  - 310 10
9760   -   -   -   -   -  -   -  - 320 20
9761   -   -   -   -   -  -   -  - 325 25
9762   -   -   -   -   -  -   -  - 335 35
9763   -   -   -   -   -  -   -  - 340 40
9764   -   -   -   -   -  -   -  - 350 50
9765   -   -   -   -   -  -   -  - 355 55
9766   -   -   -   -   -  -   -  - 365 65
9767   -   -   -   -   -  -   -  - 370 70
9768   -   -   -   -   -  -   -  - 380 80
9769   -   -   -   -   -  -   -  - 385 85
9770   -   -   -   -   -  -   -  - 395 95
9771}
9772do_execsql_test joinD-366 {
9773  SELECT t1.*, t2.*, t3.*, t4.*
9774  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9775  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9776  FULL JOIN t4 ON t1.d=t4.d
9777  WHERE t4.z IS NULL OR t4.z>0
9778  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9779} {
9780   3 103 203 303   -  - 203  3   -  -
9781   6 106 206 306 106  6 206  6   -  -
9782   9 109 209 309   -  - 209  9   -  -
9783  12 112 212 312 112 12 212 12   -  -
9784  15 115 215 315   -  - 215 15 315 15
9785  18 118 218 318 118 18 218 18   -  -
9786  21 121 221 321   -  - 221 21   -  -
9787  24 124 224 324 124 24 224 24   -  -
9788  27 127 227 327   -  - 227 27   -  -
9789  30 130 230 330 130 30 230 30 330 30
9790  33 133 233 333   -  - 233 33   -  -
9791  36 136 236 336 136 36 236 36   -  -
9792  39 139 239 339   -  - 239 39   -  -
9793  42 142 242 342 142 42 242 42   -  -
9794  45 145 245 345   -  - 245 45 345 45
9795  48 148 248 348 148 48 248 48   -  -
9796  51 151 251 351   -  - 251 51   -  -
9797  54 154 254 354 154 54 254 54   -  -
9798  57 157 257 357   -  - 257 57   -  -
9799  60 160 260 360 160 60 260 60 360 60
9800  63 163 263 363   -  - 263 63   -  -
9801  66 166 266 366 166 66 266 66   -  -
9802  69 169 269 369   -  - 269 69   -  -
9803  72 172 272 372 172 72 272 72   -  -
9804  75 175 275 375   -  - 275 75 375 75
9805  78 178 278 378 178 78 278 78   -  -
9806  81 181 281 381   -  - 281 81   -  -
9807  84 184 284 384 184 84 284 84   -  -
9808  87 187 287 387   -  - 287 87   -  -
9809  90 190 290 390 190 90 290 90 390 90
9810  93 193 293 393   -  - 293 93   -  -
9811   -   -   -   -   -  -   -  - 305  5
9812   -   -   -   -   -  -   -  - 310 10
9813   -   -   -   -   -  -   -  - 320 20
9814   -   -   -   -   -  -   -  - 325 25
9815   -   -   -   -   -  -   -  - 335 35
9816   -   -   -   -   -  -   -  - 340 40
9817   -   -   -   -   -  -   -  - 350 50
9818   -   -   -   -   -  -   -  - 355 55
9819   -   -   -   -   -  -   -  - 365 65
9820   -   -   -   -   -  -   -  - 370 70
9821   -   -   -   -   -  -   -  - 380 80
9822   -   -   -   -   -  -   -  - 385 85
9823   -   -   -   -   -  -   -  - 395 95
9824}
9825do_execsql_test joinD-367 {
9826  SELECT t1.*, t2.*, t3.*, t4.*
9827  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9828  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
9829  FULL JOIN t4 ON t1.d=t4.d
9830  WHERE t2.x>0 AND t4.z>0
9831  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9832} {
9833  30 130 230 330 130 30 230 30 330 30
9834  60 160 260 360 160 60 260 60 360 60
9835  90 190 290 390 190 90 290 90 390 90
9836}
9837do_execsql_test joinD-368 {
9838  SELECT t1.*, t2.*, t3.*, t4.*
9839  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
9840  INNER JOIN t3 ON t1.c=t3.c
9841  FULL JOIN t4 ON t1.d=t4.d
9842  WHERE t4.z>0 AND t3.y>0
9843  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9844} {
9845  15 115 215 315   -  - 215 15 315 15
9846  30 130 230 330 130 30 230 30 330 30
9847  45 145 245 345   -  - 245 45 345 45
9848  60 160 260 360 160 60 260 60 360 60
9849  75 175 275 375   -  - 275 75 375 75
9850  90 190 290 390 190 90 290 90 390 90
9851}
9852do_execsql_test joinD-369 {
9853  SELECT t1.*, t2.*, t3.*, t4.*
9854  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9855  INNER JOIN t3 ON t1.c=t3.c
9856  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
9857  WHERE t2.x>0 AND t3.y>0
9858  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9859} {
9860   6 106 206 306 106  6 206  6   -  -
9861  12 112 212 312 112 12 212 12   -  -
9862  18 118 218 318 118 18 218 18   -  -
9863  24 124 224 324 124 24 224 24   -  -
9864  30 130 230 330 130 30 230 30 330 30
9865  36 136 236 336 136 36 236 36   -  -
9866  42 142 242 342 142 42 242 42   -  -
9867  48 148 248 348 148 48 248 48   -  -
9868  54 154 254 354 154 54 254 54   -  -
9869  60 160 260 360 160 60 260 60 360 60
9870  66 166 266 366 166 66 266 66   -  -
9871  72 172 272 372 172 72 272 72   -  -
9872  78 178 278 378 178 78 278 78   -  -
9873  84 184 284 384 184 84 284 84   -  -
9874  90 190 290 390 190 90 290 90 390 90
9875}
9876do_execsql_test joinD-370 {
9877  SELECT t1.*, t2.*, t3.*, t4.*
9878  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
9879  INNER JOIN t3 ON t1.c=t3.c
9880  FULL JOIN t4 ON t1.d=t4.d
9881  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
9882  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9883} {
9884  30 130 230 330 130 30 230 30 330 30
9885  60 160 260 360 160 60 260 60 360 60
9886  90 190 290 390 190 90 290 90 390 90
9887}
9888do_execsql_test joinD-371 {
9889  SELECT t1.*, t2.*, t3.*, t4.*
9890  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
9891  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9892  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
9893  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9894} {
9895   3 103 203 303   -  - 203  3   -  -
9896   6 106 206 306 106  6 206  6   -  -
9897   9 109 209 309   -  - 209  9   -  -
9898  12 112 212 312 112 12 212 12   -  -
9899  15 115 215 315   -  - 215 15 315 15
9900  18 118 218 318 118 18 218 18   -  -
9901  21 121 221 321   -  - 221 21   -  -
9902  24 124 224 324 124 24 224 24   -  -
9903  27 127 227 327   -  - 227 27   -  -
9904  30 130 230 330 130 30 230 30 330 30
9905  33 133 233 333   -  - 233 33   -  -
9906  36 136 236 336 136 36 236 36   -  -
9907  39 139 239 339   -  - 239 39   -  -
9908  42 142 242 342 142 42 242 42   -  -
9909  45 145 245 345   -  - 245 45 345 45
9910  48 148 248 348 148 48 248 48   -  -
9911  51 151 251 351   -  - 251 51   -  -
9912  54 154 254 354 154 54 254 54   -  -
9913  57 157 257 357   -  - 257 57   -  -
9914  60 160 260 360 160 60 260 60 360 60
9915  63 163 263 363   -  - 263 63   -  -
9916  66 166 266 366 166 66 266 66   -  -
9917  69 169 269 369   -  - 269 69   -  -
9918  72 172 272 372 172 72 272 72   -  -
9919  75 175 275 375   -  - 275 75 375 75
9920  78 178 278 378 178 78 278 78   -  -
9921  81 181 281 381   -  - 281 81   -  -
9922  84 184 284 384 184 84 284 84   -  -
9923  87 187 287 387   -  - 287 87   -  -
9924  90 190 290 390 190 90 290 90 390 90
9925  93 193 293 393   -  - 293 93   -  -
9926   -   -   -   -   -  -   -  - 300  0
9927   -   -   -   -   -  -   -  - 305  5
9928   -   -   -   -   -  -   -  - 310 10
9929   -   -   -   -   -  -   -  - 320 20
9930   -   -   -   -   -  -   -  - 325 25
9931   -   -   -   -   -  -   -  - 335 35
9932   -   -   -   -   -  -   -  - 340 40
9933   -   -   -   -   -  -   -  - 350 50
9934   -   -   -   -   -  -   -  - 355 55
9935   -   -   -   -   -  -   -  - 365 65
9936   -   -   -   -   -  -   -  - 370 70
9937   -   -   -   -   -  -   -  - 380 80
9938   -   -   -   -   -  -   -  - 385 85
9939   -   -   -   -   -  -   -  - 395 95
9940}
9941do_execsql_test joinD-372 {
9942  SELECT t1.*, t2.*, t3.*, t4.*
9943  FROM t1 LEFT JOIN t2 ON t2.x>0
9944  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
9945  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
9946  WHERE t1.b IS NOT DISTINCT FROM t2.b
9947  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9948} {
9949   6 106 206 306 106  6 206  6   -  -
9950  12 112 212 312 112 12 212 12   -  -
9951  18 118 218 318 118 18 218 18   -  -
9952  24 124 224 324 124 24 224 24   -  -
9953  30 130 230 330 130 30 230 30 330 30
9954  36 136 236 336 136 36 236 36   -  -
9955  42 142 242 342 142 42 242 42   -  -
9956  48 148 248 348 148 48 248 48   -  -
9957  54 154 254 354 154 54 254 54   -  -
9958  60 160 260 360 160 60 260 60 360 60
9959  66 166 266 366 166 66 266 66   -  -
9960  72 172 272 372 172 72 272 72   -  -
9961  78 178 278 378 178 78 278 78   -  -
9962  84 184 284 384 184 84 284 84   -  -
9963  90 190 290 390 190 90 290 90 390 90
9964   -   -   -   -   -  -   -  - 300  0
9965   -   -   -   -   -  -   -  - 305  5
9966   -   -   -   -   -  -   -  - 310 10
9967   -   -   -   -   -  -   -  - 320 20
9968   -   -   -   -   -  -   -  - 325 25
9969   -   -   -   -   -  -   -  - 335 35
9970   -   -   -   -   -  -   -  - 340 40
9971   -   -   -   -   -  -   -  - 350 50
9972   -   -   -   -   -  -   -  - 355 55
9973   -   -   -   -   -  -   -  - 365 65
9974   -   -   -   -   -  -   -  - 370 70
9975   -   -   -   -   -  -   -  - 380 80
9976   -   -   -   -   -  -   -  - 385 85
9977   -   -   -   -   -  -   -  - 395 95
9978}
9979do_execsql_test joinD-373 {
9980  SELECT t1.*, t2.*, t3.*, t4.*
9981  FROM t1 LEFT JOIN t2 ON t2.x>0
9982  INNER JOIN t3 ON t3.y>0
9983  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
9984  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
9985  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
9986} {
9987   6 106 206 306 106  6 206  6   -  -
9988  12 112 212 312 112 12 212 12   -  -
9989  18 118 218 318 118 18 218 18   -  -
9990  24 124 224 324 124 24 224 24   -  -
9991  30 130 230 330 130 30 230 30 330 30
9992  36 136 236 336 136 36 236 36   -  -
9993  42 142 242 342 142 42 242 42   -  -
9994  48 148 248 348 148 48 248 48   -  -
9995  54 154 254 354 154 54 254 54   -  -
9996  60 160 260 360 160 60 260 60 360 60
9997  66 166 266 366 166 66 266 66   -  -
9998  72 172 272 372 172 72 272 72   -  -
9999  78 178 278 378 178 78 278 78   -  -
10000  84 184 284 384 184 84 284 84   -  -
10001  90 190 290 390 190 90 290 90 390 90
10002   -   -   -   -   -  -   -  - 300  0
10003}
10004do_execsql_test joinD-374 {
10005  SELECT t1.*, t2.*, t3.*, t4.*
10006  FROM t1 LEFT JOIN t2 ON t2.x>0
10007  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10008  FULL JOIN t4 ON t4.z>0
10009  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
10010  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10011} {
10012  30 130 230 330 130 30 230 30 330 30
10013  60 160 260 360 160 60 260 60 360 60
10014  90 190 290 390 190 90 290 90 390 90
10015}
10016do_execsql_test joinD-375 {
10017  SELECT t1.*, t2.*, t3.*, t4.*
10018  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
10019  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
10020  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
10021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10022} {
10023   3 103 203 303   -  - 203  3   -  -
10024   6 106 206 306 106  6 206  6   -  -
10025   9 109 209 309   -  - 209  9   -  -
10026  12 112 212 312 112 12 212 12   -  -
10027  15 115 215 315   -  - 215 15 315 15
10028  18 118 218 318 118 18 218 18   -  -
10029  21 121 221 321   -  - 221 21   -  -
10030  24 124 224 324 124 24 224 24   -  -
10031  27 127 227 327   -  - 227 27   -  -
10032  30 130 230 330 130 30 230 30 330 30
10033  33 133 233 333   -  - 233 33   -  -
10034  36 136 236 336 136 36 236 36   -  -
10035  39 139 239 339   -  - 239 39   -  -
10036  42 142 242 342 142 42 242 42   -  -
10037  45 145 245 345   -  - 245 45 345 45
10038  48 148 248 348 148 48 248 48   -  -
10039  51 151 251 351   -  - 251 51   -  -
10040  54 154 254 354 154 54 254 54   -  -
10041  57 157 257 357   -  - 257 57   -  -
10042  60 160 260 360 160 60 260 60 360 60
10043  63 163 263 363   -  - 263 63   -  -
10044  66 166 266 366 166 66 266 66   -  -
10045  69 169 269 369   -  - 269 69   -  -
10046  72 172 272 372 172 72 272 72   -  -
10047  75 175 275 375   -  - 275 75 375 75
10048  78 178 278 378 178 78 278 78   -  -
10049  81 181 281 381   -  - 281 81   -  -
10050  84 184 284 384 184 84 284 84   -  -
10051  87 187 287 387   -  - 287 87   -  -
10052  90 190 290 390 190 90 290 90 390 90
10053  93 193 293 393   -  - 293 93   -  -
10054   -   -   -   -   -  -   -  - 300  0
10055   -   -   -   -   -  -   -  - 305  5
10056   -   -   -   -   -  -   -  - 310 10
10057   -   -   -   -   -  -   -  - 320 20
10058   -   -   -   -   -  -   -  - 325 25
10059   -   -   -   -   -  -   -  - 335 35
10060   -   -   -   -   -  -   -  - 340 40
10061   -   -   -   -   -  -   -  - 350 50
10062   -   -   -   -   -  -   -  - 355 55
10063   -   -   -   -   -  -   -  - 365 65
10064   -   -   -   -   -  -   -  - 370 70
10065   -   -   -   -   -  -   -  - 380 80
10066   -   -   -   -   -  -   -  - 385 85
10067   -   -   -   -   -  -   -  - 395 95
10068}
10069do_execsql_test joinD-376 {
10070  SELECT t1.*, t2.*, t3.*, t4.*
10071  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10072  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
10073  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
10074  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10075} {
10076   3 103 203 303   -  - 203  3   -  -
10077   6 106 206 306 106  6 206  6   -  -
10078   9 109 209 309   -  - 209  9   -  -
10079  12 112 212 312 112 12 212 12   -  -
10080  15 115 215 315   -  - 215 15 315 15
10081  18 118 218 318 118 18 218 18   -  -
10082  21 121 221 321   -  - 221 21   -  -
10083  24 124 224 324 124 24 224 24   -  -
10084  27 127 227 327   -  - 227 27   -  -
10085  30 130 230 330 130 30 230 30 330 30
10086  33 133 233 333   -  - 233 33   -  -
10087  36 136 236 336 136 36 236 36   -  -
10088  39 139 239 339   -  - 239 39   -  -
10089  42 142 242 342 142 42 242 42   -  -
10090  45 145 245 345   -  - 245 45 345 45
10091  48 148 248 348 148 48 248 48   -  -
10092  51 151 251 351   -  - 251 51   -  -
10093  54 154 254 354 154 54 254 54   -  -
10094  57 157 257 357   -  - 257 57   -  -
10095  60 160 260 360 160 60 260 60 360 60
10096  63 163 263 363   -  - 263 63   -  -
10097  66 166 266 366 166 66 266 66   -  -
10098  69 169 269 369   -  - 269 69   -  -
10099  72 172 272 372 172 72 272 72   -  -
10100  75 175 275 375   -  - 275 75 375 75
10101  78 178 278 378 178 78 278 78   -  -
10102  81 181 281 381   -  - 281 81   -  -
10103  84 184 284 384 184 84 284 84   -  -
10104  87 187 287 387   -  - 287 87   -  -
10105  90 190 290 390 190 90 290 90 390 90
10106  93 193 293 393   -  - 293 93   -  -
10107   -   -   -   -   -  -   -  - 300  0
10108   -   -   -   -   -  -   -  - 305  5
10109   -   -   -   -   -  -   -  - 310 10
10110   -   -   -   -   -  -   -  - 320 20
10111   -   -   -   -   -  -   -  - 325 25
10112   -   -   -   -   -  -   -  - 335 35
10113   -   -   -   -   -  -   -  - 340 40
10114   -   -   -   -   -  -   -  - 350 50
10115   -   -   -   -   -  -   -  - 355 55
10116   -   -   -   -   -  -   -  - 365 65
10117   -   -   -   -   -  -   -  - 370 70
10118   -   -   -   -   -  -   -  - 380 80
10119   -   -   -   -   -  -   -  - 385 85
10120   -   -   -   -   -  -   -  - 395 95
10121}
10122do_execsql_test joinD-377 {
10123  SELECT t1.*, t2.*, t3.*, t4.*
10124  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10125  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10126  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10127  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10128} {
10129   5 105 205 305   -  -   -  - 305  5
10130  10 110 210 310 110 10   -  - 310 10
10131  15 115 215 315   -  - 215 15 315 15
10132  20 120 220 320 120 20   -  - 320 20
10133  25 125 225 325   -  -   -  - 325 25
10134  30 130 230 330 130 30 230 30 330 30
10135  35 135 235 335   -  -   -  - 335 35
10136  40 140 240 340 140 40   -  - 340 40
10137  45 145 245 345   -  - 245 45 345 45
10138  50 150 250 350 150 50   -  - 350 50
10139  55 155 255 355   -  -   -  - 355 55
10140  60 160 260 360 160 60 260 60 360 60
10141  65 165 265 365   -  -   -  - 365 65
10142  70 170 270 370 170 70   -  - 370 70
10143  75 175 275 375   -  - 275 75 375 75
10144  80 180 280 380 180 80   -  - 380 80
10145  85 185 285 385   -  -   -  - 385 85
10146  90 190 290 390 190 90 290 90 390 90
10147  95 195 295 395   -  -   -  - 395 95
10148}
10149do_execsql_test joinD-378 {
10150  SELECT t1.*, t2.*, t3.*, t4.*
10151  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
10152  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10153  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10154  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10155} {
10156   5 105 205 305   -  -   -  - 305  5
10157  10 110 210 310 110 10   -  - 310 10
10158  15 115 215 315   -  - 215 15 315 15
10159  20 120 220 320 120 20   -  - 320 20
10160  25 125 225 325   -  -   -  - 325 25
10161  30 130 230 330 130 30 230 30 330 30
10162  35 135 235 335   -  -   -  - 335 35
10163  40 140 240 340 140 40   -  - 340 40
10164  45 145 245 345   -  - 245 45 345 45
10165  50 150 250 350 150 50   -  - 350 50
10166  55 155 255 355   -  -   -  - 355 55
10167  60 160 260 360 160 60 260 60 360 60
10168  65 165 265 365   -  -   -  - 365 65
10169  70 170 270 370 170 70   -  - 370 70
10170  75 175 275 375   -  - 275 75 375 75
10171  80 180 280 380 180 80   -  - 380 80
10172  85 185 285 385   -  -   -  - 385 85
10173  90 190 290 390 190 90 290 90 390 90
10174  95 195 295 395   -  -   -  - 395 95
10175}
10176do_execsql_test joinD-379 {
10177  SELECT t1.*, t2.*, t3.*, t4.*
10178  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10179  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10180  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10181  WHERE t2.x>0
10182  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10183} {
10184  10 110 210 310 110 10   -  - 310 10
10185  20 120 220 320 120 20   -  - 320 20
10186  30 130 230 330 130 30 230 30 330 30
10187  40 140 240 340 140 40   -  - 340 40
10188  50 150 250 350 150 50   -  - 350 50
10189  60 160 260 360 160 60 260 60 360 60
10190  70 170 270 370 170 70   -  - 370 70
10191  80 180 280 380 180 80   -  - 380 80
10192  90 190 290 390 190 90 290 90 390 90
10193}
10194do_execsql_test joinD-380 {
10195  SELECT t1.*, t2.*, t3.*, t4.*
10196  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10197  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10198  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10199  WHERE (t2.x>0 OR t2.x IS NULL)
10200  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10201} {
10202   5 105 205 305   -  -   -  - 305  5
10203  10 110 210 310 110 10   -  - 310 10
10204  15 115 215 315   -  - 215 15 315 15
10205  20 120 220 320 120 20   -  - 320 20
10206  25 125 225 325   -  -   -  - 325 25
10207  30 130 230 330 130 30 230 30 330 30
10208  35 135 235 335   -  -   -  - 335 35
10209  40 140 240 340 140 40   -  - 340 40
10210  45 145 245 345   -  - 245 45 345 45
10211  50 150 250 350 150 50   -  - 350 50
10212  55 155 255 355   -  -   -  - 355 55
10213  60 160 260 360 160 60 260 60 360 60
10214  65 165 265 365   -  -   -  - 365 65
10215  70 170 270 370 170 70   -  - 370 70
10216  75 175 275 375   -  - 275 75 375 75
10217  80 180 280 380 180 80   -  - 380 80
10218  85 185 285 385   -  -   -  - 385 85
10219  90 190 290 390 190 90 290 90 390 90
10220  95 195 295 395   -  -   -  - 395 95
10221}
10222do_execsql_test joinD-381 {
10223  SELECT t1.*, t2.*, t3.*, t4.*
10224  FROM t1 LEFT JOIN t2 ON true
10225  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10226  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10227  WHERE t1.b=t2.b AND t2.x>0
10228  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10229} {
10230  10 110 210 310 110 10   -  - 310 10
10231  20 120 220 320 120 20   -  - 320 20
10232  30 130 230 330 130 30 230 30 330 30
10233  40 140 240 340 140 40   -  - 340 40
10234  50 150 250 350 150 50   -  - 350 50
10235  60 160 260 360 160 60 260 60 360 60
10236  70 170 270 370 170 70   -  - 370 70
10237  80 180 280 380 180 80   -  - 380 80
10238  90 190 290 390 190 90 290 90 390 90
10239}
10240do_execsql_test joinD-382 {
10241  SELECT t1.*, t2.*, t3.*, t4.*
10242  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10243  LEFT JOIN t3 ON t1.c=t3.c
10244  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10245  WHERE t3.y>0
10246  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10247} {
10248  15 115 215 315   -  - 215 15 315 15
10249  30 130 230 330 130 30 230 30 330 30
10250  45 145 245 345   -  - 245 45 345 45
10251  60 160 260 360 160 60 260 60 360 60
10252  75 175 275 375   -  - 275 75 375 75
10253  90 190 290 390 190 90 290 90 390 90
10254}
10255do_execsql_test joinD-383 {
10256  SELECT t1.*, t2.*, t3.*, t4.*
10257  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10258  LEFT JOIN t3 ON t1.c=t3.c
10259  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10260  WHERE t3.y>0 OR t3.y IS NULL
10261  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10262} {
10263   5 105 205 305   -  -   -  - 305  5
10264  10 110 210 310 110 10   -  - 310 10
10265  15 115 215 315   -  - 215 15 315 15
10266  20 120 220 320 120 20   -  - 320 20
10267  25 125 225 325   -  -   -  - 325 25
10268  30 130 230 330 130 30 230 30 330 30
10269  35 135 235 335   -  -   -  - 335 35
10270  40 140 240 340 140 40   -  - 340 40
10271  45 145 245 345   -  - 245 45 345 45
10272  50 150 250 350 150 50   -  - 350 50
10273  55 155 255 355   -  -   -  - 355 55
10274  60 160 260 360 160 60 260 60 360 60
10275  65 165 265 365   -  -   -  - 365 65
10276  70 170 270 370 170 70   -  - 370 70
10277  75 175 275 375   -  - 275 75 375 75
10278  80 180 280 380 180 80   -  - 380 80
10279  85 185 285 385   -  -   -  - 385 85
10280  90 190 290 390 190 90 290 90 390 90
10281  95 195 295 395   -  -   -  - 395 95
10282}
10283do_execsql_test joinD-384 {
10284  SELECT t1.*, t2.*, t3.*, t4.*
10285  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10286  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10287  INNER JOIN t4 ON t1.d=t4.d
10288  WHERE t4.z>0
10289  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10290} {
10291   5 105 205 305   -  -   -  - 305  5
10292  10 110 210 310 110 10   -  - 310 10
10293  15 115 215 315   -  - 215 15 315 15
10294  20 120 220 320 120 20   -  - 320 20
10295  25 125 225 325   -  -   -  - 325 25
10296  30 130 230 330 130 30 230 30 330 30
10297  35 135 235 335   -  -   -  - 335 35
10298  40 140 240 340 140 40   -  - 340 40
10299  45 145 245 345   -  - 245 45 345 45
10300  50 150 250 350 150 50   -  - 350 50
10301  55 155 255 355   -  -   -  - 355 55
10302  60 160 260 360 160 60 260 60 360 60
10303  65 165 265 365   -  -   -  - 365 65
10304  70 170 270 370 170 70   -  - 370 70
10305  75 175 275 375   -  - 275 75 375 75
10306  80 180 280 380 180 80   -  - 380 80
10307  85 185 285 385   -  -   -  - 385 85
10308  90 190 290 390 190 90 290 90 390 90
10309  95 195 295 395   -  -   -  - 395 95
10310}
10311do_execsql_test joinD-385 {
10312  SELECT t1.*, t2.*, t3.*, t4.*
10313  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10314  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10315  INNER JOIN t4 ON t1.d=t4.d
10316  WHERE t4.z IS NULL OR t4.z>0
10317  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10318} {
10319   5 105 205 305   -  -   -  - 305  5
10320  10 110 210 310 110 10   -  - 310 10
10321  15 115 215 315   -  - 215 15 315 15
10322  20 120 220 320 120 20   -  - 320 20
10323  25 125 225 325   -  -   -  - 325 25
10324  30 130 230 330 130 30 230 30 330 30
10325  35 135 235 335   -  -   -  - 335 35
10326  40 140 240 340 140 40   -  - 340 40
10327  45 145 245 345   -  - 245 45 345 45
10328  50 150 250 350 150 50   -  - 350 50
10329  55 155 255 355   -  -   -  - 355 55
10330  60 160 260 360 160 60 260 60 360 60
10331  65 165 265 365   -  -   -  - 365 65
10332  70 170 270 370 170 70   -  - 370 70
10333  75 175 275 375   -  - 275 75 375 75
10334  80 180 280 380 180 80   -  - 380 80
10335  85 185 285 385   -  -   -  - 385 85
10336  90 190 290 390 190 90 290 90 390 90
10337  95 195 295 395   -  -   -  - 395 95
10338}
10339do_execsql_test joinD-386 {
10340  SELECT t1.*, t2.*, t3.*, t4.*
10341  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10342  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10343  INNER JOIN t4 ON t1.d=t4.d
10344  WHERE t2.x>0 AND t4.z>0
10345  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10346} {
10347  10 110 210 310 110 10   -  - 310 10
10348  20 120 220 320 120 20   -  - 320 20
10349  30 130 230 330 130 30 230 30 330 30
10350  40 140 240 340 140 40   -  - 340 40
10351  50 150 250 350 150 50   -  - 350 50
10352  60 160 260 360 160 60 260 60 360 60
10353  70 170 270 370 170 70   -  - 370 70
10354  80 180 280 380 180 80   -  - 380 80
10355  90 190 290 390 190 90 290 90 390 90
10356}
10357do_execsql_test joinD-387 {
10358  SELECT t1.*, t2.*, t3.*, t4.*
10359  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10360  LEFT JOIN t3 ON t1.c=t3.c
10361  INNER JOIN t4 ON t1.d=t4.d
10362  WHERE t4.z>0 AND t3.y>0
10363  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10364} {
10365  15 115 215 315   -  - 215 15 315 15
10366  30 130 230 330 130 30 230 30 330 30
10367  45 145 245 345   -  - 245 45 345 45
10368  60 160 260 360 160 60 260 60 360 60
10369  75 175 275 375   -  - 275 75 375 75
10370  90 190 290 390 190 90 290 90 390 90
10371}
10372do_execsql_test joinD-388 {
10373  SELECT t1.*, t2.*, t3.*, t4.*
10374  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10375  LEFT JOIN t3 ON t1.c=t3.c
10376  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10377  WHERE t2.x>0 AND t3.y>0
10378  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10379} {
10380  30 130 230 330 130 30 230 30 330 30
10381  60 160 260 360 160 60 260 60 360 60
10382  90 190 290 390 190 90 290 90 390 90
10383}
10384do_execsql_test joinD-389 {
10385  SELECT t1.*, t2.*, t3.*, t4.*
10386  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10387  LEFT JOIN t3 ON t1.c=t3.c
10388  INNER JOIN t4 ON t1.d=t4.d
10389  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
10390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10391} {
10392  30 130 230 330 130 30 230 30 330 30
10393  60 160 260 360 160 60 260 60 360 60
10394  90 190 290 390 190 90 290 90 390 90
10395}
10396do_execsql_test joinD-390 {
10397  SELECT t1.*, t2.*, t3.*, t4.*
10398  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
10399  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10400  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
10401  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10402} {
10403   5 105 205 305   -  -   -  - 305  5
10404  10 110 210 310 110 10   -  - 310 10
10405  15 115 215 315   -  - 215 15 315 15
10406  20 120 220 320 120 20   -  - 320 20
10407  25 125 225 325   -  -   -  - 325 25
10408  30 130 230 330 130 30 230 30 330 30
10409  35 135 235 335   -  -   -  - 335 35
10410  40 140 240 340 140 40   -  - 340 40
10411  45 145 245 345   -  - 245 45 345 45
10412  50 150 250 350 150 50   -  - 350 50
10413  55 155 255 355   -  -   -  - 355 55
10414  60 160 260 360 160 60 260 60 360 60
10415  65 165 265 365   -  -   -  - 365 65
10416  70 170 270 370 170 70   -  - 370 70
10417  75 175 275 375   -  - 275 75 375 75
10418  80 180 280 380 180 80   -  - 380 80
10419  85 185 285 385   -  -   -  - 385 85
10420  90 190 290 390 190 90 290 90 390 90
10421  95 195 295 395   -  -   -  - 395 95
10422}
10423do_execsql_test joinD-391 {
10424  SELECT t1.*, t2.*, t3.*, t4.*
10425  FROM t1 LEFT JOIN t2 ON t2.x>0
10426  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10427  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
10428  WHERE t1.b IS NOT DISTINCT FROM t2.b
10429  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10430} {
10431  10 110 210 310 110 10   -  - 310 10
10432  20 120 220 320 120 20   -  - 320 20
10433  30 130 230 330 130 30 230 30 330 30
10434  40 140 240 340 140 40   -  - 340 40
10435  50 150 250 350 150 50   -  - 350 50
10436  60 160 260 360 160 60 260 60 360 60
10437  70 170 270 370 170 70   -  - 370 70
10438  80 180 280 380 180 80   -  - 380 80
10439  90 190 290 390 190 90 290 90 390 90
10440}
10441do_execsql_test joinD-392 {
10442  SELECT t1.*, t2.*, t3.*, t4.*
10443  FROM t1 LEFT JOIN t2 ON t2.x>0
10444  LEFT JOIN t3 ON t3.y>0
10445  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
10446  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
10447  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10448} {
10449  30 130 230 330 130 30 230 30 330 30
10450  60 160 260 360 160 60 260 60 360 60
10451  90 190 290 390 190 90 290 90 390 90
10452}
10453do_execsql_test joinD-393 {
10454  SELECT t1.*, t2.*, t3.*, t4.*
10455  FROM t1 LEFT JOIN t2 ON t2.x>0
10456  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
10457  INNER JOIN t4 ON t4.z>0
10458  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
10459  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10460} {
10461  10 110 210 310 110 10   -  - 310 10
10462  20 120 220 320 120 20   -  - 320 20
10463  30 130 230 330 130 30 230 30 330 30
10464  40 140 240 340 140 40   -  - 340 40
10465  50 150 250 350 150 50   -  - 350 50
10466  60 160 260 360 160 60 260 60 360 60
10467  70 170 270 370 170 70   -  - 370 70
10468  80 180 280 380 180 80   -  - 380 80
10469  90 190 290 390 190 90 290 90 390 90
10470}
10471do_execsql_test joinD-394 {
10472  SELECT t1.*, t2.*, t3.*, t4.*
10473  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
10474  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10475  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10476  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10477} {
10478   5 105 205 305   -  -   -  - 305  5
10479  10 110 210 310 110 10   -  - 310 10
10480  15 115 215 315   -  - 215 15 315 15
10481  20 120 220 320 120 20   -  - 320 20
10482  25 125 225 325   -  -   -  - 325 25
10483  30 130 230 330 130 30 230 30 330 30
10484  35 135 235 335   -  -   -  - 335 35
10485  40 140 240 340 140 40   -  - 340 40
10486  45 145 245 345   -  - 245 45 345 45
10487  50 150 250 350 150 50   -  - 350 50
10488  55 155 255 355   -  -   -  - 355 55
10489  60 160 260 360 160 60 260 60 360 60
10490  65 165 265 365   -  -   -  - 365 65
10491  70 170 270 370 170 70   -  - 370 70
10492  75 175 275 375   -  - 275 75 375 75
10493  80 180 280 380 180 80   -  - 380 80
10494  85 185 285 385   -  -   -  - 385 85
10495  90 190 290 390 190 90 290 90 390 90
10496  95 195 295 395   -  -   -  - 395 95
10497}
10498do_execsql_test joinD-395 {
10499  SELECT t1.*, t2.*, t3.*, t4.*
10500  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10501  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
10502  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
10503  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10504} {
10505   5 105 205 305   -  -   -  - 305  5
10506  10 110 210 310 110 10   -  - 310 10
10507  15 115 215 315   -  - 215 15 315 15
10508  20 120 220 320 120 20   -  - 320 20
10509  25 125 225 325   -  -   -  - 325 25
10510  30 130 230 330 130 30 230 30 330 30
10511  35 135 235 335   -  -   -  - 335 35
10512  40 140 240 340 140 40   -  - 340 40
10513  45 145 245 345   -  - 245 45 345 45
10514  50 150 250 350 150 50   -  - 350 50
10515  55 155 255 355   -  -   -  - 355 55
10516  60 160 260 360 160 60 260 60 360 60
10517  65 165 265 365   -  -   -  - 365 65
10518  70 170 270 370 170 70   -  - 370 70
10519  75 175 275 375   -  - 275 75 375 75
10520  80 180 280 380 180 80   -  - 380 80
10521  85 185 285 385   -  -   -  - 385 85
10522  90 190 290 390 190 90 290 90 390 90
10523  95 195 295 395   -  -   -  - 395 95
10524}
10525do_execsql_test joinD-396 {
10526  SELECT t1.*, t2.*, t3.*, t4.*
10527  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10528  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10529  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10530  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10531} {
10532   0 100 200 300   -  -   -  -   -  -
10533   1 101 201 301   -  -   -  -   -  -
10534   2 102 202 302 102  2   -  -   -  -
10535   3 103 203 303   -  - 203  3   -  -
10536   4 104 204 304 104  4   -  -   -  -
10537   5 105 205 305   -  -   -  - 305  5
10538   6 106 206 306 106  6 206  6   -  -
10539   7 107 207 307   -  -   -  -   -  -
10540   8 108 208 308 108  8   -  -   -  -
10541   9 109 209 309   -  - 209  9   -  -
10542  10 110 210 310 110 10   -  - 310 10
10543  11 111 211 311   -  -   -  -   -  -
10544  12 112 212 312 112 12 212 12   -  -
10545  13 113 213 313   -  -   -  -   -  -
10546  14 114 214 314 114 14   -  -   -  -
10547  15 115 215 315   -  - 215 15 315 15
10548  16 116 216 316 116 16   -  -   -  -
10549  17 117 217 317   -  -   -  -   -  -
10550  18 118 218 318 118 18 218 18   -  -
10551  19 119 219 319   -  -   -  -   -  -
10552  20 120 220 320 120 20   -  - 320 20
10553  21 121 221 321   -  - 221 21   -  -
10554  22 122 222 322 122 22   -  -   -  -
10555  23 123 223 323   -  -   -  -   -  -
10556  24 124 224 324 124 24 224 24   -  -
10557  25 125 225 325   -  -   -  - 325 25
10558  26 126 226 326 126 26   -  -   -  -
10559  27 127 227 327   -  - 227 27   -  -
10560  28 128 228 328 128 28   -  -   -  -
10561  29 129 229 329   -  -   -  -   -  -
10562  30 130 230 330 130 30 230 30 330 30
10563  31 131 231 331   -  -   -  -   -  -
10564  32 132 232 332 132 32   -  -   -  -
10565  33 133 233 333   -  - 233 33   -  -
10566  34 134 234 334 134 34   -  -   -  -
10567  35 135 235 335   -  -   -  - 335 35
10568  36 136 236 336 136 36 236 36   -  -
10569  37 137 237 337   -  -   -  -   -  -
10570  38 138 238 338 138 38   -  -   -  -
10571  39 139 239 339   -  - 239 39   -  -
10572  40 140 240 340 140 40   -  - 340 40
10573  41 141 241 341   -  -   -  -   -  -
10574  42 142 242 342 142 42 242 42   -  -
10575  43 143 243 343   -  -   -  -   -  -
10576  44 144 244 344 144 44   -  -   -  -
10577  45 145 245 345   -  - 245 45 345 45
10578  46 146 246 346 146 46   -  -   -  -
10579  47 147 247 347   -  -   -  -   -  -
10580  48 148 248 348 148 48 248 48   -  -
10581  49 149 249 349   -  -   -  -   -  -
10582  50 150 250 350 150 50   -  - 350 50
10583  51 151 251 351   -  - 251 51   -  -
10584  52 152 252 352 152 52   -  -   -  -
10585  53 153 253 353   -  -   -  -   -  -
10586  54 154 254 354 154 54 254 54   -  -
10587  55 155 255 355   -  -   -  - 355 55
10588  56 156 256 356 156 56   -  -   -  -
10589  57 157 257 357   -  - 257 57   -  -
10590  58 158 258 358 158 58   -  -   -  -
10591  59 159 259 359   -  -   -  -   -  -
10592  60 160 260 360 160 60 260 60 360 60
10593  61 161 261 361   -  -   -  -   -  -
10594  62 162 262 362 162 62   -  -   -  -
10595  63 163 263 363   -  - 263 63   -  -
10596  64 164 264 364 164 64   -  -   -  -
10597  65 165 265 365   -  -   -  - 365 65
10598  66 166 266 366 166 66 266 66   -  -
10599  67 167 267 367   -  -   -  -   -  -
10600  68 168 268 368 168 68   -  -   -  -
10601  69 169 269 369   -  - 269 69   -  -
10602  70 170 270 370 170 70   -  - 370 70
10603  71 171 271 371   -  -   -  -   -  -
10604  72 172 272 372 172 72 272 72   -  -
10605  73 173 273 373   -  -   -  -   -  -
10606  74 174 274 374 174 74   -  -   -  -
10607  75 175 275 375   -  - 275 75 375 75
10608  76 176 276 376 176 76   -  -   -  -
10609  77 177 277 377   -  -   -  -   -  -
10610  78 178 278 378 178 78 278 78   -  -
10611  79 179 279 379   -  -   -  -   -  -
10612  80 180 280 380 180 80   -  - 380 80
10613  81 181 281 381   -  - 281 81   -  -
10614  82 182 282 382 182 82   -  -   -  -
10615  83 183 283 383   -  -   -  -   -  -
10616  84 184 284 384 184 84 284 84   -  -
10617  85 185 285 385   -  -   -  - 385 85
10618  86 186 286 386 186 86   -  -   -  -
10619  87 187 287 387   -  - 287 87   -  -
10620  88 188 288 388 188 88   -  -   -  -
10621  89 189 289 389   -  -   -  -   -  -
10622  90 190 290 390 190 90 290 90 390 90
10623  91 191 291 391   -  -   -  -   -  -
10624  92 192 292 392 192 92   -  -   -  -
10625  93 193 293 393   -  - 293 93   -  -
10626  94 194 294 394 194 94   -  -   -  -
10627  95 195 295 395   -  -   -  - 395 95
10628  96   - 296 396   -  -   -  -   -  -
10629  97 197   - 397   -  -   -  -   -  -
10630  98 198 298   -   -  -   -  -   -  -
10631  99   -   -   -   -  -   -  -   -  -
10632}
10633do_execsql_test joinD-397 {
10634  SELECT t1.*, t2.*, t3.*, t4.*
10635  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
10636  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10637  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10638  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10639} {
10640   0 100 200 300   -  -   -  -   -  -
10641   1 101 201 301   -  -   -  -   -  -
10642   2 102 202 302 102  2   -  -   -  -
10643   3 103 203 303   -  - 203  3   -  -
10644   4 104 204 304 104  4   -  -   -  -
10645   5 105 205 305   -  -   -  - 305  5
10646   6 106 206 306 106  6 206  6   -  -
10647   7 107 207 307   -  -   -  -   -  -
10648   8 108 208 308 108  8   -  -   -  -
10649   9 109 209 309   -  - 209  9   -  -
10650  10 110 210 310 110 10   -  - 310 10
10651  11 111 211 311   -  -   -  -   -  -
10652  12 112 212 312 112 12 212 12   -  -
10653  13 113 213 313   -  -   -  -   -  -
10654  14 114 214 314 114 14   -  -   -  -
10655  15 115 215 315   -  - 215 15 315 15
10656  16 116 216 316 116 16   -  -   -  -
10657  17 117 217 317   -  -   -  -   -  -
10658  18 118 218 318 118 18 218 18   -  -
10659  19 119 219 319   -  -   -  -   -  -
10660  20 120 220 320 120 20   -  - 320 20
10661  21 121 221 321   -  - 221 21   -  -
10662  22 122 222 322 122 22   -  -   -  -
10663  23 123 223 323   -  -   -  -   -  -
10664  24 124 224 324 124 24 224 24   -  -
10665  25 125 225 325   -  -   -  - 325 25
10666  26 126 226 326 126 26   -  -   -  -
10667  27 127 227 327   -  - 227 27   -  -
10668  28 128 228 328 128 28   -  -   -  -
10669  29 129 229 329   -  -   -  -   -  -
10670  30 130 230 330 130 30 230 30 330 30
10671  31 131 231 331   -  -   -  -   -  -
10672  32 132 232 332 132 32   -  -   -  -
10673  33 133 233 333   -  - 233 33   -  -
10674  34 134 234 334 134 34   -  -   -  -
10675  35 135 235 335   -  -   -  - 335 35
10676  36 136 236 336 136 36 236 36   -  -
10677  37 137 237 337   -  -   -  -   -  -
10678  38 138 238 338 138 38   -  -   -  -
10679  39 139 239 339   -  - 239 39   -  -
10680  40 140 240 340 140 40   -  - 340 40
10681  41 141 241 341   -  -   -  -   -  -
10682  42 142 242 342 142 42 242 42   -  -
10683  43 143 243 343   -  -   -  -   -  -
10684  44 144 244 344 144 44   -  -   -  -
10685  45 145 245 345   -  - 245 45 345 45
10686  46 146 246 346 146 46   -  -   -  -
10687  47 147 247 347   -  -   -  -   -  -
10688  48 148 248 348 148 48 248 48   -  -
10689  49 149 249 349   -  -   -  -   -  -
10690  50 150 250 350 150 50   -  - 350 50
10691  51 151 251 351   -  - 251 51   -  -
10692  52 152 252 352 152 52   -  -   -  -
10693  53 153 253 353   -  -   -  -   -  -
10694  54 154 254 354 154 54 254 54   -  -
10695  55 155 255 355   -  -   -  - 355 55
10696  56 156 256 356 156 56   -  -   -  -
10697  57 157 257 357   -  - 257 57   -  -
10698  58 158 258 358 158 58   -  -   -  -
10699  59 159 259 359   -  -   -  -   -  -
10700  60 160 260 360 160 60 260 60 360 60
10701  61 161 261 361   -  -   -  -   -  -
10702  62 162 262 362 162 62   -  -   -  -
10703  63 163 263 363   -  - 263 63   -  -
10704  64 164 264 364 164 64   -  -   -  -
10705  65 165 265 365   -  -   -  - 365 65
10706  66 166 266 366 166 66 266 66   -  -
10707  67 167 267 367   -  -   -  -   -  -
10708  68 168 268 368 168 68   -  -   -  -
10709  69 169 269 369   -  - 269 69   -  -
10710  70 170 270 370 170 70   -  - 370 70
10711  71 171 271 371   -  -   -  -   -  -
10712  72 172 272 372 172 72 272 72   -  -
10713  73 173 273 373   -  -   -  -   -  -
10714  74 174 274 374 174 74   -  -   -  -
10715  75 175 275 375   -  - 275 75 375 75
10716  76 176 276 376 176 76   -  -   -  -
10717  77 177 277 377   -  -   -  -   -  -
10718  78 178 278 378 178 78 278 78   -  -
10719  79 179 279 379   -  -   -  -   -  -
10720  80 180 280 380 180 80   -  - 380 80
10721  81 181 281 381   -  - 281 81   -  -
10722  82 182 282 382 182 82   -  -   -  -
10723  83 183 283 383   -  -   -  -   -  -
10724  84 184 284 384 184 84 284 84   -  -
10725  85 185 285 385   -  -   -  - 385 85
10726  86 186 286 386 186 86   -  -   -  -
10727  87 187 287 387   -  - 287 87   -  -
10728  88 188 288 388 188 88   -  -   -  -
10729  89 189 289 389   -  -   -  -   -  -
10730  90 190 290 390 190 90 290 90 390 90
10731  91 191 291 391   -  -   -  -   -  -
10732  92 192 292 392 192 92   -  -   -  -
10733  93 193 293 393   -  - 293 93   -  -
10734  94 194 294 394 194 94   -  -   -  -
10735  95 195 295 395   -  -   -  - 395 95
10736  96   - 296 396   -  -   -  -   -  -
10737  97 197   - 397   -  -   -  -   -  -
10738  98 198 298   -   -  -   -  -   -  -
10739  99   -   -   -   -  -   -  -   -  -
10740}
10741do_execsql_test joinD-398 {
10742  SELECT t1.*, t2.*, t3.*, t4.*
10743  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10744  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10745  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10746  WHERE t2.x>0
10747  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10748} {
10749   2 102 202 302 102  2   -  -   -  -
10750   4 104 204 304 104  4   -  -   -  -
10751   6 106 206 306 106  6 206  6   -  -
10752   8 108 208 308 108  8   -  -   -  -
10753  10 110 210 310 110 10   -  - 310 10
10754  12 112 212 312 112 12 212 12   -  -
10755  14 114 214 314 114 14   -  -   -  -
10756  16 116 216 316 116 16   -  -   -  -
10757  18 118 218 318 118 18 218 18   -  -
10758  20 120 220 320 120 20   -  - 320 20
10759  22 122 222 322 122 22   -  -   -  -
10760  24 124 224 324 124 24 224 24   -  -
10761  26 126 226 326 126 26   -  -   -  -
10762  28 128 228 328 128 28   -  -   -  -
10763  30 130 230 330 130 30 230 30 330 30
10764  32 132 232 332 132 32   -  -   -  -
10765  34 134 234 334 134 34   -  -   -  -
10766  36 136 236 336 136 36 236 36   -  -
10767  38 138 238 338 138 38   -  -   -  -
10768  40 140 240 340 140 40   -  - 340 40
10769  42 142 242 342 142 42 242 42   -  -
10770  44 144 244 344 144 44   -  -   -  -
10771  46 146 246 346 146 46   -  -   -  -
10772  48 148 248 348 148 48 248 48   -  -
10773  50 150 250 350 150 50   -  - 350 50
10774  52 152 252 352 152 52   -  -   -  -
10775  54 154 254 354 154 54 254 54   -  -
10776  56 156 256 356 156 56   -  -   -  -
10777  58 158 258 358 158 58   -  -   -  -
10778  60 160 260 360 160 60 260 60 360 60
10779  62 162 262 362 162 62   -  -   -  -
10780  64 164 264 364 164 64   -  -   -  -
10781  66 166 266 366 166 66 266 66   -  -
10782  68 168 268 368 168 68   -  -   -  -
10783  70 170 270 370 170 70   -  - 370 70
10784  72 172 272 372 172 72 272 72   -  -
10785  74 174 274 374 174 74   -  -   -  -
10786  76 176 276 376 176 76   -  -   -  -
10787  78 178 278 378 178 78 278 78   -  -
10788  80 180 280 380 180 80   -  - 380 80
10789  82 182 282 382 182 82   -  -   -  -
10790  84 184 284 384 184 84 284 84   -  -
10791  86 186 286 386 186 86   -  -   -  -
10792  88 188 288 388 188 88   -  -   -  -
10793  90 190 290 390 190 90 290 90 390 90
10794  92 192 292 392 192 92   -  -   -  -
10795  94 194 294 394 194 94   -  -   -  -
10796}
10797do_execsql_test joinD-399 {
10798  SELECT t1.*, t2.*, t3.*, t4.*
10799  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
10800  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10801  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10802  WHERE (t2.x>0 OR t2.x IS NULL)
10803  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10804} {
10805   1 101 201 301   -  -   -  -   -  -
10806   2 102 202 302 102  2   -  -   -  -
10807   3 103 203 303   -  - 203  3   -  -
10808   4 104 204 304 104  4   -  -   -  -
10809   5 105 205 305   -  -   -  - 305  5
10810   6 106 206 306 106  6 206  6   -  -
10811   7 107 207 307   -  -   -  -   -  -
10812   8 108 208 308 108  8   -  -   -  -
10813   9 109 209 309   -  - 209  9   -  -
10814  10 110 210 310 110 10   -  - 310 10
10815  11 111 211 311   -  -   -  -   -  -
10816  12 112 212 312 112 12 212 12   -  -
10817  13 113 213 313   -  -   -  -   -  -
10818  14 114 214 314 114 14   -  -   -  -
10819  15 115 215 315   -  - 215 15 315 15
10820  16 116 216 316 116 16   -  -   -  -
10821  17 117 217 317   -  -   -  -   -  -
10822  18 118 218 318 118 18 218 18   -  -
10823  19 119 219 319   -  -   -  -   -  -
10824  20 120 220 320 120 20   -  - 320 20
10825  21 121 221 321   -  - 221 21   -  -
10826  22 122 222 322 122 22   -  -   -  -
10827  23 123 223 323   -  -   -  -   -  -
10828  24 124 224 324 124 24 224 24   -  -
10829  25 125 225 325   -  -   -  - 325 25
10830  26 126 226 326 126 26   -  -   -  -
10831  27 127 227 327   -  - 227 27   -  -
10832  28 128 228 328 128 28   -  -   -  -
10833  29 129 229 329   -  -   -  -   -  -
10834  30 130 230 330 130 30 230 30 330 30
10835  31 131 231 331   -  -   -  -   -  -
10836  32 132 232 332 132 32   -  -   -  -
10837  33 133 233 333   -  - 233 33   -  -
10838  34 134 234 334 134 34   -  -   -  -
10839  35 135 235 335   -  -   -  - 335 35
10840  36 136 236 336 136 36 236 36   -  -
10841  37 137 237 337   -  -   -  -   -  -
10842  38 138 238 338 138 38   -  -   -  -
10843  39 139 239 339   -  - 239 39   -  -
10844  40 140 240 340 140 40   -  - 340 40
10845  41 141 241 341   -  -   -  -   -  -
10846  42 142 242 342 142 42 242 42   -  -
10847  43 143 243 343   -  -   -  -   -  -
10848  44 144 244 344 144 44   -  -   -  -
10849  45 145 245 345   -  - 245 45 345 45
10850  46 146 246 346 146 46   -  -   -  -
10851  47 147 247 347   -  -   -  -   -  -
10852  48 148 248 348 148 48 248 48   -  -
10853  49 149 249 349   -  -   -  -   -  -
10854  50 150 250 350 150 50   -  - 350 50
10855  51 151 251 351   -  - 251 51   -  -
10856  52 152 252 352 152 52   -  -   -  -
10857  53 153 253 353   -  -   -  -   -  -
10858  54 154 254 354 154 54 254 54   -  -
10859  55 155 255 355   -  -   -  - 355 55
10860  56 156 256 356 156 56   -  -   -  -
10861  57 157 257 357   -  - 257 57   -  -
10862  58 158 258 358 158 58   -  -   -  -
10863  59 159 259 359   -  -   -  -   -  -
10864  60 160 260 360 160 60 260 60 360 60
10865  61 161 261 361   -  -   -  -   -  -
10866  62 162 262 362 162 62   -  -   -  -
10867  63 163 263 363   -  - 263 63   -  -
10868  64 164 264 364 164 64   -  -   -  -
10869  65 165 265 365   -  -   -  - 365 65
10870  66 166 266 366 166 66 266 66   -  -
10871  67 167 267 367   -  -   -  -   -  -
10872  68 168 268 368 168 68   -  -   -  -
10873  69 169 269 369   -  - 269 69   -  -
10874  70 170 270 370 170 70   -  - 370 70
10875  71 171 271 371   -  -   -  -   -  -
10876  72 172 272 372 172 72 272 72   -  -
10877  73 173 273 373   -  -   -  -   -  -
10878  74 174 274 374 174 74   -  -   -  -
10879  75 175 275 375   -  - 275 75 375 75
10880  76 176 276 376 176 76   -  -   -  -
10881  77 177 277 377   -  -   -  -   -  -
10882  78 178 278 378 178 78 278 78   -  -
10883  79 179 279 379   -  -   -  -   -  -
10884  80 180 280 380 180 80   -  - 380 80
10885  81 181 281 381   -  - 281 81   -  -
10886  82 182 282 382 182 82   -  -   -  -
10887  83 183 283 383   -  -   -  -   -  -
10888  84 184 284 384 184 84 284 84   -  -
10889  85 185 285 385   -  -   -  - 385 85
10890  86 186 286 386 186 86   -  -   -  -
10891  87 187 287 387   -  - 287 87   -  -
10892  88 188 288 388 188 88   -  -   -  -
10893  89 189 289 389   -  -   -  -   -  -
10894  90 190 290 390 190 90 290 90 390 90
10895  91 191 291 391   -  -   -  -   -  -
10896  92 192 292 392 192 92   -  -   -  -
10897  93 193 293 393   -  - 293 93   -  -
10898  94 194 294 394 194 94   -  -   -  -
10899  95 195 295 395   -  -   -  - 395 95
10900  96   - 296 396   -  -   -  -   -  -
10901  97 197   - 397   -  -   -  -   -  -
10902  98 198 298   -   -  -   -  -   -  -
10903  99   -   -   -   -  -   -  -   -  -
10904}
10905do_execsql_test joinD-400 {
10906  SELECT t1.*, t2.*, t3.*, t4.*
10907  FROM t1 LEFT JOIN t2 ON true
10908  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
10909  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10910  WHERE t1.b=t2.b AND t2.x>0
10911  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10912} {
10913   2 102 202 302 102  2   -  -   -  -
10914   4 104 204 304 104  4   -  -   -  -
10915   6 106 206 306 106  6 206  6   -  -
10916   8 108 208 308 108  8   -  -   -  -
10917  10 110 210 310 110 10   -  - 310 10
10918  12 112 212 312 112 12 212 12   -  -
10919  14 114 214 314 114 14   -  -   -  -
10920  16 116 216 316 116 16   -  -   -  -
10921  18 118 218 318 118 18 218 18   -  -
10922  20 120 220 320 120 20   -  - 320 20
10923  22 122 222 322 122 22   -  -   -  -
10924  24 124 224 324 124 24 224 24   -  -
10925  26 126 226 326 126 26   -  -   -  -
10926  28 128 228 328 128 28   -  -   -  -
10927  30 130 230 330 130 30 230 30 330 30
10928  32 132 232 332 132 32   -  -   -  -
10929  34 134 234 334 134 34   -  -   -  -
10930  36 136 236 336 136 36 236 36   -  -
10931  38 138 238 338 138 38   -  -   -  -
10932  40 140 240 340 140 40   -  - 340 40
10933  42 142 242 342 142 42 242 42   -  -
10934  44 144 244 344 144 44   -  -   -  -
10935  46 146 246 346 146 46   -  -   -  -
10936  48 148 248 348 148 48 248 48   -  -
10937  50 150 250 350 150 50   -  - 350 50
10938  52 152 252 352 152 52   -  -   -  -
10939  54 154 254 354 154 54 254 54   -  -
10940  56 156 256 356 156 56   -  -   -  -
10941  58 158 258 358 158 58   -  -   -  -
10942  60 160 260 360 160 60 260 60 360 60
10943  62 162 262 362 162 62   -  -   -  -
10944  64 164 264 364 164 64   -  -   -  -
10945  66 166 266 366 166 66 266 66   -  -
10946  68 168 268 368 168 68   -  -   -  -
10947  70 170 270 370 170 70   -  - 370 70
10948  72 172 272 372 172 72 272 72   -  -
10949  74 174 274 374 174 74   -  -   -  -
10950  76 176 276 376 176 76   -  -   -  -
10951  78 178 278 378 178 78 278 78   -  -
10952  80 180 280 380 180 80   -  - 380 80
10953  82 182 282 382 182 82   -  -   -  -
10954  84 184 284 384 184 84 284 84   -  -
10955  86 186 286 386 186 86   -  -   -  -
10956  88 188 288 388 188 88   -  -   -  -
10957  90 190 290 390 190 90 290 90 390 90
10958  92 192 292 392 192 92   -  -   -  -
10959  94 194 294 394 194 94   -  -   -  -
10960}
10961do_execsql_test joinD-401 {
10962  SELECT t1.*, t2.*, t3.*, t4.*
10963  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
10964  LEFT JOIN t3 ON t1.c=t3.c
10965  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
10966  WHERE t3.y>0
10967  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
10968} {
10969   3 103 203 303   -  - 203  3   -  -
10970   6 106 206 306 106  6 206  6   -  -
10971   9 109 209 309   -  - 209  9   -  -
10972  12 112 212 312 112 12 212 12   -  -
10973  15 115 215 315   -  - 215 15 315 15
10974  18 118 218 318 118 18 218 18   -  -
10975  21 121 221 321   -  - 221 21   -  -
10976  24 124 224 324 124 24 224 24   -  -
10977  27 127 227 327   -  - 227 27   -  -
10978  30 130 230 330 130 30 230 30 330 30
10979  33 133 233 333   -  - 233 33   -  -
10980  36 136 236 336 136 36 236 36   -  -
10981  39 139 239 339   -  - 239 39   -  -
10982  42 142 242 342 142 42 242 42   -  -
10983  45 145 245 345   -  - 245 45 345 45
10984  48 148 248 348 148 48 248 48   -  -
10985  51 151 251 351   -  - 251 51   -  -
10986  54 154 254 354 154 54 254 54   -  -
10987  57 157 257 357   -  - 257 57   -  -
10988  60 160 260 360 160 60 260 60 360 60
10989  63 163 263 363   -  - 263 63   -  -
10990  66 166 266 366 166 66 266 66   -  -
10991  69 169 269 369   -  - 269 69   -  -
10992  72 172 272 372 172 72 272 72   -  -
10993  75 175 275 375   -  - 275 75 375 75
10994  78 178 278 378 178 78 278 78   -  -
10995  81 181 281 381   -  - 281 81   -  -
10996  84 184 284 384 184 84 284 84   -  -
10997  87 187 287 387   -  - 287 87   -  -
10998  90 190 290 390 190 90 290 90 390 90
10999  93 193 293 393   -  - 293 93   -  -
11000}
11001do_execsql_test joinD-402 {
11002  SELECT t1.*, t2.*, t3.*, t4.*
11003  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11004  LEFT JOIN t3 ON t1.c=t3.c
11005  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11006  WHERE t3.y>0 OR t3.y IS NULL
11007  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11008} {
11009   1 101 201 301   -  -   -  -   -  -
11010   2 102 202 302 102  2   -  -   -  -
11011   3 103 203 303   -  - 203  3   -  -
11012   4 104 204 304 104  4   -  -   -  -
11013   5 105 205 305   -  -   -  - 305  5
11014   6 106 206 306 106  6 206  6   -  -
11015   7 107 207 307   -  -   -  -   -  -
11016   8 108 208 308 108  8   -  -   -  -
11017   9 109 209 309   -  - 209  9   -  -
11018  10 110 210 310 110 10   -  - 310 10
11019  11 111 211 311   -  -   -  -   -  -
11020  12 112 212 312 112 12 212 12   -  -
11021  13 113 213 313   -  -   -  -   -  -
11022  14 114 214 314 114 14   -  -   -  -
11023  15 115 215 315   -  - 215 15 315 15
11024  16 116 216 316 116 16   -  -   -  -
11025  17 117 217 317   -  -   -  -   -  -
11026  18 118 218 318 118 18 218 18   -  -
11027  19 119 219 319   -  -   -  -   -  -
11028  20 120 220 320 120 20   -  - 320 20
11029  21 121 221 321   -  - 221 21   -  -
11030  22 122 222 322 122 22   -  -   -  -
11031  23 123 223 323   -  -   -  -   -  -
11032  24 124 224 324 124 24 224 24   -  -
11033  25 125 225 325   -  -   -  - 325 25
11034  26 126 226 326 126 26   -  -   -  -
11035  27 127 227 327   -  - 227 27   -  -
11036  28 128 228 328 128 28   -  -   -  -
11037  29 129 229 329   -  -   -  -   -  -
11038  30 130 230 330 130 30 230 30 330 30
11039  31 131 231 331   -  -   -  -   -  -
11040  32 132 232 332 132 32   -  -   -  -
11041  33 133 233 333   -  - 233 33   -  -
11042  34 134 234 334 134 34   -  -   -  -
11043  35 135 235 335   -  -   -  - 335 35
11044  36 136 236 336 136 36 236 36   -  -
11045  37 137 237 337   -  -   -  -   -  -
11046  38 138 238 338 138 38   -  -   -  -
11047  39 139 239 339   -  - 239 39   -  -
11048  40 140 240 340 140 40   -  - 340 40
11049  41 141 241 341   -  -   -  -   -  -
11050  42 142 242 342 142 42 242 42   -  -
11051  43 143 243 343   -  -   -  -   -  -
11052  44 144 244 344 144 44   -  -   -  -
11053  45 145 245 345   -  - 245 45 345 45
11054  46 146 246 346 146 46   -  -   -  -
11055  47 147 247 347   -  -   -  -   -  -
11056  48 148 248 348 148 48 248 48   -  -
11057  49 149 249 349   -  -   -  -   -  -
11058  50 150 250 350 150 50   -  - 350 50
11059  51 151 251 351   -  - 251 51   -  -
11060  52 152 252 352 152 52   -  -   -  -
11061  53 153 253 353   -  -   -  -   -  -
11062  54 154 254 354 154 54 254 54   -  -
11063  55 155 255 355   -  -   -  - 355 55
11064  56 156 256 356 156 56   -  -   -  -
11065  57 157 257 357   -  - 257 57   -  -
11066  58 158 258 358 158 58   -  -   -  -
11067  59 159 259 359   -  -   -  -   -  -
11068  60 160 260 360 160 60 260 60 360 60
11069  61 161 261 361   -  -   -  -   -  -
11070  62 162 262 362 162 62   -  -   -  -
11071  63 163 263 363   -  - 263 63   -  -
11072  64 164 264 364 164 64   -  -   -  -
11073  65 165 265 365   -  -   -  - 365 65
11074  66 166 266 366 166 66 266 66   -  -
11075  67 167 267 367   -  -   -  -   -  -
11076  68 168 268 368 168 68   -  -   -  -
11077  69 169 269 369   -  - 269 69   -  -
11078  70 170 270 370 170 70   -  - 370 70
11079  71 171 271 371   -  -   -  -   -  -
11080  72 172 272 372 172 72 272 72   -  -
11081  73 173 273 373   -  -   -  -   -  -
11082  74 174 274 374 174 74   -  -   -  -
11083  75 175 275 375   -  - 275 75 375 75
11084  76 176 276 376 176 76   -  -   -  -
11085  77 177 277 377   -  -   -  -   -  -
11086  78 178 278 378 178 78 278 78   -  -
11087  79 179 279 379   -  -   -  -   -  -
11088  80 180 280 380 180 80   -  - 380 80
11089  81 181 281 381   -  - 281 81   -  -
11090  82 182 282 382 182 82   -  -   -  -
11091  83 183 283 383   -  -   -  -   -  -
11092  84 184 284 384 184 84 284 84   -  -
11093  85 185 285 385   -  -   -  - 385 85
11094  86 186 286 386 186 86   -  -   -  -
11095  87 187 287 387   -  - 287 87   -  -
11096  88 188 288 388 188 88   -  -   -  -
11097  89 189 289 389   -  -   -  -   -  -
11098  90 190 290 390 190 90 290 90 390 90
11099  91 191 291 391   -  -   -  -   -  -
11100  92 192 292 392 192 92   -  -   -  -
11101  93 193 293 393   -  - 293 93   -  -
11102  94 194 294 394 194 94   -  -   -  -
11103  95 195 295 395   -  -   -  - 395 95
11104  96   - 296 396   -  -   -  -   -  -
11105  97 197   - 397   -  -   -  -   -  -
11106  98 198 298   -   -  -   -  -   -  -
11107  99   -   -   -   -  -   -  -   -  -
11108}
11109do_execsql_test joinD-403 {
11110  SELECT t1.*, t2.*, t3.*, t4.*
11111  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11112  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11113  LEFT JOIN t4 ON t1.d=t4.d
11114  WHERE t4.z>0
11115  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11116} {
11117   5 105 205 305   -  -   -  - 305  5
11118  10 110 210 310 110 10   -  - 310 10
11119  15 115 215 315   -  - 215 15 315 15
11120  20 120 220 320 120 20   -  - 320 20
11121  25 125 225 325   -  -   -  - 325 25
11122  30 130 230 330 130 30 230 30 330 30
11123  35 135 235 335   -  -   -  - 335 35
11124  40 140 240 340 140 40   -  - 340 40
11125  45 145 245 345   -  - 245 45 345 45
11126  50 150 250 350 150 50   -  - 350 50
11127  55 155 255 355   -  -   -  - 355 55
11128  60 160 260 360 160 60 260 60 360 60
11129  65 165 265 365   -  -   -  - 365 65
11130  70 170 270 370 170 70   -  - 370 70
11131  75 175 275 375   -  - 275 75 375 75
11132  80 180 280 380 180 80   -  - 380 80
11133  85 185 285 385   -  -   -  - 385 85
11134  90 190 290 390 190 90 290 90 390 90
11135  95 195 295 395   -  -   -  - 395 95
11136}
11137do_execsql_test joinD-404 {
11138  SELECT t1.*, t2.*, t3.*, t4.*
11139  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11140  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11141  LEFT JOIN t4 ON t1.d=t4.d
11142  WHERE t4.z IS NULL OR t4.z>0
11143  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11144} {
11145   1 101 201 301   -  -   -  -   -  -
11146   2 102 202 302 102  2   -  -   -  -
11147   3 103 203 303   -  - 203  3   -  -
11148   4 104 204 304 104  4   -  -   -  -
11149   5 105 205 305   -  -   -  - 305  5
11150   6 106 206 306 106  6 206  6   -  -
11151   7 107 207 307   -  -   -  -   -  -
11152   8 108 208 308 108  8   -  -   -  -
11153   9 109 209 309   -  - 209  9   -  -
11154  10 110 210 310 110 10   -  - 310 10
11155  11 111 211 311   -  -   -  -   -  -
11156  12 112 212 312 112 12 212 12   -  -
11157  13 113 213 313   -  -   -  -   -  -
11158  14 114 214 314 114 14   -  -   -  -
11159  15 115 215 315   -  - 215 15 315 15
11160  16 116 216 316 116 16   -  -   -  -
11161  17 117 217 317   -  -   -  -   -  -
11162  18 118 218 318 118 18 218 18   -  -
11163  19 119 219 319   -  -   -  -   -  -
11164  20 120 220 320 120 20   -  - 320 20
11165  21 121 221 321   -  - 221 21   -  -
11166  22 122 222 322 122 22   -  -   -  -
11167  23 123 223 323   -  -   -  -   -  -
11168  24 124 224 324 124 24 224 24   -  -
11169  25 125 225 325   -  -   -  - 325 25
11170  26 126 226 326 126 26   -  -   -  -
11171  27 127 227 327   -  - 227 27   -  -
11172  28 128 228 328 128 28   -  -   -  -
11173  29 129 229 329   -  -   -  -   -  -
11174  30 130 230 330 130 30 230 30 330 30
11175  31 131 231 331   -  -   -  -   -  -
11176  32 132 232 332 132 32   -  -   -  -
11177  33 133 233 333   -  - 233 33   -  -
11178  34 134 234 334 134 34   -  -   -  -
11179  35 135 235 335   -  -   -  - 335 35
11180  36 136 236 336 136 36 236 36   -  -
11181  37 137 237 337   -  -   -  -   -  -
11182  38 138 238 338 138 38   -  -   -  -
11183  39 139 239 339   -  - 239 39   -  -
11184  40 140 240 340 140 40   -  - 340 40
11185  41 141 241 341   -  -   -  -   -  -
11186  42 142 242 342 142 42 242 42   -  -
11187  43 143 243 343   -  -   -  -   -  -
11188  44 144 244 344 144 44   -  -   -  -
11189  45 145 245 345   -  - 245 45 345 45
11190  46 146 246 346 146 46   -  -   -  -
11191  47 147 247 347   -  -   -  -   -  -
11192  48 148 248 348 148 48 248 48   -  -
11193  49 149 249 349   -  -   -  -   -  -
11194  50 150 250 350 150 50   -  - 350 50
11195  51 151 251 351   -  - 251 51   -  -
11196  52 152 252 352 152 52   -  -   -  -
11197  53 153 253 353   -  -   -  -   -  -
11198  54 154 254 354 154 54 254 54   -  -
11199  55 155 255 355   -  -   -  - 355 55
11200  56 156 256 356 156 56   -  -   -  -
11201  57 157 257 357   -  - 257 57   -  -
11202  58 158 258 358 158 58   -  -   -  -
11203  59 159 259 359   -  -   -  -   -  -
11204  60 160 260 360 160 60 260 60 360 60
11205  61 161 261 361   -  -   -  -   -  -
11206  62 162 262 362 162 62   -  -   -  -
11207  63 163 263 363   -  - 263 63   -  -
11208  64 164 264 364 164 64   -  -   -  -
11209  65 165 265 365   -  -   -  - 365 65
11210  66 166 266 366 166 66 266 66   -  -
11211  67 167 267 367   -  -   -  -   -  -
11212  68 168 268 368 168 68   -  -   -  -
11213  69 169 269 369   -  - 269 69   -  -
11214  70 170 270 370 170 70   -  - 370 70
11215  71 171 271 371   -  -   -  -   -  -
11216  72 172 272 372 172 72 272 72   -  -
11217  73 173 273 373   -  -   -  -   -  -
11218  74 174 274 374 174 74   -  -   -  -
11219  75 175 275 375   -  - 275 75 375 75
11220  76 176 276 376 176 76   -  -   -  -
11221  77 177 277 377   -  -   -  -   -  -
11222  78 178 278 378 178 78 278 78   -  -
11223  79 179 279 379   -  -   -  -   -  -
11224  80 180 280 380 180 80   -  - 380 80
11225  81 181 281 381   -  - 281 81   -  -
11226  82 182 282 382 182 82   -  -   -  -
11227  83 183 283 383   -  -   -  -   -  -
11228  84 184 284 384 184 84 284 84   -  -
11229  85 185 285 385   -  -   -  - 385 85
11230  86 186 286 386 186 86   -  -   -  -
11231  87 187 287 387   -  - 287 87   -  -
11232  88 188 288 388 188 88   -  -   -  -
11233  89 189 289 389   -  -   -  -   -  -
11234  90 190 290 390 190 90 290 90 390 90
11235  91 191 291 391   -  -   -  -   -  -
11236  92 192 292 392 192 92   -  -   -  -
11237  93 193 293 393   -  - 293 93   -  -
11238  94 194 294 394 194 94   -  -   -  -
11239  95 195 295 395   -  -   -  - 395 95
11240  96   - 296 396   -  -   -  -   -  -
11241  97 197   - 397   -  -   -  -   -  -
11242  98 198 298   -   -  -   -  -   -  -
11243  99   -   -   -   -  -   -  -   -  -
11244}
11245do_execsql_test joinD-405 {
11246  SELECT t1.*, t2.*, t3.*, t4.*
11247  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11248  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11249  LEFT JOIN t4 ON t1.d=t4.d
11250  WHERE t2.x>0 AND t4.z>0
11251  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11252} {
11253  10 110 210 310 110 10   -  - 310 10
11254  20 120 220 320 120 20   -  - 320 20
11255  30 130 230 330 130 30 230 30 330 30
11256  40 140 240 340 140 40   -  - 340 40
11257  50 150 250 350 150 50   -  - 350 50
11258  60 160 260 360 160 60 260 60 360 60
11259  70 170 270 370 170 70   -  - 370 70
11260  80 180 280 380 180 80   -  - 380 80
11261  90 190 290 390 190 90 290 90 390 90
11262}
11263do_execsql_test joinD-406 {
11264  SELECT t1.*, t2.*, t3.*, t4.*
11265  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11266  LEFT JOIN t3 ON t1.c=t3.c
11267  LEFT JOIN t4 ON t1.d=t4.d
11268  WHERE t4.z>0 AND t3.y>0
11269  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11270} {
11271  15 115 215 315   -  - 215 15 315 15
11272  30 130 230 330 130 30 230 30 330 30
11273  45 145 245 345   -  - 245 45 345 45
11274  60 160 260 360 160 60 260 60 360 60
11275  75 175 275 375   -  - 275 75 375 75
11276  90 190 290 390 190 90 290 90 390 90
11277}
11278do_execsql_test joinD-407 {
11279  SELECT t1.*, t2.*, t3.*, t4.*
11280  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11281  LEFT JOIN t3 ON t1.c=t3.c
11282  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11283  WHERE t2.x>0 AND t3.y>0
11284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11285} {
11286   6 106 206 306 106  6 206  6   -  -
11287  12 112 212 312 112 12 212 12   -  -
11288  18 118 218 318 118 18 218 18   -  -
11289  24 124 224 324 124 24 224 24   -  -
11290  30 130 230 330 130 30 230 30 330 30
11291  36 136 236 336 136 36 236 36   -  -
11292  42 142 242 342 142 42 242 42   -  -
11293  48 148 248 348 148 48 248 48   -  -
11294  54 154 254 354 154 54 254 54   -  -
11295  60 160 260 360 160 60 260 60 360 60
11296  66 166 266 366 166 66 266 66   -  -
11297  72 172 272 372 172 72 272 72   -  -
11298  78 178 278 378 178 78 278 78   -  -
11299  84 184 284 384 184 84 284 84   -  -
11300  90 190 290 390 190 90 290 90 390 90
11301}
11302do_execsql_test joinD-408 {
11303  SELECT t1.*, t2.*, t3.*, t4.*
11304  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11305  LEFT JOIN t3 ON t1.c=t3.c
11306  LEFT JOIN t4 ON t1.d=t4.d
11307  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
11308  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11309} {
11310  30 130 230 330 130 30 230 30 330 30
11311  60 160 260 360 160 60 260 60 360 60
11312  90 190 290 390 190 90 290 90 390 90
11313}
11314do_execsql_test joinD-409 {
11315  SELECT t1.*, t2.*, t3.*, t4.*
11316  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
11317  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
11318  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
11319  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11320} {
11321   0 100 200 300   -  -   -  -   -  -
11322   1 101 201 301   -  -   -  -   -  -
11323   2 102 202 302 102  2   -  -   -  -
11324   3 103 203 303   -  - 203  3   -  -
11325   4 104 204 304 104  4   -  -   -  -
11326   5 105 205 305   -  -   -  - 305  5
11327   6 106 206 306 106  6 206  6   -  -
11328   7 107 207 307   -  -   -  -   -  -
11329   8 108 208 308 108  8   -  -   -  -
11330   9 109 209 309   -  - 209  9   -  -
11331  10 110 210 310 110 10   -  - 310 10
11332  11 111 211 311   -  -   -  -   -  -
11333  12 112 212 312 112 12 212 12   -  -
11334  13 113 213 313   -  -   -  -   -  -
11335  14 114 214 314 114 14   -  -   -  -
11336  15 115 215 315   -  - 215 15 315 15
11337  16 116 216 316 116 16   -  -   -  -
11338  17 117 217 317   -  -   -  -   -  -
11339  18 118 218 318 118 18 218 18   -  -
11340  19 119 219 319   -  -   -  -   -  -
11341  20 120 220 320 120 20   -  - 320 20
11342  21 121 221 321   -  - 221 21   -  -
11343  22 122 222 322 122 22   -  -   -  -
11344  23 123 223 323   -  -   -  -   -  -
11345  24 124 224 324 124 24 224 24   -  -
11346  25 125 225 325   -  -   -  - 325 25
11347  26 126 226 326 126 26   -  -   -  -
11348  27 127 227 327   -  - 227 27   -  -
11349  28 128 228 328 128 28   -  -   -  -
11350  29 129 229 329   -  -   -  -   -  -
11351  30 130 230 330 130 30 230 30 330 30
11352  31 131 231 331   -  -   -  -   -  -
11353  32 132 232 332 132 32   -  -   -  -
11354  33 133 233 333   -  - 233 33   -  -
11355  34 134 234 334 134 34   -  -   -  -
11356  35 135 235 335   -  -   -  - 335 35
11357  36 136 236 336 136 36 236 36   -  -
11358  37 137 237 337   -  -   -  -   -  -
11359  38 138 238 338 138 38   -  -   -  -
11360  39 139 239 339   -  - 239 39   -  -
11361  40 140 240 340 140 40   -  - 340 40
11362  41 141 241 341   -  -   -  -   -  -
11363  42 142 242 342 142 42 242 42   -  -
11364  43 143 243 343   -  -   -  -   -  -
11365  44 144 244 344 144 44   -  -   -  -
11366  45 145 245 345   -  - 245 45 345 45
11367  46 146 246 346 146 46   -  -   -  -
11368  47 147 247 347   -  -   -  -   -  -
11369  48 148 248 348 148 48 248 48   -  -
11370  49 149 249 349   -  -   -  -   -  -
11371  50 150 250 350 150 50   -  - 350 50
11372  51 151 251 351   -  - 251 51   -  -
11373  52 152 252 352 152 52   -  -   -  -
11374  53 153 253 353   -  -   -  -   -  -
11375  54 154 254 354 154 54 254 54   -  -
11376  55 155 255 355   -  -   -  - 355 55
11377  56 156 256 356 156 56   -  -   -  -
11378  57 157 257 357   -  - 257 57   -  -
11379  58 158 258 358 158 58   -  -   -  -
11380  59 159 259 359   -  -   -  -   -  -
11381  60 160 260 360 160 60 260 60 360 60
11382  61 161 261 361   -  -   -  -   -  -
11383  62 162 262 362 162 62   -  -   -  -
11384  63 163 263 363   -  - 263 63   -  -
11385  64 164 264 364 164 64   -  -   -  -
11386  65 165 265 365   -  -   -  - 365 65
11387  66 166 266 366 166 66 266 66   -  -
11388  67 167 267 367   -  -   -  -   -  -
11389  68 168 268 368 168 68   -  -   -  -
11390  69 169 269 369   -  - 269 69   -  -
11391  70 170 270 370 170 70   -  - 370 70
11392  71 171 271 371   -  -   -  -   -  -
11393  72 172 272 372 172 72 272 72   -  -
11394  73 173 273 373   -  -   -  -   -  -
11395  74 174 274 374 174 74   -  -   -  -
11396  75 175 275 375   -  - 275 75 375 75
11397  76 176 276 376 176 76   -  -   -  -
11398  77 177 277 377   -  -   -  -   -  -
11399  78 178 278 378 178 78 278 78   -  -
11400  79 179 279 379   -  -   -  -   -  -
11401  80 180 280 380 180 80   -  - 380 80
11402  81 181 281 381   -  - 281 81   -  -
11403  82 182 282 382 182 82   -  -   -  -
11404  83 183 283 383   -  -   -  -   -  -
11405  84 184 284 384 184 84 284 84   -  -
11406  85 185 285 385   -  -   -  - 385 85
11407  86 186 286 386 186 86   -  -   -  -
11408  87 187 287 387   -  - 287 87   -  -
11409  88 188 288 388 188 88   -  -   -  -
11410  89 189 289 389   -  -   -  -   -  -
11411  90 190 290 390 190 90 290 90 390 90
11412  91 191 291 391   -  -   -  -   -  -
11413  92 192 292 392 192 92   -  -   -  -
11414  93 193 293 393   -  - 293 93   -  -
11415  94 194 294 394 194 94   -  -   -  -
11416  95 195 295 395   -  -   -  - 395 95
11417  96   - 296 396   -  -   -  -   -  -
11418  97 197   - 397   -  -   -  -   -  -
11419  98 198 298   -   -  -   -  -   -  -
11420  99   -   -   -   -  -   -  -   -  -
11421}
11422do_execsql_test joinD-410 {
11423  SELECT t1.*, t2.*, t3.*, t4.*
11424  FROM t1 LEFT JOIN t2 ON t2.x>0
11425  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
11426  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
11427  WHERE t1.b IS NOT DISTINCT FROM t2.b
11428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11429} {
11430   2 102 202 302 102  2   -  -   -  -
11431   4 104 204 304 104  4   -  -   -  -
11432   6 106 206 306 106  6 206  6   -  -
11433   8 108 208 308 108  8   -  -   -  -
11434  10 110 210 310 110 10   -  - 310 10
11435  12 112 212 312 112 12 212 12   -  -
11436  14 114 214 314 114 14   -  -   -  -
11437  16 116 216 316 116 16   -  -   -  -
11438  18 118 218 318 118 18 218 18   -  -
11439  20 120 220 320 120 20   -  - 320 20
11440  22 122 222 322 122 22   -  -   -  -
11441  24 124 224 324 124 24 224 24   -  -
11442  26 126 226 326 126 26   -  -   -  -
11443  28 128 228 328 128 28   -  -   -  -
11444  30 130 230 330 130 30 230 30 330 30
11445  32 132 232 332 132 32   -  -   -  -
11446  34 134 234 334 134 34   -  -   -  -
11447  36 136 236 336 136 36 236 36   -  -
11448  38 138 238 338 138 38   -  -   -  -
11449  40 140 240 340 140 40   -  - 340 40
11450  42 142 242 342 142 42 242 42   -  -
11451  44 144 244 344 144 44   -  -   -  -
11452  46 146 246 346 146 46   -  -   -  -
11453  48 148 248 348 148 48 248 48   -  -
11454  50 150 250 350 150 50   -  - 350 50
11455  52 152 252 352 152 52   -  -   -  -
11456  54 154 254 354 154 54 254 54   -  -
11457  56 156 256 356 156 56   -  -   -  -
11458  58 158 258 358 158 58   -  -   -  -
11459  60 160 260 360 160 60 260 60 360 60
11460  62 162 262 362 162 62   -  -   -  -
11461  64 164 264 364 164 64   -  -   -  -
11462  66 166 266 366 166 66 266 66   -  -
11463  68 168 268 368 168 68   -  -   -  -
11464  70 170 270 370 170 70   -  - 370 70
11465  72 172 272 372 172 72 272 72   -  -
11466  74 174 274 374 174 74   -  -   -  -
11467  76 176 276 376 176 76   -  -   -  -
11468  78 178 278 378 178 78 278 78   -  -
11469  80 180 280 380 180 80   -  - 380 80
11470  82 182 282 382 182 82   -  -   -  -
11471  84 184 284 384 184 84 284 84   -  -
11472  86 186 286 386 186 86   -  -   -  -
11473  88 188 288 388 188 88   -  -   -  -
11474  90 190 290 390 190 90 290 90 390 90
11475  92 192 292 392 192 92   -  -   -  -
11476  94 194 294 394 194 94   -  -   -  -
11477}
11478do_execsql_test joinD-411 {
11479  SELECT t1.*, t2.*, t3.*, t4.*
11480  FROM t1 LEFT JOIN t2 ON t2.x>0
11481  LEFT JOIN t3 ON t3.y>0
11482  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
11483  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
11484  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11485} {
11486   6 106 206 306 106  6 206  6   -  -
11487  12 112 212 312 112 12 212 12   -  -
11488  18 118 218 318 118 18 218 18   -  -
11489  24 124 224 324 124 24 224 24   -  -
11490  30 130 230 330 130 30 230 30 330 30
11491  36 136 236 336 136 36 236 36   -  -
11492  42 142 242 342 142 42 242 42   -  -
11493  48 148 248 348 148 48 248 48   -  -
11494  54 154 254 354 154 54 254 54   -  -
11495  60 160 260 360 160 60 260 60 360 60
11496  66 166 266 366 166 66 266 66   -  -
11497  72 172 272 372 172 72 272 72   -  -
11498  78 178 278 378 178 78 278 78   -  -
11499  84 184 284 384 184 84 284 84   -  -
11500  90 190 290 390 190 90 290 90 390 90
11501}
11502do_execsql_test joinD-412 {
11503  SELECT t1.*, t2.*, t3.*, t4.*
11504  FROM t1 LEFT JOIN t2 ON t2.x>0
11505  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
11506  LEFT JOIN t4 ON t4.z>0
11507  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
11508  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11509} {
11510  10 110 210 310 110 10   -  - 310 10
11511  20 120 220 320 120 20   -  - 320 20
11512  30 130 230 330 130 30 230 30 330 30
11513  40 140 240 340 140 40   -  - 340 40
11514  50 150 250 350 150 50   -  - 350 50
11515  60 160 260 360 160 60 260 60 360 60
11516  70 170 270 370 170 70   -  - 370 70
11517  80 180 280 380 180 80   -  - 380 80
11518  90 190 290 390 190 90 290 90 390 90
11519}
11520do_execsql_test joinD-413 {
11521  SELECT t1.*, t2.*, t3.*, t4.*
11522  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
11523  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11524  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11525  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11526} {
11527   0 100 200 300   -  -   -  -   -  -
11528   1 101 201 301   -  -   -  -   -  -
11529   2 102 202 302 102  2   -  -   -  -
11530   3 103 203 303   -  - 203  3   -  -
11531   4 104 204 304 104  4   -  -   -  -
11532   5 105 205 305   -  -   -  - 305  5
11533   6 106 206 306 106  6 206  6   -  -
11534   7 107 207 307   -  -   -  -   -  -
11535   8 108 208 308 108  8   -  -   -  -
11536   9 109 209 309   -  - 209  9   -  -
11537  10 110 210 310 110 10   -  - 310 10
11538  11 111 211 311   -  -   -  -   -  -
11539  12 112 212 312 112 12 212 12   -  -
11540  13 113 213 313   -  -   -  -   -  -
11541  14 114 214 314 114 14   -  -   -  -
11542  15 115 215 315   -  - 215 15 315 15
11543  16 116 216 316 116 16   -  -   -  -
11544  17 117 217 317   -  -   -  -   -  -
11545  18 118 218 318 118 18 218 18   -  -
11546  19 119 219 319   -  -   -  -   -  -
11547  20 120 220 320 120 20   -  - 320 20
11548  21 121 221 321   -  - 221 21   -  -
11549  22 122 222 322 122 22   -  -   -  -
11550  23 123 223 323   -  -   -  -   -  -
11551  24 124 224 324 124 24 224 24   -  -
11552  25 125 225 325   -  -   -  - 325 25
11553  26 126 226 326 126 26   -  -   -  -
11554  27 127 227 327   -  - 227 27   -  -
11555  28 128 228 328 128 28   -  -   -  -
11556  29 129 229 329   -  -   -  -   -  -
11557  30 130 230 330 130 30 230 30 330 30
11558  31 131 231 331   -  -   -  -   -  -
11559  32 132 232 332 132 32   -  -   -  -
11560  33 133 233 333   -  - 233 33   -  -
11561  34 134 234 334 134 34   -  -   -  -
11562  35 135 235 335   -  -   -  - 335 35
11563  36 136 236 336 136 36 236 36   -  -
11564  37 137 237 337   -  -   -  -   -  -
11565  38 138 238 338 138 38   -  -   -  -
11566  39 139 239 339   -  - 239 39   -  -
11567  40 140 240 340 140 40   -  - 340 40
11568  41 141 241 341   -  -   -  -   -  -
11569  42 142 242 342 142 42 242 42   -  -
11570  43 143 243 343   -  -   -  -   -  -
11571  44 144 244 344 144 44   -  -   -  -
11572  45 145 245 345   -  - 245 45 345 45
11573  46 146 246 346 146 46   -  -   -  -
11574  47 147 247 347   -  -   -  -   -  -
11575  48 148 248 348 148 48 248 48   -  -
11576  49 149 249 349   -  -   -  -   -  -
11577  50 150 250 350 150 50   -  - 350 50
11578  51 151 251 351   -  - 251 51   -  -
11579  52 152 252 352 152 52   -  -   -  -
11580  53 153 253 353   -  -   -  -   -  -
11581  54 154 254 354 154 54 254 54   -  -
11582  55 155 255 355   -  -   -  - 355 55
11583  56 156 256 356 156 56   -  -   -  -
11584  57 157 257 357   -  - 257 57   -  -
11585  58 158 258 358 158 58   -  -   -  -
11586  59 159 259 359   -  -   -  -   -  -
11587  60 160 260 360 160 60 260 60 360 60
11588  61 161 261 361   -  -   -  -   -  -
11589  62 162 262 362 162 62   -  -   -  -
11590  63 163 263 363   -  - 263 63   -  -
11591  64 164 264 364 164 64   -  -   -  -
11592  65 165 265 365   -  -   -  - 365 65
11593  66 166 266 366 166 66 266 66   -  -
11594  67 167 267 367   -  -   -  -   -  -
11595  68 168 268 368 168 68   -  -   -  -
11596  69 169 269 369   -  - 269 69   -  -
11597  70 170 270 370 170 70   -  - 370 70
11598  71 171 271 371   -  -   -  -   -  -
11599  72 172 272 372 172 72 272 72   -  -
11600  73 173 273 373   -  -   -  -   -  -
11601  74 174 274 374 174 74   -  -   -  -
11602  75 175 275 375   -  - 275 75 375 75
11603  76 176 276 376 176 76   -  -   -  -
11604  77 177 277 377   -  -   -  -   -  -
11605  78 178 278 378 178 78 278 78   -  -
11606  79 179 279 379   -  -   -  -   -  -
11607  80 180 280 380 180 80   -  - 380 80
11608  81 181 281 381   -  - 281 81   -  -
11609  82 182 282 382 182 82   -  -   -  -
11610  83 183 283 383   -  -   -  -   -  -
11611  84 184 284 384 184 84 284 84   -  -
11612  85 185 285 385   -  -   -  - 385 85
11613  86 186 286 386 186 86   -  -   -  -
11614  87 187 287 387   -  - 287 87   -  -
11615  88 188 288 388 188 88   -  -   -  -
11616  89 189 289 389   -  -   -  -   -  -
11617  90 190 290 390 190 90 290 90 390 90
11618  91 191 291 391   -  -   -  -   -  -
11619  92 192 292 392 192 92   -  -   -  -
11620  93 193 293 393   -  - 293 93   -  -
11621  94 194 294 394 194 94   -  -   -  -
11622  95 195 295 395   -  -   -  - 395 95
11623  96   - 296 396   -  -   -  -   -  -
11624  97 197   - 397   -  -   -  -   -  -
11625  98 198 298   -   -  -   -  -   -  -
11626  99   -   -   -   -  -   -  -   -  -
11627}
11628do_execsql_test joinD-414 {
11629  SELECT t1.*, t2.*, t3.*, t4.*
11630  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11631  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
11632  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
11633  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11634} {
11635   0 100 200 300   -  -   -  -   -  -
11636   1 101 201 301   -  -   -  -   -  -
11637   2 102 202 302 102  2   -  -   -  -
11638   3 103 203 303   -  - 203  3   -  -
11639   4 104 204 304 104  4   -  -   -  -
11640   5 105 205 305   -  -   -  - 305  5
11641   6 106 206 306 106  6 206  6   -  -
11642   7 107 207 307   -  -   -  -   -  -
11643   8 108 208 308 108  8   -  -   -  -
11644   9 109 209 309   -  - 209  9   -  -
11645  10 110 210 310 110 10   -  - 310 10
11646  11 111 211 311   -  -   -  -   -  -
11647  12 112 212 312 112 12 212 12   -  -
11648  13 113 213 313   -  -   -  -   -  -
11649  14 114 214 314 114 14   -  -   -  -
11650  15 115 215 315   -  - 215 15 315 15
11651  16 116 216 316 116 16   -  -   -  -
11652  17 117 217 317   -  -   -  -   -  -
11653  18 118 218 318 118 18 218 18   -  -
11654  19 119 219 319   -  -   -  -   -  -
11655  20 120 220 320 120 20   -  - 320 20
11656  21 121 221 321   -  - 221 21   -  -
11657  22 122 222 322 122 22   -  -   -  -
11658  23 123 223 323   -  -   -  -   -  -
11659  24 124 224 324 124 24 224 24   -  -
11660  25 125 225 325   -  -   -  - 325 25
11661  26 126 226 326 126 26   -  -   -  -
11662  27 127 227 327   -  - 227 27   -  -
11663  28 128 228 328 128 28   -  -   -  -
11664  29 129 229 329   -  -   -  -   -  -
11665  30 130 230 330 130 30 230 30 330 30
11666  31 131 231 331   -  -   -  -   -  -
11667  32 132 232 332 132 32   -  -   -  -
11668  33 133 233 333   -  - 233 33   -  -
11669  34 134 234 334 134 34   -  -   -  -
11670  35 135 235 335   -  -   -  - 335 35
11671  36 136 236 336 136 36 236 36   -  -
11672  37 137 237 337   -  -   -  -   -  -
11673  38 138 238 338 138 38   -  -   -  -
11674  39 139 239 339   -  - 239 39   -  -
11675  40 140 240 340 140 40   -  - 340 40
11676  41 141 241 341   -  -   -  -   -  -
11677  42 142 242 342 142 42 242 42   -  -
11678  43 143 243 343   -  -   -  -   -  -
11679  44 144 244 344 144 44   -  -   -  -
11680  45 145 245 345   -  - 245 45 345 45
11681  46 146 246 346 146 46   -  -   -  -
11682  47 147 247 347   -  -   -  -   -  -
11683  48 148 248 348 148 48 248 48   -  -
11684  49 149 249 349   -  -   -  -   -  -
11685  50 150 250 350 150 50   -  - 350 50
11686  51 151 251 351   -  - 251 51   -  -
11687  52 152 252 352 152 52   -  -   -  -
11688  53 153 253 353   -  -   -  -   -  -
11689  54 154 254 354 154 54 254 54   -  -
11690  55 155 255 355   -  -   -  - 355 55
11691  56 156 256 356 156 56   -  -   -  -
11692  57 157 257 357   -  - 257 57   -  -
11693  58 158 258 358 158 58   -  -   -  -
11694  59 159 259 359   -  -   -  -   -  -
11695  60 160 260 360 160 60 260 60 360 60
11696  61 161 261 361   -  -   -  -   -  -
11697  62 162 262 362 162 62   -  -   -  -
11698  63 163 263 363   -  - 263 63   -  -
11699  64 164 264 364 164 64   -  -   -  -
11700  65 165 265 365   -  -   -  - 365 65
11701  66 166 266 366 166 66 266 66   -  -
11702  67 167 267 367   -  -   -  -   -  -
11703  68 168 268 368 168 68   -  -   -  -
11704  69 169 269 369   -  - 269 69   -  -
11705  70 170 270 370 170 70   -  - 370 70
11706  71 171 271 371   -  -   -  -   -  -
11707  72 172 272 372 172 72 272 72   -  -
11708  73 173 273 373   -  -   -  -   -  -
11709  74 174 274 374 174 74   -  -   -  -
11710  75 175 275 375   -  - 275 75 375 75
11711  76 176 276 376 176 76   -  -   -  -
11712  77 177 277 377   -  -   -  -   -  -
11713  78 178 278 378 178 78 278 78   -  -
11714  79 179 279 379   -  -   -  -   -  -
11715  80 180 280 380 180 80   -  - 380 80
11716  81 181 281 381   -  - 281 81   -  -
11717  82 182 282 382 182 82   -  -   -  -
11718  83 183 283 383   -  -   -  -   -  -
11719  84 184 284 384 184 84 284 84   -  -
11720  85 185 285 385   -  -   -  - 385 85
11721  86 186 286 386 186 86   -  -   -  -
11722  87 187 287 387   -  - 287 87   -  -
11723  88 188 288 388 188 88   -  -   -  -
11724  89 189 289 389   -  -   -  -   -  -
11725  90 190 290 390 190 90 290 90 390 90
11726  91 191 291 391   -  -   -  -   -  -
11727  92 192 292 392 192 92   -  -   -  -
11728  93 193 293 393   -  - 293 93   -  -
11729  94 194 294 394 194 94   -  -   -  -
11730  95 195 295 395   -  -   -  - 395 95
11731  96   - 296 396   -  -   -  -   -  -
11732  97 197   - 397   -  -   -  -   -  -
11733  98 198 298   -   -  -   -  -   -  -
11734  99   -   -   -   -  -   -  -   -  -
11735}
11736do_execsql_test joinD-415 {
11737  SELECT t1.*, t2.*, t3.*, t4.*
11738  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11739  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11740  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11741  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11742} {
11743   5 105 205 305   -  -   -  - 305  5
11744  10 110 210 310 110 10   -  - 310 10
11745  15 115 215 315   -  - 215 15 315 15
11746  20 120 220 320 120 20   -  - 320 20
11747  25 125 225 325   -  -   -  - 325 25
11748  30 130 230 330 130 30 230 30 330 30
11749  35 135 235 335   -  -   -  - 335 35
11750  40 140 240 340 140 40   -  - 340 40
11751  45 145 245 345   -  - 245 45 345 45
11752  50 150 250 350 150 50   -  - 350 50
11753  55 155 255 355   -  -   -  - 355 55
11754  60 160 260 360 160 60 260 60 360 60
11755  65 165 265 365   -  -   -  - 365 65
11756  70 170 270 370 170 70   -  - 370 70
11757  75 175 275 375   -  - 275 75 375 75
11758  80 180 280 380 180 80   -  - 380 80
11759  85 185 285 385   -  -   -  - 385 85
11760  90 190 290 390 190 90 290 90 390 90
11761  95 195 295 395   -  -   -  - 395 95
11762   -   -   -   -   -  -   -  - 300  0
11763}
11764do_execsql_test joinD-416 {
11765  SELECT t1.*, t2.*, t3.*, t4.*
11766  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
11767  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11768  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11769  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11770} {
11771   5 105 205 305   -  -   -  - 305  5
11772  10 110 210 310 110 10   -  - 310 10
11773  15 115 215 315   -  - 215 15 315 15
11774  20 120 220 320 120 20   -  - 320 20
11775  25 125 225 325   -  -   -  - 325 25
11776  30 130 230 330 130 30 230 30 330 30
11777  35 135 235 335   -  -   -  - 335 35
11778  40 140 240 340 140 40   -  - 340 40
11779  45 145 245 345   -  - 245 45 345 45
11780  50 150 250 350 150 50   -  - 350 50
11781  55 155 255 355   -  -   -  - 355 55
11782  60 160 260 360 160 60 260 60 360 60
11783  65 165 265 365   -  -   -  - 365 65
11784  70 170 270 370 170 70   -  - 370 70
11785  75 175 275 375   -  - 275 75 375 75
11786  80 180 280 380 180 80   -  - 380 80
11787  85 185 285 385   -  -   -  - 385 85
11788  90 190 290 390 190 90 290 90 390 90
11789  95 195 295 395   -  -   -  - 395 95
11790   -   -   -   -   -  -   -  - 300  0
11791}
11792do_execsql_test joinD-417 {
11793  SELECT t1.*, t2.*, t3.*, t4.*
11794  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11795  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11796  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11797  WHERE t2.x>0
11798  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11799} {
11800  10 110 210 310 110 10   -  - 310 10
11801  20 120 220 320 120 20   -  - 320 20
11802  30 130 230 330 130 30 230 30 330 30
11803  40 140 240 340 140 40   -  - 340 40
11804  50 150 250 350 150 50   -  - 350 50
11805  60 160 260 360 160 60 260 60 360 60
11806  70 170 270 370 170 70   -  - 370 70
11807  80 180 280 380 180 80   -  - 380 80
11808  90 190 290 390 190 90 290 90 390 90
11809}
11810do_execsql_test joinD-418 {
11811  SELECT t1.*, t2.*, t3.*, t4.*
11812  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11813  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11814  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11815  WHERE (t2.x>0 OR t2.x IS NULL)
11816  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11817} {
11818   5 105 205 305   -  -   -  - 305  5
11819  10 110 210 310 110 10   -  - 310 10
11820  15 115 215 315   -  - 215 15 315 15
11821  20 120 220 320 120 20   -  - 320 20
11822  25 125 225 325   -  -   -  - 325 25
11823  30 130 230 330 130 30 230 30 330 30
11824  35 135 235 335   -  -   -  - 335 35
11825  40 140 240 340 140 40   -  - 340 40
11826  45 145 245 345   -  - 245 45 345 45
11827  50 150 250 350 150 50   -  - 350 50
11828  55 155 255 355   -  -   -  - 355 55
11829  60 160 260 360 160 60 260 60 360 60
11830  65 165 265 365   -  -   -  - 365 65
11831  70 170 270 370 170 70   -  - 370 70
11832  75 175 275 375   -  - 275 75 375 75
11833  80 180 280 380 180 80   -  - 380 80
11834  85 185 285 385   -  -   -  - 385 85
11835  90 190 290 390 190 90 290 90 390 90
11836  95 195 295 395   -  -   -  - 395 95
11837   -   -   -   -   -  -   -  - 300  0
11838}
11839do_execsql_test joinD-419 {
11840  SELECT t1.*, t2.*, t3.*, t4.*
11841  FROM t1 LEFT JOIN t2 ON true
11842  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11843  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11844  WHERE t1.b=t2.b AND t2.x>0
11845  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11846} {
11847  10 110 210 310 110 10   -  - 310 10
11848  20 120 220 320 120 20   -  - 320 20
11849  30 130 230 330 130 30 230 30 330 30
11850  40 140 240 340 140 40   -  - 340 40
11851  50 150 250 350 150 50   -  - 350 50
11852  60 160 260 360 160 60 260 60 360 60
11853  70 170 270 370 170 70   -  - 370 70
11854  80 180 280 380 180 80   -  - 380 80
11855  90 190 290 390 190 90 290 90 390 90
11856}
11857do_execsql_test joinD-420 {
11858  SELECT t1.*, t2.*, t3.*, t4.*
11859  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11860  LEFT JOIN t3 ON t1.c=t3.c
11861  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11862  WHERE t3.y>0
11863  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11864} {
11865  15 115 215 315   -  - 215 15 315 15
11866  30 130 230 330 130 30 230 30 330 30
11867  45 145 245 345   -  - 245 45 345 45
11868  60 160 260 360 160 60 260 60 360 60
11869  75 175 275 375   -  - 275 75 375 75
11870  90 190 290 390 190 90 290 90 390 90
11871}
11872do_execsql_test joinD-421 {
11873  SELECT t1.*, t2.*, t3.*, t4.*
11874  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11875  LEFT JOIN t3 ON t1.c=t3.c
11876  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11877  WHERE t3.y>0 OR t3.y IS NULL
11878  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11879} {
11880   5 105 205 305   -  -   -  - 305  5
11881  10 110 210 310 110 10   -  - 310 10
11882  15 115 215 315   -  - 215 15 315 15
11883  20 120 220 320 120 20   -  - 320 20
11884  25 125 225 325   -  -   -  - 325 25
11885  30 130 230 330 130 30 230 30 330 30
11886  35 135 235 335   -  -   -  - 335 35
11887  40 140 240 340 140 40   -  - 340 40
11888  45 145 245 345   -  - 245 45 345 45
11889  50 150 250 350 150 50   -  - 350 50
11890  55 155 255 355   -  -   -  - 355 55
11891  60 160 260 360 160 60 260 60 360 60
11892  65 165 265 365   -  -   -  - 365 65
11893  70 170 270 370 170 70   -  - 370 70
11894  75 175 275 375   -  - 275 75 375 75
11895  80 180 280 380 180 80   -  - 380 80
11896  85 185 285 385   -  -   -  - 385 85
11897  90 190 290 390 190 90 290 90 390 90
11898  95 195 295 395   -  -   -  - 395 95
11899   -   -   -   -   -  -   -  - 300  0
11900}
11901do_execsql_test joinD-422 {
11902  SELECT t1.*, t2.*, t3.*, t4.*
11903  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11904  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11905  RIGHT JOIN t4 ON t1.d=t4.d
11906  WHERE t4.z>0
11907  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11908} {
11909   5 105 205 305   -  -   -  - 305  5
11910  10 110 210 310 110 10   -  - 310 10
11911  15 115 215 315   -  - 215 15 315 15
11912  20 120 220 320 120 20   -  - 320 20
11913  25 125 225 325   -  -   -  - 325 25
11914  30 130 230 330 130 30 230 30 330 30
11915  35 135 235 335   -  -   -  - 335 35
11916  40 140 240 340 140 40   -  - 340 40
11917  45 145 245 345   -  - 245 45 345 45
11918  50 150 250 350 150 50   -  - 350 50
11919  55 155 255 355   -  -   -  - 355 55
11920  60 160 260 360 160 60 260 60 360 60
11921  65 165 265 365   -  -   -  - 365 65
11922  70 170 270 370 170 70   -  - 370 70
11923  75 175 275 375   -  - 275 75 375 75
11924  80 180 280 380 180 80   -  - 380 80
11925  85 185 285 385   -  -   -  - 385 85
11926  90 190 290 390 190 90 290 90 390 90
11927  95 195 295 395   -  -   -  - 395 95
11928}
11929do_execsql_test joinD-423 {
11930  SELECT t1.*, t2.*, t3.*, t4.*
11931  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11932  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11933  RIGHT JOIN t4 ON t1.d=t4.d
11934  WHERE t4.z IS NULL OR t4.z>0
11935  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11936} {
11937   5 105 205 305   -  -   -  - 305  5
11938  10 110 210 310 110 10   -  - 310 10
11939  15 115 215 315   -  - 215 15 315 15
11940  20 120 220 320 120 20   -  - 320 20
11941  25 125 225 325   -  -   -  - 325 25
11942  30 130 230 330 130 30 230 30 330 30
11943  35 135 235 335   -  -   -  - 335 35
11944  40 140 240 340 140 40   -  - 340 40
11945  45 145 245 345   -  - 245 45 345 45
11946  50 150 250 350 150 50   -  - 350 50
11947  55 155 255 355   -  -   -  - 355 55
11948  60 160 260 360 160 60 260 60 360 60
11949  65 165 265 365   -  -   -  - 365 65
11950  70 170 270 370 170 70   -  - 370 70
11951  75 175 275 375   -  - 275 75 375 75
11952  80 180 280 380 180 80   -  - 380 80
11953  85 185 285 385   -  -   -  - 385 85
11954  90 190 290 390 190 90 290 90 390 90
11955  95 195 295 395   -  -   -  - 395 95
11956}
11957do_execsql_test joinD-424 {
11958  SELECT t1.*, t2.*, t3.*, t4.*
11959  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11960  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
11961  RIGHT JOIN t4 ON t1.d=t4.d
11962  WHERE t2.x>0 AND t4.z>0
11963  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11964} {
11965  10 110 210 310 110 10   -  - 310 10
11966  20 120 220 320 120 20   -  - 320 20
11967  30 130 230 330 130 30 230 30 330 30
11968  40 140 240 340 140 40   -  - 340 40
11969  50 150 250 350 150 50   -  - 350 50
11970  60 160 260 360 160 60 260 60 360 60
11971  70 170 270 370 170 70   -  - 370 70
11972  80 180 280 380 180 80   -  - 380 80
11973  90 190 290 390 190 90 290 90 390 90
11974}
11975do_execsql_test joinD-425 {
11976  SELECT t1.*, t2.*, t3.*, t4.*
11977  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
11978  LEFT JOIN t3 ON t1.c=t3.c
11979  RIGHT JOIN t4 ON t1.d=t4.d
11980  WHERE t4.z>0 AND t3.y>0
11981  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11982} {
11983  15 115 215 315   -  - 215 15 315 15
11984  30 130 230 330 130 30 230 30 330 30
11985  45 145 245 345   -  - 245 45 345 45
11986  60 160 260 360 160 60 260 60 360 60
11987  75 175 275 375   -  - 275 75 375 75
11988  90 190 290 390 190 90 290 90 390 90
11989}
11990do_execsql_test joinD-426 {
11991  SELECT t1.*, t2.*, t3.*, t4.*
11992  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
11993  LEFT JOIN t3 ON t1.c=t3.c
11994  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
11995  WHERE t2.x>0 AND t3.y>0
11996  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
11997} {
11998  30 130 230 330 130 30 230 30 330 30
11999  60 160 260 360 160 60 260 60 360 60
12000  90 190 290 390 190 90 290 90 390 90
12001}
12002do_execsql_test joinD-427 {
12003  SELECT t1.*, t2.*, t3.*, t4.*
12004  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12005  LEFT JOIN t3 ON t1.c=t3.c
12006  RIGHT JOIN t4 ON t1.d=t4.d
12007  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
12008  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12009} {
12010  30 130 230 330 130 30 230 30 330 30
12011  60 160 260 360 160 60 260 60 360 60
12012  90 190 290 390 190 90 290 90 390 90
12013}
12014do_execsql_test joinD-428 {
12015  SELECT t1.*, t2.*, t3.*, t4.*
12016  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
12017  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12018  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
12019  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12020} {
12021   5 105 205 305   -  -   -  - 305  5
12022  10 110 210 310 110 10   -  - 310 10
12023  15 115 215 315   -  - 215 15 315 15
12024  20 120 220 320 120 20   -  - 320 20
12025  25 125 225 325   -  -   -  - 325 25
12026  30 130 230 330 130 30 230 30 330 30
12027  35 135 235 335   -  -   -  - 335 35
12028  40 140 240 340 140 40   -  - 340 40
12029  45 145 245 345   -  - 245 45 345 45
12030  50 150 250 350 150 50   -  - 350 50
12031  55 155 255 355   -  -   -  - 355 55
12032  60 160 260 360 160 60 260 60 360 60
12033  65 165 265 365   -  -   -  - 365 65
12034  70 170 270 370 170 70   -  - 370 70
12035  75 175 275 375   -  - 275 75 375 75
12036  80 180 280 380 180 80   -  - 380 80
12037  85 185 285 385   -  -   -  - 385 85
12038  90 190 290 390 190 90 290 90 390 90
12039  95 195 295 395   -  -   -  - 395 95
12040   -   -   -   -   -  -   -  - 300  0
12041}
12042do_execsql_test joinD-429 {
12043  SELECT t1.*, t2.*, t3.*, t4.*
12044  FROM t1 LEFT JOIN t2 ON t2.x>0
12045  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12046  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
12047  WHERE t1.b IS NOT DISTINCT FROM t2.b
12048  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12049} {
12050  10 110 210 310 110 10   -  - 310 10
12051  20 120 220 320 120 20   -  - 320 20
12052  30 130 230 330 130 30 230 30 330 30
12053  40 140 240 340 140 40   -  - 340 40
12054  50 150 250 350 150 50   -  - 350 50
12055  60 160 260 360 160 60 260 60 360 60
12056  70 170 270 370 170 70   -  - 370 70
12057  80 180 280 380 180 80   -  - 380 80
12058  90 190 290 390 190 90 290 90 390 90
12059   -   -   -   -   -  -   -  - 300  0
12060}
12061do_execsql_test joinD-430 {
12062  SELECT t1.*, t2.*, t3.*, t4.*
12063  FROM t1 LEFT JOIN t2 ON t2.x>0
12064  LEFT JOIN t3 ON t3.y>0
12065  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
12066  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
12067  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12068} {
12069  30 130 230 330 130 30 230 30 330 30
12070  60 160 260 360 160 60 260 60 360 60
12071  90 190 290 390 190 90 290 90 390 90
12072   -   -   -   -   -  -   -  - 300  0
12073}
12074do_execsql_test joinD-431 {
12075  SELECT t1.*, t2.*, t3.*, t4.*
12076  FROM t1 LEFT JOIN t2 ON t2.x>0
12077  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12078  RIGHT JOIN t4 ON t4.z>0
12079  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
12080  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12081} {
12082  10 110 210 310 110 10   -  - 310 10
12083  20 120 220 320 120 20   -  - 320 20
12084  30 130 230 330 130 30 230 30 330 30
12085  40 140 240 340 140 40   -  - 340 40
12086  50 150 250 350 150 50   -  - 350 50
12087  60 160 260 360 160 60 260 60 360 60
12088  70 170 270 370 170 70   -  - 370 70
12089  80 180 280 380 180 80   -  - 380 80
12090  90 190 290 390 190 90 290 90 390 90
12091}
12092do_execsql_test joinD-432 {
12093  SELECT t1.*, t2.*, t3.*, t4.*
12094  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
12095  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12096  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
12097  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12098} {
12099   5 105 205 305   -  -   -  - 305  5
12100  10 110 210 310 110 10   -  - 310 10
12101  15 115 215 315   -  - 215 15 315 15
12102  20 120 220 320 120 20   -  - 320 20
12103  25 125 225 325   -  -   -  - 325 25
12104  30 130 230 330 130 30 230 30 330 30
12105  35 135 235 335   -  -   -  - 335 35
12106  40 140 240 340 140 40   -  - 340 40
12107  45 145 245 345   -  - 245 45 345 45
12108  50 150 250 350 150 50   -  - 350 50
12109  55 155 255 355   -  -   -  - 355 55
12110  60 160 260 360 160 60 260 60 360 60
12111  65 165 265 365   -  -   -  - 365 65
12112  70 170 270 370 170 70   -  - 370 70
12113  75 175 275 375   -  - 275 75 375 75
12114  80 180 280 380 180 80   -  - 380 80
12115  85 185 285 385   -  -   -  - 385 85
12116  90 190 290 390 190 90 290 90 390 90
12117  95 195 295 395   -  -   -  - 395 95
12118   -   -   -   -   -  -   -  - 300  0
12119}
12120do_execsql_test joinD-433 {
12121  SELECT t1.*, t2.*, t3.*, t4.*
12122  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12123  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
12124  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
12125  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12126} {
12127   5 105 205 305   -  -   -  - 305  5
12128  10 110 210 310 110 10   -  - 310 10
12129  15 115 215 315   -  - 215 15 315 15
12130  20 120 220 320 120 20   -  - 320 20
12131  25 125 225 325   -  -   -  - 325 25
12132  30 130 230 330 130 30 230 30 330 30
12133  35 135 235 335   -  -   -  - 335 35
12134  40 140 240 340 140 40   -  - 340 40
12135  45 145 245 345   -  - 245 45 345 45
12136  50 150 250 350 150 50   -  - 350 50
12137  55 155 255 355   -  -   -  - 355 55
12138  60 160 260 360 160 60 260 60 360 60
12139  65 165 265 365   -  -   -  - 365 65
12140  70 170 270 370 170 70   -  - 370 70
12141  75 175 275 375   -  - 275 75 375 75
12142  80 180 280 380 180 80   -  - 380 80
12143  85 185 285 385   -  -   -  - 385 85
12144  90 190 290 390 190 90 290 90 390 90
12145  95 195 295 395   -  -   -  - 395 95
12146   -   -   -   -   -  -   -  - 300  0
12147}
12148do_execsql_test joinD-434 {
12149  SELECT t1.*, t2.*, t3.*, t4.*
12150  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12151  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12152  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12153  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12154} {
12155   0 100 200 300   -  -   -  -   -  -
12156   1 101 201 301   -  -   -  -   -  -
12157   2 102 202 302 102  2   -  -   -  -
12158   3 103 203 303   -  - 203  3   -  -
12159   4 104 204 304 104  4   -  -   -  -
12160   5 105 205 305   -  -   -  - 305  5
12161   6 106 206 306 106  6 206  6   -  -
12162   7 107 207 307   -  -   -  -   -  -
12163   8 108 208 308 108  8   -  -   -  -
12164   9 109 209 309   -  - 209  9   -  -
12165  10 110 210 310 110 10   -  - 310 10
12166  11 111 211 311   -  -   -  -   -  -
12167  12 112 212 312 112 12 212 12   -  -
12168  13 113 213 313   -  -   -  -   -  -
12169  14 114 214 314 114 14   -  -   -  -
12170  15 115 215 315   -  - 215 15 315 15
12171  16 116 216 316 116 16   -  -   -  -
12172  17 117 217 317   -  -   -  -   -  -
12173  18 118 218 318 118 18 218 18   -  -
12174  19 119 219 319   -  -   -  -   -  -
12175  20 120 220 320 120 20   -  - 320 20
12176  21 121 221 321   -  - 221 21   -  -
12177  22 122 222 322 122 22   -  -   -  -
12178  23 123 223 323   -  -   -  -   -  -
12179  24 124 224 324 124 24 224 24   -  -
12180  25 125 225 325   -  -   -  - 325 25
12181  26 126 226 326 126 26   -  -   -  -
12182  27 127 227 327   -  - 227 27   -  -
12183  28 128 228 328 128 28   -  -   -  -
12184  29 129 229 329   -  -   -  -   -  -
12185  30 130 230 330 130 30 230 30 330 30
12186  31 131 231 331   -  -   -  -   -  -
12187  32 132 232 332 132 32   -  -   -  -
12188  33 133 233 333   -  - 233 33   -  -
12189  34 134 234 334 134 34   -  -   -  -
12190  35 135 235 335   -  -   -  - 335 35
12191  36 136 236 336 136 36 236 36   -  -
12192  37 137 237 337   -  -   -  -   -  -
12193  38 138 238 338 138 38   -  -   -  -
12194  39 139 239 339   -  - 239 39   -  -
12195  40 140 240 340 140 40   -  - 340 40
12196  41 141 241 341   -  -   -  -   -  -
12197  42 142 242 342 142 42 242 42   -  -
12198  43 143 243 343   -  -   -  -   -  -
12199  44 144 244 344 144 44   -  -   -  -
12200  45 145 245 345   -  - 245 45 345 45
12201  46 146 246 346 146 46   -  -   -  -
12202  47 147 247 347   -  -   -  -   -  -
12203  48 148 248 348 148 48 248 48   -  -
12204  49 149 249 349   -  -   -  -   -  -
12205  50 150 250 350 150 50   -  - 350 50
12206  51 151 251 351   -  - 251 51   -  -
12207  52 152 252 352 152 52   -  -   -  -
12208  53 153 253 353   -  -   -  -   -  -
12209  54 154 254 354 154 54 254 54   -  -
12210  55 155 255 355   -  -   -  - 355 55
12211  56 156 256 356 156 56   -  -   -  -
12212  57 157 257 357   -  - 257 57   -  -
12213  58 158 258 358 158 58   -  -   -  -
12214  59 159 259 359   -  -   -  -   -  -
12215  60 160 260 360 160 60 260 60 360 60
12216  61 161 261 361   -  -   -  -   -  -
12217  62 162 262 362 162 62   -  -   -  -
12218  63 163 263 363   -  - 263 63   -  -
12219  64 164 264 364 164 64   -  -   -  -
12220  65 165 265 365   -  -   -  - 365 65
12221  66 166 266 366 166 66 266 66   -  -
12222  67 167 267 367   -  -   -  -   -  -
12223  68 168 268 368 168 68   -  -   -  -
12224  69 169 269 369   -  - 269 69   -  -
12225  70 170 270 370 170 70   -  - 370 70
12226  71 171 271 371   -  -   -  -   -  -
12227  72 172 272 372 172 72 272 72   -  -
12228  73 173 273 373   -  -   -  -   -  -
12229  74 174 274 374 174 74   -  -   -  -
12230  75 175 275 375   -  - 275 75 375 75
12231  76 176 276 376 176 76   -  -   -  -
12232  77 177 277 377   -  -   -  -   -  -
12233  78 178 278 378 178 78 278 78   -  -
12234  79 179 279 379   -  -   -  -   -  -
12235  80 180 280 380 180 80   -  - 380 80
12236  81 181 281 381   -  - 281 81   -  -
12237  82 182 282 382 182 82   -  -   -  -
12238  83 183 283 383   -  -   -  -   -  -
12239  84 184 284 384 184 84 284 84   -  -
12240  85 185 285 385   -  -   -  - 385 85
12241  86 186 286 386 186 86   -  -   -  -
12242  87 187 287 387   -  - 287 87   -  -
12243  88 188 288 388 188 88   -  -   -  -
12244  89 189 289 389   -  -   -  -   -  -
12245  90 190 290 390 190 90 290 90 390 90
12246  91 191 291 391   -  -   -  -   -  -
12247  92 192 292 392 192 92   -  -   -  -
12248  93 193 293 393   -  - 293 93   -  -
12249  94 194 294 394 194 94   -  -   -  -
12250  95 195 295 395   -  -   -  - 395 95
12251  96   - 296 396   -  -   -  -   -  -
12252  97 197   - 397   -  -   -  -   -  -
12253  98 198 298   -   -  -   -  -   -  -
12254  99   -   -   -   -  -   -  -   -  -
12255   -   -   -   -   -  -   -  - 300  0
12256}
12257do_execsql_test joinD-435 {
12258  SELECT t1.*, t2.*, t3.*, t4.*
12259  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
12260  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12261  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12262  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12263} {
12264   0 100 200 300   -  -   -  -   -  -
12265   1 101 201 301   -  -   -  -   -  -
12266   2 102 202 302 102  2   -  -   -  -
12267   3 103 203 303   -  - 203  3   -  -
12268   4 104 204 304 104  4   -  -   -  -
12269   5 105 205 305   -  -   -  - 305  5
12270   6 106 206 306 106  6 206  6   -  -
12271   7 107 207 307   -  -   -  -   -  -
12272   8 108 208 308 108  8   -  -   -  -
12273   9 109 209 309   -  - 209  9   -  -
12274  10 110 210 310 110 10   -  - 310 10
12275  11 111 211 311   -  -   -  -   -  -
12276  12 112 212 312 112 12 212 12   -  -
12277  13 113 213 313   -  -   -  -   -  -
12278  14 114 214 314 114 14   -  -   -  -
12279  15 115 215 315   -  - 215 15 315 15
12280  16 116 216 316 116 16   -  -   -  -
12281  17 117 217 317   -  -   -  -   -  -
12282  18 118 218 318 118 18 218 18   -  -
12283  19 119 219 319   -  -   -  -   -  -
12284  20 120 220 320 120 20   -  - 320 20
12285  21 121 221 321   -  - 221 21   -  -
12286  22 122 222 322 122 22   -  -   -  -
12287  23 123 223 323   -  -   -  -   -  -
12288  24 124 224 324 124 24 224 24   -  -
12289  25 125 225 325   -  -   -  - 325 25
12290  26 126 226 326 126 26   -  -   -  -
12291  27 127 227 327   -  - 227 27   -  -
12292  28 128 228 328 128 28   -  -   -  -
12293  29 129 229 329   -  -   -  -   -  -
12294  30 130 230 330 130 30 230 30 330 30
12295  31 131 231 331   -  -   -  -   -  -
12296  32 132 232 332 132 32   -  -   -  -
12297  33 133 233 333   -  - 233 33   -  -
12298  34 134 234 334 134 34   -  -   -  -
12299  35 135 235 335   -  -   -  - 335 35
12300  36 136 236 336 136 36 236 36   -  -
12301  37 137 237 337   -  -   -  -   -  -
12302  38 138 238 338 138 38   -  -   -  -
12303  39 139 239 339   -  - 239 39   -  -
12304  40 140 240 340 140 40   -  - 340 40
12305  41 141 241 341   -  -   -  -   -  -
12306  42 142 242 342 142 42 242 42   -  -
12307  43 143 243 343   -  -   -  -   -  -
12308  44 144 244 344 144 44   -  -   -  -
12309  45 145 245 345   -  - 245 45 345 45
12310  46 146 246 346 146 46   -  -   -  -
12311  47 147 247 347   -  -   -  -   -  -
12312  48 148 248 348 148 48 248 48   -  -
12313  49 149 249 349   -  -   -  -   -  -
12314  50 150 250 350 150 50   -  - 350 50
12315  51 151 251 351   -  - 251 51   -  -
12316  52 152 252 352 152 52   -  -   -  -
12317  53 153 253 353   -  -   -  -   -  -
12318  54 154 254 354 154 54 254 54   -  -
12319  55 155 255 355   -  -   -  - 355 55
12320  56 156 256 356 156 56   -  -   -  -
12321  57 157 257 357   -  - 257 57   -  -
12322  58 158 258 358 158 58   -  -   -  -
12323  59 159 259 359   -  -   -  -   -  -
12324  60 160 260 360 160 60 260 60 360 60
12325  61 161 261 361   -  -   -  -   -  -
12326  62 162 262 362 162 62   -  -   -  -
12327  63 163 263 363   -  - 263 63   -  -
12328  64 164 264 364 164 64   -  -   -  -
12329  65 165 265 365   -  -   -  - 365 65
12330  66 166 266 366 166 66 266 66   -  -
12331  67 167 267 367   -  -   -  -   -  -
12332  68 168 268 368 168 68   -  -   -  -
12333  69 169 269 369   -  - 269 69   -  -
12334  70 170 270 370 170 70   -  - 370 70
12335  71 171 271 371   -  -   -  -   -  -
12336  72 172 272 372 172 72 272 72   -  -
12337  73 173 273 373   -  -   -  -   -  -
12338  74 174 274 374 174 74   -  -   -  -
12339  75 175 275 375   -  - 275 75 375 75
12340  76 176 276 376 176 76   -  -   -  -
12341  77 177 277 377   -  -   -  -   -  -
12342  78 178 278 378 178 78 278 78   -  -
12343  79 179 279 379   -  -   -  -   -  -
12344  80 180 280 380 180 80   -  - 380 80
12345  81 181 281 381   -  - 281 81   -  -
12346  82 182 282 382 182 82   -  -   -  -
12347  83 183 283 383   -  -   -  -   -  -
12348  84 184 284 384 184 84 284 84   -  -
12349  85 185 285 385   -  -   -  - 385 85
12350  86 186 286 386 186 86   -  -   -  -
12351  87 187 287 387   -  - 287 87   -  -
12352  88 188 288 388 188 88   -  -   -  -
12353  89 189 289 389   -  -   -  -   -  -
12354  90 190 290 390 190 90 290 90 390 90
12355  91 191 291 391   -  -   -  -   -  -
12356  92 192 292 392 192 92   -  -   -  -
12357  93 193 293 393   -  - 293 93   -  -
12358  94 194 294 394 194 94   -  -   -  -
12359  95 195 295 395   -  -   -  - 395 95
12360  96   - 296 396   -  -   -  -   -  -
12361  97 197   - 397   -  -   -  -   -  -
12362  98 198 298   -   -  -   -  -   -  -
12363  99   -   -   -   -  -   -  -   -  -
12364   -   -   -   -   -  -   -  - 300  0
12365}
12366do_execsql_test joinD-436 {
12367  SELECT t1.*, t2.*, t3.*, t4.*
12368  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12369  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12370  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12371  WHERE t2.x>0
12372  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12373} {
12374   2 102 202 302 102  2   -  -   -  -
12375   4 104 204 304 104  4   -  -   -  -
12376   6 106 206 306 106  6 206  6   -  -
12377   8 108 208 308 108  8   -  -   -  -
12378  10 110 210 310 110 10   -  - 310 10
12379  12 112 212 312 112 12 212 12   -  -
12380  14 114 214 314 114 14   -  -   -  -
12381  16 116 216 316 116 16   -  -   -  -
12382  18 118 218 318 118 18 218 18   -  -
12383  20 120 220 320 120 20   -  - 320 20
12384  22 122 222 322 122 22   -  -   -  -
12385  24 124 224 324 124 24 224 24   -  -
12386  26 126 226 326 126 26   -  -   -  -
12387  28 128 228 328 128 28   -  -   -  -
12388  30 130 230 330 130 30 230 30 330 30
12389  32 132 232 332 132 32   -  -   -  -
12390  34 134 234 334 134 34   -  -   -  -
12391  36 136 236 336 136 36 236 36   -  -
12392  38 138 238 338 138 38   -  -   -  -
12393  40 140 240 340 140 40   -  - 340 40
12394  42 142 242 342 142 42 242 42   -  -
12395  44 144 244 344 144 44   -  -   -  -
12396  46 146 246 346 146 46   -  -   -  -
12397  48 148 248 348 148 48 248 48   -  -
12398  50 150 250 350 150 50   -  - 350 50
12399  52 152 252 352 152 52   -  -   -  -
12400  54 154 254 354 154 54 254 54   -  -
12401  56 156 256 356 156 56   -  -   -  -
12402  58 158 258 358 158 58   -  -   -  -
12403  60 160 260 360 160 60 260 60 360 60
12404  62 162 262 362 162 62   -  -   -  -
12405  64 164 264 364 164 64   -  -   -  -
12406  66 166 266 366 166 66 266 66   -  -
12407  68 168 268 368 168 68   -  -   -  -
12408  70 170 270 370 170 70   -  - 370 70
12409  72 172 272 372 172 72 272 72   -  -
12410  74 174 274 374 174 74   -  -   -  -
12411  76 176 276 376 176 76   -  -   -  -
12412  78 178 278 378 178 78 278 78   -  -
12413  80 180 280 380 180 80   -  - 380 80
12414  82 182 282 382 182 82   -  -   -  -
12415  84 184 284 384 184 84 284 84   -  -
12416  86 186 286 386 186 86   -  -   -  -
12417  88 188 288 388 188 88   -  -   -  -
12418  90 190 290 390 190 90 290 90 390 90
12419  92 192 292 392 192 92   -  -   -  -
12420  94 194 294 394 194 94   -  -   -  -
12421}
12422do_execsql_test joinD-437 {
12423  SELECT t1.*, t2.*, t3.*, t4.*
12424  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12425  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12426  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12427  WHERE (t2.x>0 OR t2.x IS NULL)
12428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12429} {
12430   1 101 201 301   -  -   -  -   -  -
12431   2 102 202 302 102  2   -  -   -  -
12432   3 103 203 303   -  - 203  3   -  -
12433   4 104 204 304 104  4   -  -   -  -
12434   5 105 205 305   -  -   -  - 305  5
12435   6 106 206 306 106  6 206  6   -  -
12436   7 107 207 307   -  -   -  -   -  -
12437   8 108 208 308 108  8   -  -   -  -
12438   9 109 209 309   -  - 209  9   -  -
12439  10 110 210 310 110 10   -  - 310 10
12440  11 111 211 311   -  -   -  -   -  -
12441  12 112 212 312 112 12 212 12   -  -
12442  13 113 213 313   -  -   -  -   -  -
12443  14 114 214 314 114 14   -  -   -  -
12444  15 115 215 315   -  - 215 15 315 15
12445  16 116 216 316 116 16   -  -   -  -
12446  17 117 217 317   -  -   -  -   -  -
12447  18 118 218 318 118 18 218 18   -  -
12448  19 119 219 319   -  -   -  -   -  -
12449  20 120 220 320 120 20   -  - 320 20
12450  21 121 221 321   -  - 221 21   -  -
12451  22 122 222 322 122 22   -  -   -  -
12452  23 123 223 323   -  -   -  -   -  -
12453  24 124 224 324 124 24 224 24   -  -
12454  25 125 225 325   -  -   -  - 325 25
12455  26 126 226 326 126 26   -  -   -  -
12456  27 127 227 327   -  - 227 27   -  -
12457  28 128 228 328 128 28   -  -   -  -
12458  29 129 229 329   -  -   -  -   -  -
12459  30 130 230 330 130 30 230 30 330 30
12460  31 131 231 331   -  -   -  -   -  -
12461  32 132 232 332 132 32   -  -   -  -
12462  33 133 233 333   -  - 233 33   -  -
12463  34 134 234 334 134 34   -  -   -  -
12464  35 135 235 335   -  -   -  - 335 35
12465  36 136 236 336 136 36 236 36   -  -
12466  37 137 237 337   -  -   -  -   -  -
12467  38 138 238 338 138 38   -  -   -  -
12468  39 139 239 339   -  - 239 39   -  -
12469  40 140 240 340 140 40   -  - 340 40
12470  41 141 241 341   -  -   -  -   -  -
12471  42 142 242 342 142 42 242 42   -  -
12472  43 143 243 343   -  -   -  -   -  -
12473  44 144 244 344 144 44   -  -   -  -
12474  45 145 245 345   -  - 245 45 345 45
12475  46 146 246 346 146 46   -  -   -  -
12476  47 147 247 347   -  -   -  -   -  -
12477  48 148 248 348 148 48 248 48   -  -
12478  49 149 249 349   -  -   -  -   -  -
12479  50 150 250 350 150 50   -  - 350 50
12480  51 151 251 351   -  - 251 51   -  -
12481  52 152 252 352 152 52   -  -   -  -
12482  53 153 253 353   -  -   -  -   -  -
12483  54 154 254 354 154 54 254 54   -  -
12484  55 155 255 355   -  -   -  - 355 55
12485  56 156 256 356 156 56   -  -   -  -
12486  57 157 257 357   -  - 257 57   -  -
12487  58 158 258 358 158 58   -  -   -  -
12488  59 159 259 359   -  -   -  -   -  -
12489  60 160 260 360 160 60 260 60 360 60
12490  61 161 261 361   -  -   -  -   -  -
12491  62 162 262 362 162 62   -  -   -  -
12492  63 163 263 363   -  - 263 63   -  -
12493  64 164 264 364 164 64   -  -   -  -
12494  65 165 265 365   -  -   -  - 365 65
12495  66 166 266 366 166 66 266 66   -  -
12496  67 167 267 367   -  -   -  -   -  -
12497  68 168 268 368 168 68   -  -   -  -
12498  69 169 269 369   -  - 269 69   -  -
12499  70 170 270 370 170 70   -  - 370 70
12500  71 171 271 371   -  -   -  -   -  -
12501  72 172 272 372 172 72 272 72   -  -
12502  73 173 273 373   -  -   -  -   -  -
12503  74 174 274 374 174 74   -  -   -  -
12504  75 175 275 375   -  - 275 75 375 75
12505  76 176 276 376 176 76   -  -   -  -
12506  77 177 277 377   -  -   -  -   -  -
12507  78 178 278 378 178 78 278 78   -  -
12508  79 179 279 379   -  -   -  -   -  -
12509  80 180 280 380 180 80   -  - 380 80
12510  81 181 281 381   -  - 281 81   -  -
12511  82 182 282 382 182 82   -  -   -  -
12512  83 183 283 383   -  -   -  -   -  -
12513  84 184 284 384 184 84 284 84   -  -
12514  85 185 285 385   -  -   -  - 385 85
12515  86 186 286 386 186 86   -  -   -  -
12516  87 187 287 387   -  - 287 87   -  -
12517  88 188 288 388 188 88   -  -   -  -
12518  89 189 289 389   -  -   -  -   -  -
12519  90 190 290 390 190 90 290 90 390 90
12520  91 191 291 391   -  -   -  -   -  -
12521  92 192 292 392 192 92   -  -   -  -
12522  93 193 293 393   -  - 293 93   -  -
12523  94 194 294 394 194 94   -  -   -  -
12524  95 195 295 395   -  -   -  - 395 95
12525  96   - 296 396   -  -   -  -   -  -
12526  97 197   - 397   -  -   -  -   -  -
12527  98 198 298   -   -  -   -  -   -  -
12528  99   -   -   -   -  -   -  -   -  -
12529   -   -   -   -   -  -   -  - 300  0
12530}
12531do_execsql_test joinD-438 {
12532  SELECT t1.*, t2.*, t3.*, t4.*
12533  FROM t1 LEFT JOIN t2 ON true
12534  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12535  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12536  WHERE t1.b=t2.b AND t2.x>0
12537  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12538} {
12539   2 102 202 302 102  2   -  -   -  -
12540   4 104 204 304 104  4   -  -   -  -
12541   6 106 206 306 106  6 206  6   -  -
12542   8 108 208 308 108  8   -  -   -  -
12543  10 110 210 310 110 10   -  - 310 10
12544  12 112 212 312 112 12 212 12   -  -
12545  14 114 214 314 114 14   -  -   -  -
12546  16 116 216 316 116 16   -  -   -  -
12547  18 118 218 318 118 18 218 18   -  -
12548  20 120 220 320 120 20   -  - 320 20
12549  22 122 222 322 122 22   -  -   -  -
12550  24 124 224 324 124 24 224 24   -  -
12551  26 126 226 326 126 26   -  -   -  -
12552  28 128 228 328 128 28   -  -   -  -
12553  30 130 230 330 130 30 230 30 330 30
12554  32 132 232 332 132 32   -  -   -  -
12555  34 134 234 334 134 34   -  -   -  -
12556  36 136 236 336 136 36 236 36   -  -
12557  38 138 238 338 138 38   -  -   -  -
12558  40 140 240 340 140 40   -  - 340 40
12559  42 142 242 342 142 42 242 42   -  -
12560  44 144 244 344 144 44   -  -   -  -
12561  46 146 246 346 146 46   -  -   -  -
12562  48 148 248 348 148 48 248 48   -  -
12563  50 150 250 350 150 50   -  - 350 50
12564  52 152 252 352 152 52   -  -   -  -
12565  54 154 254 354 154 54 254 54   -  -
12566  56 156 256 356 156 56   -  -   -  -
12567  58 158 258 358 158 58   -  -   -  -
12568  60 160 260 360 160 60 260 60 360 60
12569  62 162 262 362 162 62   -  -   -  -
12570  64 164 264 364 164 64   -  -   -  -
12571  66 166 266 366 166 66 266 66   -  -
12572  68 168 268 368 168 68   -  -   -  -
12573  70 170 270 370 170 70   -  - 370 70
12574  72 172 272 372 172 72 272 72   -  -
12575  74 174 274 374 174 74   -  -   -  -
12576  76 176 276 376 176 76   -  -   -  -
12577  78 178 278 378 178 78 278 78   -  -
12578  80 180 280 380 180 80   -  - 380 80
12579  82 182 282 382 182 82   -  -   -  -
12580  84 184 284 384 184 84 284 84   -  -
12581  86 186 286 386 186 86   -  -   -  -
12582  88 188 288 388 188 88   -  -   -  -
12583  90 190 290 390 190 90 290 90 390 90
12584  92 192 292 392 192 92   -  -   -  -
12585  94 194 294 394 194 94   -  -   -  -
12586}
12587do_execsql_test joinD-439 {
12588  SELECT t1.*, t2.*, t3.*, t4.*
12589  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12590  LEFT JOIN t3 ON t1.c=t3.c
12591  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12592  WHERE t3.y>0
12593  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12594} {
12595   3 103 203 303   -  - 203  3   -  -
12596   6 106 206 306 106  6 206  6   -  -
12597   9 109 209 309   -  - 209  9   -  -
12598  12 112 212 312 112 12 212 12   -  -
12599  15 115 215 315   -  - 215 15 315 15
12600  18 118 218 318 118 18 218 18   -  -
12601  21 121 221 321   -  - 221 21   -  -
12602  24 124 224 324 124 24 224 24   -  -
12603  27 127 227 327   -  - 227 27   -  -
12604  30 130 230 330 130 30 230 30 330 30
12605  33 133 233 333   -  - 233 33   -  -
12606  36 136 236 336 136 36 236 36   -  -
12607  39 139 239 339   -  - 239 39   -  -
12608  42 142 242 342 142 42 242 42   -  -
12609  45 145 245 345   -  - 245 45 345 45
12610  48 148 248 348 148 48 248 48   -  -
12611  51 151 251 351   -  - 251 51   -  -
12612  54 154 254 354 154 54 254 54   -  -
12613  57 157 257 357   -  - 257 57   -  -
12614  60 160 260 360 160 60 260 60 360 60
12615  63 163 263 363   -  - 263 63   -  -
12616  66 166 266 366 166 66 266 66   -  -
12617  69 169 269 369   -  - 269 69   -  -
12618  72 172 272 372 172 72 272 72   -  -
12619  75 175 275 375   -  - 275 75 375 75
12620  78 178 278 378 178 78 278 78   -  -
12621  81 181 281 381   -  - 281 81   -  -
12622  84 184 284 384 184 84 284 84   -  -
12623  87 187 287 387   -  - 287 87   -  -
12624  90 190 290 390 190 90 290 90 390 90
12625  93 193 293 393   -  - 293 93   -  -
12626}
12627do_execsql_test joinD-440 {
12628  SELECT t1.*, t2.*, t3.*, t4.*
12629  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12630  LEFT JOIN t3 ON t1.c=t3.c
12631  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12632  WHERE t3.y>0 OR t3.y IS NULL
12633  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12634} {
12635   1 101 201 301   -  -   -  -   -  -
12636   2 102 202 302 102  2   -  -   -  -
12637   3 103 203 303   -  - 203  3   -  -
12638   4 104 204 304 104  4   -  -   -  -
12639   5 105 205 305   -  -   -  - 305  5
12640   6 106 206 306 106  6 206  6   -  -
12641   7 107 207 307   -  -   -  -   -  -
12642   8 108 208 308 108  8   -  -   -  -
12643   9 109 209 309   -  - 209  9   -  -
12644  10 110 210 310 110 10   -  - 310 10
12645  11 111 211 311   -  -   -  -   -  -
12646  12 112 212 312 112 12 212 12   -  -
12647  13 113 213 313   -  -   -  -   -  -
12648  14 114 214 314 114 14   -  -   -  -
12649  15 115 215 315   -  - 215 15 315 15
12650  16 116 216 316 116 16   -  -   -  -
12651  17 117 217 317   -  -   -  -   -  -
12652  18 118 218 318 118 18 218 18   -  -
12653  19 119 219 319   -  -   -  -   -  -
12654  20 120 220 320 120 20   -  - 320 20
12655  21 121 221 321   -  - 221 21   -  -
12656  22 122 222 322 122 22   -  -   -  -
12657  23 123 223 323   -  -   -  -   -  -
12658  24 124 224 324 124 24 224 24   -  -
12659  25 125 225 325   -  -   -  - 325 25
12660  26 126 226 326 126 26   -  -   -  -
12661  27 127 227 327   -  - 227 27   -  -
12662  28 128 228 328 128 28   -  -   -  -
12663  29 129 229 329   -  -   -  -   -  -
12664  30 130 230 330 130 30 230 30 330 30
12665  31 131 231 331   -  -   -  -   -  -
12666  32 132 232 332 132 32   -  -   -  -
12667  33 133 233 333   -  - 233 33   -  -
12668  34 134 234 334 134 34   -  -   -  -
12669  35 135 235 335   -  -   -  - 335 35
12670  36 136 236 336 136 36 236 36   -  -
12671  37 137 237 337   -  -   -  -   -  -
12672  38 138 238 338 138 38   -  -   -  -
12673  39 139 239 339   -  - 239 39   -  -
12674  40 140 240 340 140 40   -  - 340 40
12675  41 141 241 341   -  -   -  -   -  -
12676  42 142 242 342 142 42 242 42   -  -
12677  43 143 243 343   -  -   -  -   -  -
12678  44 144 244 344 144 44   -  -   -  -
12679  45 145 245 345   -  - 245 45 345 45
12680  46 146 246 346 146 46   -  -   -  -
12681  47 147 247 347   -  -   -  -   -  -
12682  48 148 248 348 148 48 248 48   -  -
12683  49 149 249 349   -  -   -  -   -  -
12684  50 150 250 350 150 50   -  - 350 50
12685  51 151 251 351   -  - 251 51   -  -
12686  52 152 252 352 152 52   -  -   -  -
12687  53 153 253 353   -  -   -  -   -  -
12688  54 154 254 354 154 54 254 54   -  -
12689  55 155 255 355   -  -   -  - 355 55
12690  56 156 256 356 156 56   -  -   -  -
12691  57 157 257 357   -  - 257 57   -  -
12692  58 158 258 358 158 58   -  -   -  -
12693  59 159 259 359   -  -   -  -   -  -
12694  60 160 260 360 160 60 260 60 360 60
12695  61 161 261 361   -  -   -  -   -  -
12696  62 162 262 362 162 62   -  -   -  -
12697  63 163 263 363   -  - 263 63   -  -
12698  64 164 264 364 164 64   -  -   -  -
12699  65 165 265 365   -  -   -  - 365 65
12700  66 166 266 366 166 66 266 66   -  -
12701  67 167 267 367   -  -   -  -   -  -
12702  68 168 268 368 168 68   -  -   -  -
12703  69 169 269 369   -  - 269 69   -  -
12704  70 170 270 370 170 70   -  - 370 70
12705  71 171 271 371   -  -   -  -   -  -
12706  72 172 272 372 172 72 272 72   -  -
12707  73 173 273 373   -  -   -  -   -  -
12708  74 174 274 374 174 74   -  -   -  -
12709  75 175 275 375   -  - 275 75 375 75
12710  76 176 276 376 176 76   -  -   -  -
12711  77 177 277 377   -  -   -  -   -  -
12712  78 178 278 378 178 78 278 78   -  -
12713  79 179 279 379   -  -   -  -   -  -
12714  80 180 280 380 180 80   -  - 380 80
12715  81 181 281 381   -  - 281 81   -  -
12716  82 182 282 382 182 82   -  -   -  -
12717  83 183 283 383   -  -   -  -   -  -
12718  84 184 284 384 184 84 284 84   -  -
12719  85 185 285 385   -  -   -  - 385 85
12720  86 186 286 386 186 86   -  -   -  -
12721  87 187 287 387   -  - 287 87   -  -
12722  88 188 288 388 188 88   -  -   -  -
12723  89 189 289 389   -  -   -  -   -  -
12724  90 190 290 390 190 90 290 90 390 90
12725  91 191 291 391   -  -   -  -   -  -
12726  92 192 292 392 192 92   -  -   -  -
12727  93 193 293 393   -  - 293 93   -  -
12728  94 194 294 394 194 94   -  -   -  -
12729  95 195 295 395   -  -   -  - 395 95
12730  96   - 296 396   -  -   -  -   -  -
12731  97 197   - 397   -  -   -  -   -  -
12732  98 198 298   -   -  -   -  -   -  -
12733  99   -   -   -   -  -   -  -   -  -
12734   -   -   -   -   -  -   -  - 300  0
12735}
12736do_execsql_test joinD-441 {
12737  SELECT t1.*, t2.*, t3.*, t4.*
12738  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12739  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12740  FULL JOIN t4 ON t1.d=t4.d
12741  WHERE t4.z>0
12742  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12743} {
12744   5 105 205 305   -  -   -  - 305  5
12745  10 110 210 310 110 10   -  - 310 10
12746  15 115 215 315   -  - 215 15 315 15
12747  20 120 220 320 120 20   -  - 320 20
12748  25 125 225 325   -  -   -  - 325 25
12749  30 130 230 330 130 30 230 30 330 30
12750  35 135 235 335   -  -   -  - 335 35
12751  40 140 240 340 140 40   -  - 340 40
12752  45 145 245 345   -  - 245 45 345 45
12753  50 150 250 350 150 50   -  - 350 50
12754  55 155 255 355   -  -   -  - 355 55
12755  60 160 260 360 160 60 260 60 360 60
12756  65 165 265 365   -  -   -  - 365 65
12757  70 170 270 370 170 70   -  - 370 70
12758  75 175 275 375   -  - 275 75 375 75
12759  80 180 280 380 180 80   -  - 380 80
12760  85 185 285 385   -  -   -  - 385 85
12761  90 190 290 390 190 90 290 90 390 90
12762  95 195 295 395   -  -   -  - 395 95
12763}
12764do_execsql_test joinD-442 {
12765  SELECT t1.*, t2.*, t3.*, t4.*
12766  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12767  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12768  FULL JOIN t4 ON t1.d=t4.d
12769  WHERE t4.z IS NULL OR t4.z>0
12770  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12771} {
12772   1 101 201 301   -  -   -  -   -  -
12773   2 102 202 302 102  2   -  -   -  -
12774   3 103 203 303   -  - 203  3   -  -
12775   4 104 204 304 104  4   -  -   -  -
12776   5 105 205 305   -  -   -  - 305  5
12777   6 106 206 306 106  6 206  6   -  -
12778   7 107 207 307   -  -   -  -   -  -
12779   8 108 208 308 108  8   -  -   -  -
12780   9 109 209 309   -  - 209  9   -  -
12781  10 110 210 310 110 10   -  - 310 10
12782  11 111 211 311   -  -   -  -   -  -
12783  12 112 212 312 112 12 212 12   -  -
12784  13 113 213 313   -  -   -  -   -  -
12785  14 114 214 314 114 14   -  -   -  -
12786  15 115 215 315   -  - 215 15 315 15
12787  16 116 216 316 116 16   -  -   -  -
12788  17 117 217 317   -  -   -  -   -  -
12789  18 118 218 318 118 18 218 18   -  -
12790  19 119 219 319   -  -   -  -   -  -
12791  20 120 220 320 120 20   -  - 320 20
12792  21 121 221 321   -  - 221 21   -  -
12793  22 122 222 322 122 22   -  -   -  -
12794  23 123 223 323   -  -   -  -   -  -
12795  24 124 224 324 124 24 224 24   -  -
12796  25 125 225 325   -  -   -  - 325 25
12797  26 126 226 326 126 26   -  -   -  -
12798  27 127 227 327   -  - 227 27   -  -
12799  28 128 228 328 128 28   -  -   -  -
12800  29 129 229 329   -  -   -  -   -  -
12801  30 130 230 330 130 30 230 30 330 30
12802  31 131 231 331   -  -   -  -   -  -
12803  32 132 232 332 132 32   -  -   -  -
12804  33 133 233 333   -  - 233 33   -  -
12805  34 134 234 334 134 34   -  -   -  -
12806  35 135 235 335   -  -   -  - 335 35
12807  36 136 236 336 136 36 236 36   -  -
12808  37 137 237 337   -  -   -  -   -  -
12809  38 138 238 338 138 38   -  -   -  -
12810  39 139 239 339   -  - 239 39   -  -
12811  40 140 240 340 140 40   -  - 340 40
12812  41 141 241 341   -  -   -  -   -  -
12813  42 142 242 342 142 42 242 42   -  -
12814  43 143 243 343   -  -   -  -   -  -
12815  44 144 244 344 144 44   -  -   -  -
12816  45 145 245 345   -  - 245 45 345 45
12817  46 146 246 346 146 46   -  -   -  -
12818  47 147 247 347   -  -   -  -   -  -
12819  48 148 248 348 148 48 248 48   -  -
12820  49 149 249 349   -  -   -  -   -  -
12821  50 150 250 350 150 50   -  - 350 50
12822  51 151 251 351   -  - 251 51   -  -
12823  52 152 252 352 152 52   -  -   -  -
12824  53 153 253 353   -  -   -  -   -  -
12825  54 154 254 354 154 54 254 54   -  -
12826  55 155 255 355   -  -   -  - 355 55
12827  56 156 256 356 156 56   -  -   -  -
12828  57 157 257 357   -  - 257 57   -  -
12829  58 158 258 358 158 58   -  -   -  -
12830  59 159 259 359   -  -   -  -   -  -
12831  60 160 260 360 160 60 260 60 360 60
12832  61 161 261 361   -  -   -  -   -  -
12833  62 162 262 362 162 62   -  -   -  -
12834  63 163 263 363   -  - 263 63   -  -
12835  64 164 264 364 164 64   -  -   -  -
12836  65 165 265 365   -  -   -  - 365 65
12837  66 166 266 366 166 66 266 66   -  -
12838  67 167 267 367   -  -   -  -   -  -
12839  68 168 268 368 168 68   -  -   -  -
12840  69 169 269 369   -  - 269 69   -  -
12841  70 170 270 370 170 70   -  - 370 70
12842  71 171 271 371   -  -   -  -   -  -
12843  72 172 272 372 172 72 272 72   -  -
12844  73 173 273 373   -  -   -  -   -  -
12845  74 174 274 374 174 74   -  -   -  -
12846  75 175 275 375   -  - 275 75 375 75
12847  76 176 276 376 176 76   -  -   -  -
12848  77 177 277 377   -  -   -  -   -  -
12849  78 178 278 378 178 78 278 78   -  -
12850  79 179 279 379   -  -   -  -   -  -
12851  80 180 280 380 180 80   -  - 380 80
12852  81 181 281 381   -  - 281 81   -  -
12853  82 182 282 382 182 82   -  -   -  -
12854  83 183 283 383   -  -   -  -   -  -
12855  84 184 284 384 184 84 284 84   -  -
12856  85 185 285 385   -  -   -  - 385 85
12857  86 186 286 386 186 86   -  -   -  -
12858  87 187 287 387   -  - 287 87   -  -
12859  88 188 288 388 188 88   -  -   -  -
12860  89 189 289 389   -  -   -  -   -  -
12861  90 190 290 390 190 90 290 90 390 90
12862  91 191 291 391   -  -   -  -   -  -
12863  92 192 292 392 192 92   -  -   -  -
12864  93 193 293 393   -  - 293 93   -  -
12865  94 194 294 394 194 94   -  -   -  -
12866  95 195 295 395   -  -   -  - 395 95
12867  96   - 296 396   -  -   -  -   -  -
12868  97 197   - 397   -  -   -  -   -  -
12869  98 198 298   -   -  -   -  -   -  -
12870  99   -   -   -   -  -   -  -   -  -
12871}
12872do_execsql_test joinD-443 {
12873  SELECT t1.*, t2.*, t3.*, t4.*
12874  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12875  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
12876  FULL JOIN t4 ON t1.d=t4.d
12877  WHERE t2.x>0 AND t4.z>0
12878  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12879} {
12880  10 110 210 310 110 10   -  - 310 10
12881  20 120 220 320 120 20   -  - 320 20
12882  30 130 230 330 130 30 230 30 330 30
12883  40 140 240 340 140 40   -  - 340 40
12884  50 150 250 350 150 50   -  - 350 50
12885  60 160 260 360 160 60 260 60 360 60
12886  70 170 270 370 170 70   -  - 370 70
12887  80 180 280 380 180 80   -  - 380 80
12888  90 190 290 390 190 90 290 90 390 90
12889}
12890do_execsql_test joinD-444 {
12891  SELECT t1.*, t2.*, t3.*, t4.*
12892  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
12893  LEFT JOIN t3 ON t1.c=t3.c
12894  FULL JOIN t4 ON t1.d=t4.d
12895  WHERE t4.z>0 AND t3.y>0
12896  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12897} {
12898  15 115 215 315   -  - 215 15 315 15
12899  30 130 230 330 130 30 230 30 330 30
12900  45 145 245 345   -  - 245 45 345 45
12901  60 160 260 360 160 60 260 60 360 60
12902  75 175 275 375   -  - 275 75 375 75
12903  90 190 290 390 190 90 290 90 390 90
12904}
12905do_execsql_test joinD-445 {
12906  SELECT t1.*, t2.*, t3.*, t4.*
12907  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12908  LEFT JOIN t3 ON t1.c=t3.c
12909  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
12910  WHERE t2.x>0 AND t3.y>0
12911  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12912} {
12913   6 106 206 306 106  6 206  6   -  -
12914  12 112 212 312 112 12 212 12   -  -
12915  18 118 218 318 118 18 218 18   -  -
12916  24 124 224 324 124 24 224 24   -  -
12917  30 130 230 330 130 30 230 30 330 30
12918  36 136 236 336 136 36 236 36   -  -
12919  42 142 242 342 142 42 242 42   -  -
12920  48 148 248 348 148 48 248 48   -  -
12921  54 154 254 354 154 54 254 54   -  -
12922  60 160 260 360 160 60 260 60 360 60
12923  66 166 266 366 166 66 266 66   -  -
12924  72 172 272 372 172 72 272 72   -  -
12925  78 178 278 378 178 78 278 78   -  -
12926  84 184 284 384 184 84 284 84   -  -
12927  90 190 290 390 190 90 290 90 390 90
12928}
12929do_execsql_test joinD-446 {
12930  SELECT t1.*, t2.*, t3.*, t4.*
12931  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
12932  LEFT JOIN t3 ON t1.c=t3.c
12933  FULL JOIN t4 ON t1.d=t4.d
12934  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
12935  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12936} {
12937  30 130 230 330 130 30 230 30 330 30
12938  60 160 260 360 160 60 260 60 360 60
12939  90 190 290 390 190 90 290 90 390 90
12940}
12941do_execsql_test joinD-447 {
12942  SELECT t1.*, t2.*, t3.*, t4.*
12943  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
12944  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
12945  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
12946  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
12947} {
12948   0 100 200 300   -  -   -  -   -  -
12949   1 101 201 301   -  -   -  -   -  -
12950   2 102 202 302 102  2   -  -   -  -
12951   3 103 203 303   -  - 203  3   -  -
12952   4 104 204 304 104  4   -  -   -  -
12953   5 105 205 305   -  -   -  - 305  5
12954   6 106 206 306 106  6 206  6   -  -
12955   7 107 207 307   -  -   -  -   -  -
12956   8 108 208 308 108  8   -  -   -  -
12957   9 109 209 309   -  - 209  9   -  -
12958  10 110 210 310 110 10   -  - 310 10
12959  11 111 211 311   -  -   -  -   -  -
12960  12 112 212 312 112 12 212 12   -  -
12961  13 113 213 313   -  -   -  -   -  -
12962  14 114 214 314 114 14   -  -   -  -
12963  15 115 215 315   -  - 215 15 315 15
12964  16 116 216 316 116 16   -  -   -  -
12965  17 117 217 317   -  -   -  -   -  -
12966  18 118 218 318 118 18 218 18   -  -
12967  19 119 219 319   -  -   -  -   -  -
12968  20 120 220 320 120 20   -  - 320 20
12969  21 121 221 321   -  - 221 21   -  -
12970  22 122 222 322 122 22   -  -   -  -
12971  23 123 223 323   -  -   -  -   -  -
12972  24 124 224 324 124 24 224 24   -  -
12973  25 125 225 325   -  -   -  - 325 25
12974  26 126 226 326 126 26   -  -   -  -
12975  27 127 227 327   -  - 227 27   -  -
12976  28 128 228 328 128 28   -  -   -  -
12977  29 129 229 329   -  -   -  -   -  -
12978  30 130 230 330 130 30 230 30 330 30
12979  31 131 231 331   -  -   -  -   -  -
12980  32 132 232 332 132 32   -  -   -  -
12981  33 133 233 333   -  - 233 33   -  -
12982  34 134 234 334 134 34   -  -   -  -
12983  35 135 235 335   -  -   -  - 335 35
12984  36 136 236 336 136 36 236 36   -  -
12985  37 137 237 337   -  -   -  -   -  -
12986  38 138 238 338 138 38   -  -   -  -
12987  39 139 239 339   -  - 239 39   -  -
12988  40 140 240 340 140 40   -  - 340 40
12989  41 141 241 341   -  -   -  -   -  -
12990  42 142 242 342 142 42 242 42   -  -
12991  43 143 243 343   -  -   -  -   -  -
12992  44 144 244 344 144 44   -  -   -  -
12993  45 145 245 345   -  - 245 45 345 45
12994  46 146 246 346 146 46   -  -   -  -
12995  47 147 247 347   -  -   -  -   -  -
12996  48 148 248 348 148 48 248 48   -  -
12997  49 149 249 349   -  -   -  -   -  -
12998  50 150 250 350 150 50   -  - 350 50
12999  51 151 251 351   -  - 251 51   -  -
13000  52 152 252 352 152 52   -  -   -  -
13001  53 153 253 353   -  -   -  -   -  -
13002  54 154 254 354 154 54 254 54   -  -
13003  55 155 255 355   -  -   -  - 355 55
13004  56 156 256 356 156 56   -  -   -  -
13005  57 157 257 357   -  - 257 57   -  -
13006  58 158 258 358 158 58   -  -   -  -
13007  59 159 259 359   -  -   -  -   -  -
13008  60 160 260 360 160 60 260 60 360 60
13009  61 161 261 361   -  -   -  -   -  -
13010  62 162 262 362 162 62   -  -   -  -
13011  63 163 263 363   -  - 263 63   -  -
13012  64 164 264 364 164 64   -  -   -  -
13013  65 165 265 365   -  -   -  - 365 65
13014  66 166 266 366 166 66 266 66   -  -
13015  67 167 267 367   -  -   -  -   -  -
13016  68 168 268 368 168 68   -  -   -  -
13017  69 169 269 369   -  - 269 69   -  -
13018  70 170 270 370 170 70   -  - 370 70
13019  71 171 271 371   -  -   -  -   -  -
13020  72 172 272 372 172 72 272 72   -  -
13021  73 173 273 373   -  -   -  -   -  -
13022  74 174 274 374 174 74   -  -   -  -
13023  75 175 275 375   -  - 275 75 375 75
13024  76 176 276 376 176 76   -  -   -  -
13025  77 177 277 377   -  -   -  -   -  -
13026  78 178 278 378 178 78 278 78   -  -
13027  79 179 279 379   -  -   -  -   -  -
13028  80 180 280 380 180 80   -  - 380 80
13029  81 181 281 381   -  - 281 81   -  -
13030  82 182 282 382 182 82   -  -   -  -
13031  83 183 283 383   -  -   -  -   -  -
13032  84 184 284 384 184 84 284 84   -  -
13033  85 185 285 385   -  -   -  - 385 85
13034  86 186 286 386 186 86   -  -   -  -
13035  87 187 287 387   -  - 287 87   -  -
13036  88 188 288 388 188 88   -  -   -  -
13037  89 189 289 389   -  -   -  -   -  -
13038  90 190 290 390 190 90 290 90 390 90
13039  91 191 291 391   -  -   -  -   -  -
13040  92 192 292 392 192 92   -  -   -  -
13041  93 193 293 393   -  - 293 93   -  -
13042  94 194 294 394 194 94   -  -   -  -
13043  95 195 295 395   -  -   -  - 395 95
13044  96   - 296 396   -  -   -  -   -  -
13045  97 197   - 397   -  -   -  -   -  -
13046  98 198 298   -   -  -   -  -   -  -
13047  99   -   -   -   -  -   -  -   -  -
13048   -   -   -   -   -  -   -  - 300  0
13049}
13050do_execsql_test joinD-448 {
13051  SELECT t1.*, t2.*, t3.*, t4.*
13052  FROM t1 LEFT JOIN t2 ON t2.x>0
13053  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13054  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
13055  WHERE t1.b IS NOT DISTINCT FROM t2.b
13056  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13057} {
13058   2 102 202 302 102  2   -  -   -  -
13059   4 104 204 304 104  4   -  -   -  -
13060   6 106 206 306 106  6 206  6   -  -
13061   8 108 208 308 108  8   -  -   -  -
13062  10 110 210 310 110 10   -  - 310 10
13063  12 112 212 312 112 12 212 12   -  -
13064  14 114 214 314 114 14   -  -   -  -
13065  16 116 216 316 116 16   -  -   -  -
13066  18 118 218 318 118 18 218 18   -  -
13067  20 120 220 320 120 20   -  - 320 20
13068  22 122 222 322 122 22   -  -   -  -
13069  24 124 224 324 124 24 224 24   -  -
13070  26 126 226 326 126 26   -  -   -  -
13071  28 128 228 328 128 28   -  -   -  -
13072  30 130 230 330 130 30 230 30 330 30
13073  32 132 232 332 132 32   -  -   -  -
13074  34 134 234 334 134 34   -  -   -  -
13075  36 136 236 336 136 36 236 36   -  -
13076  38 138 238 338 138 38   -  -   -  -
13077  40 140 240 340 140 40   -  - 340 40
13078  42 142 242 342 142 42 242 42   -  -
13079  44 144 244 344 144 44   -  -   -  -
13080  46 146 246 346 146 46   -  -   -  -
13081  48 148 248 348 148 48 248 48   -  -
13082  50 150 250 350 150 50   -  - 350 50
13083  52 152 252 352 152 52   -  -   -  -
13084  54 154 254 354 154 54 254 54   -  -
13085  56 156 256 356 156 56   -  -   -  -
13086  58 158 258 358 158 58   -  -   -  -
13087  60 160 260 360 160 60 260 60 360 60
13088  62 162 262 362 162 62   -  -   -  -
13089  64 164 264 364 164 64   -  -   -  -
13090  66 166 266 366 166 66 266 66   -  -
13091  68 168 268 368 168 68   -  -   -  -
13092  70 170 270 370 170 70   -  - 370 70
13093  72 172 272 372 172 72 272 72   -  -
13094  74 174 274 374 174 74   -  -   -  -
13095  76 176 276 376 176 76   -  -   -  -
13096  78 178 278 378 178 78 278 78   -  -
13097  80 180 280 380 180 80   -  - 380 80
13098  82 182 282 382 182 82   -  -   -  -
13099  84 184 284 384 184 84 284 84   -  -
13100  86 186 286 386 186 86   -  -   -  -
13101  88 188 288 388 188 88   -  -   -  -
13102  90 190 290 390 190 90 290 90 390 90
13103  92 192 292 392 192 92   -  -   -  -
13104  94 194 294 394 194 94   -  -   -  -
13105   -   -   -   -   -  -   -  - 300  0
13106}
13107do_execsql_test joinD-449 {
13108  SELECT t1.*, t2.*, t3.*, t4.*
13109  FROM t1 LEFT JOIN t2 ON t2.x>0
13110  LEFT JOIN t3 ON t3.y>0
13111  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
13112  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
13113  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13114} {
13115   6 106 206 306 106  6 206  6   -  -
13116  12 112 212 312 112 12 212 12   -  -
13117  18 118 218 318 118 18 218 18   -  -
13118  24 124 224 324 124 24 224 24   -  -
13119  30 130 230 330 130 30 230 30 330 30
13120  36 136 236 336 136 36 236 36   -  -
13121  42 142 242 342 142 42 242 42   -  -
13122  48 148 248 348 148 48 248 48   -  -
13123  54 154 254 354 154 54 254 54   -  -
13124  60 160 260 360 160 60 260 60 360 60
13125  66 166 266 366 166 66 266 66   -  -
13126  72 172 272 372 172 72 272 72   -  -
13127  78 178 278 378 178 78 278 78   -  -
13128  84 184 284 384 184 84 284 84   -  -
13129  90 190 290 390 190 90 290 90 390 90
13130   -   -   -   -   -  -   -  - 300  0
13131}
13132do_execsql_test joinD-450 {
13133  SELECT t1.*, t2.*, t3.*, t4.*
13134  FROM t1 LEFT JOIN t2 ON t2.x>0
13135  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13136  FULL JOIN t4 ON t4.z>0
13137  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
13138  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13139} {
13140  10 110 210 310 110 10   -  - 310 10
13141  20 120 220 320 120 20   -  - 320 20
13142  30 130 230 330 130 30 230 30 330 30
13143  40 140 240 340 140 40   -  - 340 40
13144  50 150 250 350 150 50   -  - 350 50
13145  60 160 260 360 160 60 260 60 360 60
13146  70 170 270 370 170 70   -  - 370 70
13147  80 180 280 380 180 80   -  - 380 80
13148  90 190 290 390 190 90 290 90 390 90
13149}
13150do_execsql_test joinD-451 {
13151  SELECT t1.*, t2.*, t3.*, t4.*
13152  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
13153  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
13154  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
13155  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13156} {
13157   0 100 200 300   -  -   -  -   -  -
13158   1 101 201 301   -  -   -  -   -  -
13159   2 102 202 302 102  2   -  -   -  -
13160   3 103 203 303   -  - 203  3   -  -
13161   4 104 204 304 104  4   -  -   -  -
13162   5 105 205 305   -  -   -  - 305  5
13163   6 106 206 306 106  6 206  6   -  -
13164   7 107 207 307   -  -   -  -   -  -
13165   8 108 208 308 108  8   -  -   -  -
13166   9 109 209 309   -  - 209  9   -  -
13167  10 110 210 310 110 10   -  - 310 10
13168  11 111 211 311   -  -   -  -   -  -
13169  12 112 212 312 112 12 212 12   -  -
13170  13 113 213 313   -  -   -  -   -  -
13171  14 114 214 314 114 14   -  -   -  -
13172  15 115 215 315   -  - 215 15 315 15
13173  16 116 216 316 116 16   -  -   -  -
13174  17 117 217 317   -  -   -  -   -  -
13175  18 118 218 318 118 18 218 18   -  -
13176  19 119 219 319   -  -   -  -   -  -
13177  20 120 220 320 120 20   -  - 320 20
13178  21 121 221 321   -  - 221 21   -  -
13179  22 122 222 322 122 22   -  -   -  -
13180  23 123 223 323   -  -   -  -   -  -
13181  24 124 224 324 124 24 224 24   -  -
13182  25 125 225 325   -  -   -  - 325 25
13183  26 126 226 326 126 26   -  -   -  -
13184  27 127 227 327   -  - 227 27   -  -
13185  28 128 228 328 128 28   -  -   -  -
13186  29 129 229 329   -  -   -  -   -  -
13187  30 130 230 330 130 30 230 30 330 30
13188  31 131 231 331   -  -   -  -   -  -
13189  32 132 232 332 132 32   -  -   -  -
13190  33 133 233 333   -  - 233 33   -  -
13191  34 134 234 334 134 34   -  -   -  -
13192  35 135 235 335   -  -   -  - 335 35
13193  36 136 236 336 136 36 236 36   -  -
13194  37 137 237 337   -  -   -  -   -  -
13195  38 138 238 338 138 38   -  -   -  -
13196  39 139 239 339   -  - 239 39   -  -
13197  40 140 240 340 140 40   -  - 340 40
13198  41 141 241 341   -  -   -  -   -  -
13199  42 142 242 342 142 42 242 42   -  -
13200  43 143 243 343   -  -   -  -   -  -
13201  44 144 244 344 144 44   -  -   -  -
13202  45 145 245 345   -  - 245 45 345 45
13203  46 146 246 346 146 46   -  -   -  -
13204  47 147 247 347   -  -   -  -   -  -
13205  48 148 248 348 148 48 248 48   -  -
13206  49 149 249 349   -  -   -  -   -  -
13207  50 150 250 350 150 50   -  - 350 50
13208  51 151 251 351   -  - 251 51   -  -
13209  52 152 252 352 152 52   -  -   -  -
13210  53 153 253 353   -  -   -  -   -  -
13211  54 154 254 354 154 54 254 54   -  -
13212  55 155 255 355   -  -   -  - 355 55
13213  56 156 256 356 156 56   -  -   -  -
13214  57 157 257 357   -  - 257 57   -  -
13215  58 158 258 358 158 58   -  -   -  -
13216  59 159 259 359   -  -   -  -   -  -
13217  60 160 260 360 160 60 260 60 360 60
13218  61 161 261 361   -  -   -  -   -  -
13219  62 162 262 362 162 62   -  -   -  -
13220  63 163 263 363   -  - 263 63   -  -
13221  64 164 264 364 164 64   -  -   -  -
13222  65 165 265 365   -  -   -  - 365 65
13223  66 166 266 366 166 66 266 66   -  -
13224  67 167 267 367   -  -   -  -   -  -
13225  68 168 268 368 168 68   -  -   -  -
13226  69 169 269 369   -  - 269 69   -  -
13227  70 170 270 370 170 70   -  - 370 70
13228  71 171 271 371   -  -   -  -   -  -
13229  72 172 272 372 172 72 272 72   -  -
13230  73 173 273 373   -  -   -  -   -  -
13231  74 174 274 374 174 74   -  -   -  -
13232  75 175 275 375   -  - 275 75 375 75
13233  76 176 276 376 176 76   -  -   -  -
13234  77 177 277 377   -  -   -  -   -  -
13235  78 178 278 378 178 78 278 78   -  -
13236  79 179 279 379   -  -   -  -   -  -
13237  80 180 280 380 180 80   -  - 380 80
13238  81 181 281 381   -  - 281 81   -  -
13239  82 182 282 382 182 82   -  -   -  -
13240  83 183 283 383   -  -   -  -   -  -
13241  84 184 284 384 184 84 284 84   -  -
13242  85 185 285 385   -  -   -  - 385 85
13243  86 186 286 386 186 86   -  -   -  -
13244  87 187 287 387   -  - 287 87   -  -
13245  88 188 288 388 188 88   -  -   -  -
13246  89 189 289 389   -  -   -  -   -  -
13247  90 190 290 390 190 90 290 90 390 90
13248  91 191 291 391   -  -   -  -   -  -
13249  92 192 292 392 192 92   -  -   -  -
13250  93 193 293 393   -  - 293 93   -  -
13251  94 194 294 394 194 94   -  -   -  -
13252  95 195 295 395   -  -   -  - 395 95
13253  96   - 296 396   -  -   -  -   -  -
13254  97 197   - 397   -  -   -  -   -  -
13255  98 198 298   -   -  -   -  -   -  -
13256  99   -   -   -   -  -   -  -   -  -
13257   -   -   -   -   -  -   -  - 300  0
13258}
13259do_execsql_test joinD-452 {
13260  SELECT t1.*, t2.*, t3.*, t4.*
13261  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13262  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
13263  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
13264  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13265} {
13266   0 100 200 300   -  -   -  -   -  -
13267   1 101 201 301   -  -   -  -   -  -
13268   2 102 202 302 102  2   -  -   -  -
13269   3 103 203 303   -  - 203  3   -  -
13270   4 104 204 304 104  4   -  -   -  -
13271   5 105 205 305   -  -   -  - 305  5
13272   6 106 206 306 106  6 206  6   -  -
13273   7 107 207 307   -  -   -  -   -  -
13274   8 108 208 308 108  8   -  -   -  -
13275   9 109 209 309   -  - 209  9   -  -
13276  10 110 210 310 110 10   -  - 310 10
13277  11 111 211 311   -  -   -  -   -  -
13278  12 112 212 312 112 12 212 12   -  -
13279  13 113 213 313   -  -   -  -   -  -
13280  14 114 214 314 114 14   -  -   -  -
13281  15 115 215 315   -  - 215 15 315 15
13282  16 116 216 316 116 16   -  -   -  -
13283  17 117 217 317   -  -   -  -   -  -
13284  18 118 218 318 118 18 218 18   -  -
13285  19 119 219 319   -  -   -  -   -  -
13286  20 120 220 320 120 20   -  - 320 20
13287  21 121 221 321   -  - 221 21   -  -
13288  22 122 222 322 122 22   -  -   -  -
13289  23 123 223 323   -  -   -  -   -  -
13290  24 124 224 324 124 24 224 24   -  -
13291  25 125 225 325   -  -   -  - 325 25
13292  26 126 226 326 126 26   -  -   -  -
13293  27 127 227 327   -  - 227 27   -  -
13294  28 128 228 328 128 28   -  -   -  -
13295  29 129 229 329   -  -   -  -   -  -
13296  30 130 230 330 130 30 230 30 330 30
13297  31 131 231 331   -  -   -  -   -  -
13298  32 132 232 332 132 32   -  -   -  -
13299  33 133 233 333   -  - 233 33   -  -
13300  34 134 234 334 134 34   -  -   -  -
13301  35 135 235 335   -  -   -  - 335 35
13302  36 136 236 336 136 36 236 36   -  -
13303  37 137 237 337   -  -   -  -   -  -
13304  38 138 238 338 138 38   -  -   -  -
13305  39 139 239 339   -  - 239 39   -  -
13306  40 140 240 340 140 40   -  - 340 40
13307  41 141 241 341   -  -   -  -   -  -
13308  42 142 242 342 142 42 242 42   -  -
13309  43 143 243 343   -  -   -  -   -  -
13310  44 144 244 344 144 44   -  -   -  -
13311  45 145 245 345   -  - 245 45 345 45
13312  46 146 246 346 146 46   -  -   -  -
13313  47 147 247 347   -  -   -  -   -  -
13314  48 148 248 348 148 48 248 48   -  -
13315  49 149 249 349   -  -   -  -   -  -
13316  50 150 250 350 150 50   -  - 350 50
13317  51 151 251 351   -  - 251 51   -  -
13318  52 152 252 352 152 52   -  -   -  -
13319  53 153 253 353   -  -   -  -   -  -
13320  54 154 254 354 154 54 254 54   -  -
13321  55 155 255 355   -  -   -  - 355 55
13322  56 156 256 356 156 56   -  -   -  -
13323  57 157 257 357   -  - 257 57   -  -
13324  58 158 258 358 158 58   -  -   -  -
13325  59 159 259 359   -  -   -  -   -  -
13326  60 160 260 360 160 60 260 60 360 60
13327  61 161 261 361   -  -   -  -   -  -
13328  62 162 262 362 162 62   -  -   -  -
13329  63 163 263 363   -  - 263 63   -  -
13330  64 164 264 364 164 64   -  -   -  -
13331  65 165 265 365   -  -   -  - 365 65
13332  66 166 266 366 166 66 266 66   -  -
13333  67 167 267 367   -  -   -  -   -  -
13334  68 168 268 368 168 68   -  -   -  -
13335  69 169 269 369   -  - 269 69   -  -
13336  70 170 270 370 170 70   -  - 370 70
13337  71 171 271 371   -  -   -  -   -  -
13338  72 172 272 372 172 72 272 72   -  -
13339  73 173 273 373   -  -   -  -   -  -
13340  74 174 274 374 174 74   -  -   -  -
13341  75 175 275 375   -  - 275 75 375 75
13342  76 176 276 376 176 76   -  -   -  -
13343  77 177 277 377   -  -   -  -   -  -
13344  78 178 278 378 178 78 278 78   -  -
13345  79 179 279 379   -  -   -  -   -  -
13346  80 180 280 380 180 80   -  - 380 80
13347  81 181 281 381   -  - 281 81   -  -
13348  82 182 282 382 182 82   -  -   -  -
13349  83 183 283 383   -  -   -  -   -  -
13350  84 184 284 384 184 84 284 84   -  -
13351  85 185 285 385   -  -   -  - 385 85
13352  86 186 286 386 186 86   -  -   -  -
13353  87 187 287 387   -  - 287 87   -  -
13354  88 188 288 388 188 88   -  -   -  -
13355  89 189 289 389   -  -   -  -   -  -
13356  90 190 290 390 190 90 290 90 390 90
13357  91 191 291 391   -  -   -  -   -  -
13358  92 192 292 392 192 92   -  -   -  -
13359  93 193 293 393   -  - 293 93   -  -
13360  94 194 294 394 194 94   -  -   -  -
13361  95 195 295 395   -  -   -  - 395 95
13362  96   - 296 396   -  -   -  -   -  -
13363  97 197   - 397   -  -   -  -   -  -
13364  98 198 298   -   -  -   -  -   -  -
13365  99   -   -   -   -  -   -  -   -  -
13366   -   -   -   -   -  -   -  - 300  0
13367}
13368do_execsql_test joinD-453 {
13369  SELECT t1.*, t2.*, t3.*, t4.*
13370  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13371  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13372  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13373  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13374} {
13375  15 115 215 315   -  - 215 15 315 15
13376  30 130 230 330 130 30 230 30 330 30
13377  45 145 245 345   -  - 245 45 345 45
13378  60 160 260 360 160 60 260 60 360 60
13379  75 175 275 375   -  - 275 75 375 75
13380  90 190 290 390 190 90 290 90 390 90
13381}
13382do_execsql_test joinD-454 {
13383  SELECT t1.*, t2.*, t3.*, t4.*
13384  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13385  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13386  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13387  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13388} {
13389  15 115 215 315   -  - 215 15 315 15
13390  30 130 230 330 130 30 230 30 330 30
13391  45 145 245 345   -  - 245 45 345 45
13392  60 160 260 360 160 60 260 60 360 60
13393  75 175 275 375   -  - 275 75 375 75
13394  90 190 290 390 190 90 290 90 390 90
13395}
13396do_execsql_test joinD-455 {
13397  SELECT t1.*, t2.*, t3.*, t4.*
13398  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13399  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13400  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13401  WHERE t2.x>0
13402  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13403} {
13404  30 130 230 330 130 30 230 30 330 30
13405  60 160 260 360 160 60 260 60 360 60
13406  90 190 290 390 190 90 290 90 390 90
13407}
13408do_execsql_test joinD-456 {
13409  SELECT t1.*, t2.*, t3.*, t4.*
13410  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13411  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13412  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13413  WHERE (t2.x>0 OR t2.x IS NULL)
13414  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13415} {
13416  15 115 215 315   -  - 215 15 315 15
13417  30 130 230 330 130 30 230 30 330 30
13418  45 145 245 345   -  - 245 45 345 45
13419  60 160 260 360 160 60 260 60 360 60
13420  75 175 275 375   -  - 275 75 375 75
13421  90 190 290 390 190 90 290 90 390 90
13422}
13423do_execsql_test joinD-457 {
13424  SELECT t1.*, t2.*, t3.*, t4.*
13425  FROM t1 LEFT JOIN t2 ON true
13426  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13427  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13428  WHERE t1.b=t2.b AND t2.x>0
13429  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13430} {
13431  30 130 230 330 130 30 230 30 330 30
13432  60 160 260 360 160 60 260 60 360 60
13433  90 190 290 390 190 90 290 90 390 90
13434}
13435do_execsql_test joinD-458 {
13436  SELECT t1.*, t2.*, t3.*, t4.*
13437  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13438  RIGHT JOIN t3 ON t1.c=t3.c
13439  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13440  WHERE t3.y>0
13441  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13442} {
13443  15 115 215 315   -  - 215 15 315 15
13444  30 130 230 330 130 30 230 30 330 30
13445  45 145 245 345   -  - 245 45 345 45
13446  60 160 260 360 160 60 260 60 360 60
13447  75 175 275 375   -  - 275 75 375 75
13448  90 190 290 390 190 90 290 90 390 90
13449}
13450do_execsql_test joinD-459 {
13451  SELECT t1.*, t2.*, t3.*, t4.*
13452  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13453  RIGHT JOIN t3 ON t1.c=t3.c
13454  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13455  WHERE t3.y>0 OR t3.y IS NULL
13456  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13457} {
13458  15 115 215 315   -  - 215 15 315 15
13459  30 130 230 330 130 30 230 30 330 30
13460  45 145 245 345   -  - 245 45 345 45
13461  60 160 260 360 160 60 260 60 360 60
13462  75 175 275 375   -  - 275 75 375 75
13463  90 190 290 390 190 90 290 90 390 90
13464}
13465do_execsql_test joinD-460 {
13466  SELECT t1.*, t2.*, t3.*, t4.*
13467  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13468  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13469  INNER JOIN t4 ON t1.d=t4.d
13470  WHERE t4.z>0
13471  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13472} {
13473  15 115 215 315   -  - 215 15 315 15
13474  30 130 230 330 130 30 230 30 330 30
13475  45 145 245 345   -  - 245 45 345 45
13476  60 160 260 360 160 60 260 60 360 60
13477  75 175 275 375   -  - 275 75 375 75
13478  90 190 290 390 190 90 290 90 390 90
13479}
13480do_execsql_test joinD-461 {
13481  SELECT t1.*, t2.*, t3.*, t4.*
13482  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13483  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13484  INNER JOIN t4 ON t1.d=t4.d
13485  WHERE t4.z IS NULL OR t4.z>0
13486  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13487} {
13488  15 115 215 315   -  - 215 15 315 15
13489  30 130 230 330 130 30 230 30 330 30
13490  45 145 245 345   -  - 245 45 345 45
13491  60 160 260 360 160 60 260 60 360 60
13492  75 175 275 375   -  - 275 75 375 75
13493  90 190 290 390 190 90 290 90 390 90
13494}
13495do_execsql_test joinD-462 {
13496  SELECT t1.*, t2.*, t3.*, t4.*
13497  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13498  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13499  INNER JOIN t4 ON t1.d=t4.d
13500  WHERE t2.x>0 AND t4.z>0
13501  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13502} {
13503  30 130 230 330 130 30 230 30 330 30
13504  60 160 260 360 160 60 260 60 360 60
13505  90 190 290 390 190 90 290 90 390 90
13506}
13507do_execsql_test joinD-463 {
13508  SELECT t1.*, t2.*, t3.*, t4.*
13509  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13510  RIGHT JOIN t3 ON t1.c=t3.c
13511  INNER JOIN t4 ON t1.d=t4.d
13512  WHERE t4.z>0 AND t3.y>0
13513  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13514} {
13515  15 115 215 315   -  - 215 15 315 15
13516  30 130 230 330 130 30 230 30 330 30
13517  45 145 245 345   -  - 245 45 345 45
13518  60 160 260 360 160 60 260 60 360 60
13519  75 175 275 375   -  - 275 75 375 75
13520  90 190 290 390 190 90 290 90 390 90
13521}
13522do_execsql_test joinD-464 {
13523  SELECT t1.*, t2.*, t3.*, t4.*
13524  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13525  RIGHT JOIN t3 ON t1.c=t3.c
13526  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13527  WHERE t2.x>0 AND t3.y>0
13528  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13529} {
13530  30 130 230 330 130 30 230 30 330 30
13531  60 160 260 360 160 60 260 60 360 60
13532  90 190 290 390 190 90 290 90 390 90
13533}
13534do_execsql_test joinD-465 {
13535  SELECT t1.*, t2.*, t3.*, t4.*
13536  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13537  RIGHT JOIN t3 ON t1.c=t3.c
13538  INNER JOIN t4 ON t1.d=t4.d
13539  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
13540  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13541} {
13542  30 130 230 330 130 30 230 30 330 30
13543  60 160 260 360 160 60 260 60 360 60
13544  90 190 290 390 190 90 290 90 390 90
13545}
13546do_execsql_test joinD-466 {
13547  SELECT t1.*, t2.*, t3.*, t4.*
13548  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13549  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13550  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13551  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13552} {
13553  15 115 215 315   -  - 215 15 315 15
13554  30 130 230 330 130 30 230 30 330 30
13555  45 145 245 345   -  - 245 45 345 45
13556  60 160 260 360 160 60 260 60 360 60
13557  75 175 275 375   -  - 275 75 375 75
13558  90 190 290 390 190 90 290 90 390 90
13559}
13560do_execsql_test joinD-467 {
13561  SELECT t1.*, t2.*, t3.*, t4.*
13562  FROM t1 LEFT JOIN t2 ON t2.x>0
13563  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13564  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13565  WHERE t1.b IS NOT DISTINCT FROM t2.b
13566  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13567} {
13568  30 130 230 330 130 30 230 30 330 30
13569  60 160 260 360 160 60 260 60 360 60
13570  90 190 290 390 190 90 290 90 390 90
13571}
13572do_execsql_test joinD-468 {
13573  SELECT t1.*, t2.*, t3.*, t4.*
13574  FROM t1 LEFT JOIN t2 ON t2.x>0
13575  RIGHT JOIN t3 ON t3.y>0
13576  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13577  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
13578  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13579} {
13580  30 130 230 330 130 30 230 30 330 30
13581  60 160 260 360 160 60 260 60 360 60
13582  90 190 290 390 190 90 290 90 390 90
13583}
13584do_execsql_test joinD-469 {
13585  SELECT t1.*, t2.*, t3.*, t4.*
13586  FROM t1 LEFT JOIN t2 ON t2.x>0
13587  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13588  INNER JOIN t4 ON t4.z>0
13589  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
13590  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13591} {
13592  30 130 230 330 130 30 230 30 330 30
13593  60 160 260 360 160 60 260 60 360 60
13594  90 190 290 390 190 90 290 90 390 90
13595}
13596do_execsql_test joinD-470 {
13597  SELECT t1.*, t2.*, t3.*, t4.*
13598  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
13599  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13600  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13601  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13602} {
13603  15 115 215 315   -  - 215 15 315 15
13604  30 130 230 330 130 30 230 30 330 30
13605  45 145 245 345   -  - 245 45 345 45
13606  60 160 260 360 160 60 260 60 360 60
13607  75 175 275 375   -  - 275 75 375 75
13608  90 190 290 390 190 90 290 90 390 90
13609}
13610do_execsql_test joinD-471 {
13611  SELECT t1.*, t2.*, t3.*, t4.*
13612  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13613  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
13614  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
13615  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13616} {
13617  15 115 215 315   -  - 215 15 315 15
13618  30 130 230 330 130 30 230 30 330 30
13619  45 145 245 345   -  - 245 45 345 45
13620  60 160 260 360 160 60 260 60 360 60
13621  75 175 275 375   -  - 275 75 375 75
13622  90 190 290 390 190 90 290 90 390 90
13623}
13624do_execsql_test joinD-472 {
13625  SELECT t1.*, t2.*, t3.*, t4.*
13626  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13627  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13628  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13629  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13630} {
13631   3 103 203 303   -  - 203  3   -  -
13632   6 106 206 306 106  6 206  6   -  -
13633   9 109 209 309   -  - 209  9   -  -
13634  12 112 212 312 112 12 212 12   -  -
13635  15 115 215 315   -  - 215 15 315 15
13636  18 118 218 318 118 18 218 18   -  -
13637  21 121 221 321   -  - 221 21   -  -
13638  24 124 224 324 124 24 224 24   -  -
13639  27 127 227 327   -  - 227 27   -  -
13640  30 130 230 330 130 30 230 30 330 30
13641  33 133 233 333   -  - 233 33   -  -
13642  36 136 236 336 136 36 236 36   -  -
13643  39 139 239 339   -  - 239 39   -  -
13644  42 142 242 342 142 42 242 42   -  -
13645  45 145 245 345   -  - 245 45 345 45
13646  48 148 248 348 148 48 248 48   -  -
13647  51 151 251 351   -  - 251 51   -  -
13648  54 154 254 354 154 54 254 54   -  -
13649  57 157 257 357   -  - 257 57   -  -
13650  60 160 260 360 160 60 260 60 360 60
13651  63 163 263 363   -  - 263 63   -  -
13652  66 166 266 366 166 66 266 66   -  -
13653  69 169 269 369   -  - 269 69   -  -
13654  72 172 272 372 172 72 272 72   -  -
13655  75 175 275 375   -  - 275 75 375 75
13656  78 178 278 378 178 78 278 78   -  -
13657  81 181 281 381   -  - 281 81   -  -
13658  84 184 284 384 184 84 284 84   -  -
13659  87 187 287 387   -  - 287 87   -  -
13660  90 190 290 390 190 90 290 90 390 90
13661  93 193 293 393   -  - 293 93   -  -
13662   -   -   -   -   -  - 200  0   -  -
13663}
13664do_execsql_test joinD-473 {
13665  SELECT t1.*, t2.*, t3.*, t4.*
13666  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13667  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13668  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13669  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13670} {
13671   3 103 203 303   -  - 203  3   -  -
13672   6 106 206 306 106  6 206  6   -  -
13673   9 109 209 309   -  - 209  9   -  -
13674  12 112 212 312 112 12 212 12   -  -
13675  15 115 215 315   -  - 215 15 315 15
13676  18 118 218 318 118 18 218 18   -  -
13677  21 121 221 321   -  - 221 21   -  -
13678  24 124 224 324 124 24 224 24   -  -
13679  27 127 227 327   -  - 227 27   -  -
13680  30 130 230 330 130 30 230 30 330 30
13681  33 133 233 333   -  - 233 33   -  -
13682  36 136 236 336 136 36 236 36   -  -
13683  39 139 239 339   -  - 239 39   -  -
13684  42 142 242 342 142 42 242 42   -  -
13685  45 145 245 345   -  - 245 45 345 45
13686  48 148 248 348 148 48 248 48   -  -
13687  51 151 251 351   -  - 251 51   -  -
13688  54 154 254 354 154 54 254 54   -  -
13689  57 157 257 357   -  - 257 57   -  -
13690  60 160 260 360 160 60 260 60 360 60
13691  63 163 263 363   -  - 263 63   -  -
13692  66 166 266 366 166 66 266 66   -  -
13693  69 169 269 369   -  - 269 69   -  -
13694  72 172 272 372 172 72 272 72   -  -
13695  75 175 275 375   -  - 275 75 375 75
13696  78 178 278 378 178 78 278 78   -  -
13697  81 181 281 381   -  - 281 81   -  -
13698  84 184 284 384 184 84 284 84   -  -
13699  87 187 287 387   -  - 287 87   -  -
13700  90 190 290 390 190 90 290 90 390 90
13701  93 193 293 393   -  - 293 93   -  -
13702   -   -   -   -   -  - 200  0   -  -
13703}
13704do_execsql_test joinD-474 {
13705  SELECT t1.*, t2.*, t3.*, t4.*
13706  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13707  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13708  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13709  WHERE t2.x>0
13710  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13711} {
13712   6 106 206 306 106  6 206  6   -  -
13713  12 112 212 312 112 12 212 12   -  -
13714  18 118 218 318 118 18 218 18   -  -
13715  24 124 224 324 124 24 224 24   -  -
13716  30 130 230 330 130 30 230 30 330 30
13717  36 136 236 336 136 36 236 36   -  -
13718  42 142 242 342 142 42 242 42   -  -
13719  48 148 248 348 148 48 248 48   -  -
13720  54 154 254 354 154 54 254 54   -  -
13721  60 160 260 360 160 60 260 60 360 60
13722  66 166 266 366 166 66 266 66   -  -
13723  72 172 272 372 172 72 272 72   -  -
13724  78 178 278 378 178 78 278 78   -  -
13725  84 184 284 384 184 84 284 84   -  -
13726  90 190 290 390 190 90 290 90 390 90
13727}
13728do_execsql_test joinD-475 {
13729  SELECT t1.*, t2.*, t3.*, t4.*
13730  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13731  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13732  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13733  WHERE (t2.x>0 OR t2.x IS NULL)
13734  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13735} {
13736   3 103 203 303   -  - 203  3   -  -
13737   6 106 206 306 106  6 206  6   -  -
13738   9 109 209 309   -  - 209  9   -  -
13739  12 112 212 312 112 12 212 12   -  -
13740  15 115 215 315   -  - 215 15 315 15
13741  18 118 218 318 118 18 218 18   -  -
13742  21 121 221 321   -  - 221 21   -  -
13743  24 124 224 324 124 24 224 24   -  -
13744  27 127 227 327   -  - 227 27   -  -
13745  30 130 230 330 130 30 230 30 330 30
13746  33 133 233 333   -  - 233 33   -  -
13747  36 136 236 336 136 36 236 36   -  -
13748  39 139 239 339   -  - 239 39   -  -
13749  42 142 242 342 142 42 242 42   -  -
13750  45 145 245 345   -  - 245 45 345 45
13751  48 148 248 348 148 48 248 48   -  -
13752  51 151 251 351   -  - 251 51   -  -
13753  54 154 254 354 154 54 254 54   -  -
13754  57 157 257 357   -  - 257 57   -  -
13755  60 160 260 360 160 60 260 60 360 60
13756  63 163 263 363   -  - 263 63   -  -
13757  66 166 266 366 166 66 266 66   -  -
13758  69 169 269 369   -  - 269 69   -  -
13759  72 172 272 372 172 72 272 72   -  -
13760  75 175 275 375   -  - 275 75 375 75
13761  78 178 278 378 178 78 278 78   -  -
13762  81 181 281 381   -  - 281 81   -  -
13763  84 184 284 384 184 84 284 84   -  -
13764  87 187 287 387   -  - 287 87   -  -
13765  90 190 290 390 190 90 290 90 390 90
13766  93 193 293 393   -  - 293 93   -  -
13767   -   -   -   -   -  - 200  0   -  -
13768}
13769do_execsql_test joinD-476 {
13770  SELECT t1.*, t2.*, t3.*, t4.*
13771  FROM t1 LEFT JOIN t2 ON true
13772  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13773  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13774  WHERE t1.b=t2.b AND t2.x>0
13775  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13776} {
13777   6 106 206 306 106  6 206  6   -  -
13778  12 112 212 312 112 12 212 12   -  -
13779  18 118 218 318 118 18 218 18   -  -
13780  24 124 224 324 124 24 224 24   -  -
13781  30 130 230 330 130 30 230 30 330 30
13782  36 136 236 336 136 36 236 36   -  -
13783  42 142 242 342 142 42 242 42   -  -
13784  48 148 248 348 148 48 248 48   -  -
13785  54 154 254 354 154 54 254 54   -  -
13786  60 160 260 360 160 60 260 60 360 60
13787  66 166 266 366 166 66 266 66   -  -
13788  72 172 272 372 172 72 272 72   -  -
13789  78 178 278 378 178 78 278 78   -  -
13790  84 184 284 384 184 84 284 84   -  -
13791  90 190 290 390 190 90 290 90 390 90
13792}
13793do_execsql_test joinD-477 {
13794  SELECT t1.*, t2.*, t3.*, t4.*
13795  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13796  RIGHT JOIN t3 ON t1.c=t3.c
13797  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13798  WHERE t3.y>0
13799  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13800} {
13801   3 103 203 303   -  - 203  3   -  -
13802   6 106 206 306 106  6 206  6   -  -
13803   9 109 209 309   -  - 209  9   -  -
13804  12 112 212 312 112 12 212 12   -  -
13805  15 115 215 315   -  - 215 15 315 15
13806  18 118 218 318 118 18 218 18   -  -
13807  21 121 221 321   -  - 221 21   -  -
13808  24 124 224 324 124 24 224 24   -  -
13809  27 127 227 327   -  - 227 27   -  -
13810  30 130 230 330 130 30 230 30 330 30
13811  33 133 233 333   -  - 233 33   -  -
13812  36 136 236 336 136 36 236 36   -  -
13813  39 139 239 339   -  - 239 39   -  -
13814  42 142 242 342 142 42 242 42   -  -
13815  45 145 245 345   -  - 245 45 345 45
13816  48 148 248 348 148 48 248 48   -  -
13817  51 151 251 351   -  - 251 51   -  -
13818  54 154 254 354 154 54 254 54   -  -
13819  57 157 257 357   -  - 257 57   -  -
13820  60 160 260 360 160 60 260 60 360 60
13821  63 163 263 363   -  - 263 63   -  -
13822  66 166 266 366 166 66 266 66   -  -
13823  69 169 269 369   -  - 269 69   -  -
13824  72 172 272 372 172 72 272 72   -  -
13825  75 175 275 375   -  - 275 75 375 75
13826  78 178 278 378 178 78 278 78   -  -
13827  81 181 281 381   -  - 281 81   -  -
13828  84 184 284 384 184 84 284 84   -  -
13829  87 187 287 387   -  - 287 87   -  -
13830  90 190 290 390 190 90 290 90 390 90
13831  93 193 293 393   -  - 293 93   -  -
13832}
13833do_execsql_test joinD-478 {
13834  SELECT t1.*, t2.*, t3.*, t4.*
13835  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13836  RIGHT JOIN t3 ON t1.c=t3.c
13837  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13838  WHERE t3.y>0 OR t3.y IS NULL
13839  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13840} {
13841   3 103 203 303   -  - 203  3   -  -
13842   6 106 206 306 106  6 206  6   -  -
13843   9 109 209 309   -  - 209  9   -  -
13844  12 112 212 312 112 12 212 12   -  -
13845  15 115 215 315   -  - 215 15 315 15
13846  18 118 218 318 118 18 218 18   -  -
13847  21 121 221 321   -  - 221 21   -  -
13848  24 124 224 324 124 24 224 24   -  -
13849  27 127 227 327   -  - 227 27   -  -
13850  30 130 230 330 130 30 230 30 330 30
13851  33 133 233 333   -  - 233 33   -  -
13852  36 136 236 336 136 36 236 36   -  -
13853  39 139 239 339   -  - 239 39   -  -
13854  42 142 242 342 142 42 242 42   -  -
13855  45 145 245 345   -  - 245 45 345 45
13856  48 148 248 348 148 48 248 48   -  -
13857  51 151 251 351   -  - 251 51   -  -
13858  54 154 254 354 154 54 254 54   -  -
13859  57 157 257 357   -  - 257 57   -  -
13860  60 160 260 360 160 60 260 60 360 60
13861  63 163 263 363   -  - 263 63   -  -
13862  66 166 266 366 166 66 266 66   -  -
13863  69 169 269 369   -  - 269 69   -  -
13864  72 172 272 372 172 72 272 72   -  -
13865  75 175 275 375   -  - 275 75 375 75
13866  78 178 278 378 178 78 278 78   -  -
13867  81 181 281 381   -  - 281 81   -  -
13868  84 184 284 384 184 84 284 84   -  -
13869  87 187 287 387   -  - 287 87   -  -
13870  90 190 290 390 190 90 290 90 390 90
13871  93 193 293 393   -  - 293 93   -  -
13872}
13873do_execsql_test joinD-479 {
13874  SELECT t1.*, t2.*, t3.*, t4.*
13875  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13876  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13877  LEFT JOIN t4 ON t1.d=t4.d
13878  WHERE t4.z>0
13879  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13880} {
13881  15 115 215 315   -  - 215 15 315 15
13882  30 130 230 330 130 30 230 30 330 30
13883  45 145 245 345   -  - 245 45 345 45
13884  60 160 260 360 160 60 260 60 360 60
13885  75 175 275 375   -  - 275 75 375 75
13886  90 190 290 390 190 90 290 90 390 90
13887}
13888do_execsql_test joinD-480 {
13889  SELECT t1.*, t2.*, t3.*, t4.*
13890  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13891  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13892  LEFT JOIN t4 ON t1.d=t4.d
13893  WHERE t4.z IS NULL OR t4.z>0
13894  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13895} {
13896   3 103 203 303   -  - 203  3   -  -
13897   6 106 206 306 106  6 206  6   -  -
13898   9 109 209 309   -  - 209  9   -  -
13899  12 112 212 312 112 12 212 12   -  -
13900  15 115 215 315   -  - 215 15 315 15
13901  18 118 218 318 118 18 218 18   -  -
13902  21 121 221 321   -  - 221 21   -  -
13903  24 124 224 324 124 24 224 24   -  -
13904  27 127 227 327   -  - 227 27   -  -
13905  30 130 230 330 130 30 230 30 330 30
13906  33 133 233 333   -  - 233 33   -  -
13907  36 136 236 336 136 36 236 36   -  -
13908  39 139 239 339   -  - 239 39   -  -
13909  42 142 242 342 142 42 242 42   -  -
13910  45 145 245 345   -  - 245 45 345 45
13911  48 148 248 348 148 48 248 48   -  -
13912  51 151 251 351   -  - 251 51   -  -
13913  54 154 254 354 154 54 254 54   -  -
13914  57 157 257 357   -  - 257 57   -  -
13915  60 160 260 360 160 60 260 60 360 60
13916  63 163 263 363   -  - 263 63   -  -
13917  66 166 266 366 166 66 266 66   -  -
13918  69 169 269 369   -  - 269 69   -  -
13919  72 172 272 372 172 72 272 72   -  -
13920  75 175 275 375   -  - 275 75 375 75
13921  78 178 278 378 178 78 278 78   -  -
13922  81 181 281 381   -  - 281 81   -  -
13923  84 184 284 384 184 84 284 84   -  -
13924  87 187 287 387   -  - 287 87   -  -
13925  90 190 290 390 190 90 290 90 390 90
13926  93 193 293 393   -  - 293 93   -  -
13927   -   -   -   -   -  - 200  0   -  -
13928}
13929do_execsql_test joinD-481 {
13930  SELECT t1.*, t2.*, t3.*, t4.*
13931  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13932  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
13933  LEFT JOIN t4 ON t1.d=t4.d
13934  WHERE t2.x>0 AND t4.z>0
13935  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13936} {
13937  30 130 230 330 130 30 230 30 330 30
13938  60 160 260 360 160 60 260 60 360 60
13939  90 190 290 390 190 90 290 90 390 90
13940}
13941do_execsql_test joinD-482 {
13942  SELECT t1.*, t2.*, t3.*, t4.*
13943  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
13944  RIGHT JOIN t3 ON t1.c=t3.c
13945  LEFT JOIN t4 ON t1.d=t4.d
13946  WHERE t4.z>0 AND t3.y>0
13947  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13948} {
13949  15 115 215 315   -  - 215 15 315 15
13950  30 130 230 330 130 30 230 30 330 30
13951  45 145 245 345   -  - 245 45 345 45
13952  60 160 260 360 160 60 260 60 360 60
13953  75 175 275 375   -  - 275 75 375 75
13954  90 190 290 390 190 90 290 90 390 90
13955}
13956do_execsql_test joinD-483 {
13957  SELECT t1.*, t2.*, t3.*, t4.*
13958  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13959  RIGHT JOIN t3 ON t1.c=t3.c
13960  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
13961  WHERE t2.x>0 AND t3.y>0
13962  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13963} {
13964   6 106 206 306 106  6 206  6   -  -
13965  12 112 212 312 112 12 212 12   -  -
13966  18 118 218 318 118 18 218 18   -  -
13967  24 124 224 324 124 24 224 24   -  -
13968  30 130 230 330 130 30 230 30 330 30
13969  36 136 236 336 136 36 236 36   -  -
13970  42 142 242 342 142 42 242 42   -  -
13971  48 148 248 348 148 48 248 48   -  -
13972  54 154 254 354 154 54 254 54   -  -
13973  60 160 260 360 160 60 260 60 360 60
13974  66 166 266 366 166 66 266 66   -  -
13975  72 172 272 372 172 72 272 72   -  -
13976  78 178 278 378 178 78 278 78   -  -
13977  84 184 284 384 184 84 284 84   -  -
13978  90 190 290 390 190 90 290 90 390 90
13979}
13980do_execsql_test joinD-484 {
13981  SELECT t1.*, t2.*, t3.*, t4.*
13982  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
13983  RIGHT JOIN t3 ON t1.c=t3.c
13984  LEFT JOIN t4 ON t1.d=t4.d
13985  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
13986  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13987} {
13988  30 130 230 330 130 30 230 30 330 30
13989  60 160 260 360 160 60 260 60 360 60
13990  90 190 290 390 190 90 290 90 390 90
13991}
13992do_execsql_test joinD-485 {
13993  SELECT t1.*, t2.*, t3.*, t4.*
13994  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
13995  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
13996  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
13997  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
13998} {
13999   3 103 203 303   -  - 203  3   -  -
14000   6 106 206 306 106  6 206  6   -  -
14001   9 109 209 309   -  - 209  9   -  -
14002  12 112 212 312 112 12 212 12   -  -
14003  15 115 215 315   -  - 215 15 315 15
14004  18 118 218 318 118 18 218 18   -  -
14005  21 121 221 321   -  - 221 21   -  -
14006  24 124 224 324 124 24 224 24   -  -
14007  27 127 227 327   -  - 227 27   -  -
14008  30 130 230 330 130 30 230 30 330 30
14009  33 133 233 333   -  - 233 33   -  -
14010  36 136 236 336 136 36 236 36   -  -
14011  39 139 239 339   -  - 239 39   -  -
14012  42 142 242 342 142 42 242 42   -  -
14013  45 145 245 345   -  - 245 45 345 45
14014  48 148 248 348 148 48 248 48   -  -
14015  51 151 251 351   -  - 251 51   -  -
14016  54 154 254 354 154 54 254 54   -  -
14017  57 157 257 357   -  - 257 57   -  -
14018  60 160 260 360 160 60 260 60 360 60
14019  63 163 263 363   -  - 263 63   -  -
14020  66 166 266 366 166 66 266 66   -  -
14021  69 169 269 369   -  - 269 69   -  -
14022  72 172 272 372 172 72 272 72   -  -
14023  75 175 275 375   -  - 275 75 375 75
14024  78 178 278 378 178 78 278 78   -  -
14025  81 181 281 381   -  - 281 81   -  -
14026  84 184 284 384 184 84 284 84   -  -
14027  87 187 287 387   -  - 287 87   -  -
14028  90 190 290 390 190 90 290 90 390 90
14029  93 193 293 393   -  - 293 93   -  -
14030   -   -   -   -   -  - 200  0   -  -
14031}
14032do_execsql_test joinD-486 {
14033  SELECT t1.*, t2.*, t3.*, t4.*
14034  FROM t1 LEFT JOIN t2 ON t2.x>0
14035  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14036  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14037  WHERE t1.b IS NOT DISTINCT FROM t2.b
14038  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14039} {
14040   6 106 206 306 106  6 206  6   -  -
14041  12 112 212 312 112 12 212 12   -  -
14042  18 118 218 318 118 18 218 18   -  -
14043  24 124 224 324 124 24 224 24   -  -
14044  30 130 230 330 130 30 230 30 330 30
14045  36 136 236 336 136 36 236 36   -  -
14046  42 142 242 342 142 42 242 42   -  -
14047  48 148 248 348 148 48 248 48   -  -
14048  54 154 254 354 154 54 254 54   -  -
14049  60 160 260 360 160 60 260 60 360 60
14050  66 166 266 366 166 66 266 66   -  -
14051  72 172 272 372 172 72 272 72   -  -
14052  78 178 278 378 178 78 278 78   -  -
14053  84 184 284 384 184 84 284 84   -  -
14054  90 190 290 390 190 90 290 90 390 90
14055   -   -   -   -   -  - 200  0   -  -
14056}
14057do_execsql_test joinD-487 {
14058  SELECT t1.*, t2.*, t3.*, t4.*
14059  FROM t1 LEFT JOIN t2 ON t2.x>0
14060  RIGHT JOIN t3 ON t3.y>0
14061  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14062  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
14063  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14064} {
14065   6 106 206 306 106  6 206  6   -  -
14066  12 112 212 312 112 12 212 12   -  -
14067  18 118 218 318 118 18 218 18   -  -
14068  24 124 224 324 124 24 224 24   -  -
14069  30 130 230 330 130 30 230 30 330 30
14070  36 136 236 336 136 36 236 36   -  -
14071  42 142 242 342 142 42 242 42   -  -
14072  48 148 248 348 148 48 248 48   -  -
14073  54 154 254 354 154 54 254 54   -  -
14074  60 160 260 360 160 60 260 60 360 60
14075  66 166 266 366 166 66 266 66   -  -
14076  72 172 272 372 172 72 272 72   -  -
14077  78 178 278 378 178 78 278 78   -  -
14078  84 184 284 384 184 84 284 84   -  -
14079  90 190 290 390 190 90 290 90 390 90
14080}
14081do_execsql_test joinD-488 {
14082  SELECT t1.*, t2.*, t3.*, t4.*
14083  FROM t1 LEFT JOIN t2 ON t2.x>0
14084  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14085  LEFT JOIN t4 ON t4.z>0
14086  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
14087  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14088} {
14089  30 130 230 330 130 30 230 30 330 30
14090  60 160 260 360 160 60 260 60 360 60
14091  90 190 290 390 190 90 290 90 390 90
14092}
14093do_execsql_test joinD-489 {
14094  SELECT t1.*, t2.*, t3.*, t4.*
14095  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
14096  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14097  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
14098  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14099} {
14100   3 103 203 303   -  - 203  3   -  -
14101   6 106 206 306 106  6 206  6   -  -
14102   9 109 209 309   -  - 209  9   -  -
14103  12 112 212 312 112 12 212 12   -  -
14104  15 115 215 315   -  - 215 15 315 15
14105  18 118 218 318 118 18 218 18   -  -
14106  21 121 221 321   -  - 221 21   -  -
14107  24 124 224 324 124 24 224 24   -  -
14108  27 127 227 327   -  - 227 27   -  -
14109  30 130 230 330 130 30 230 30 330 30
14110  33 133 233 333   -  - 233 33   -  -
14111  36 136 236 336 136 36 236 36   -  -
14112  39 139 239 339   -  - 239 39   -  -
14113  42 142 242 342 142 42 242 42   -  -
14114  45 145 245 345   -  - 245 45 345 45
14115  48 148 248 348 148 48 248 48   -  -
14116  51 151 251 351   -  - 251 51   -  -
14117  54 154 254 354 154 54 254 54   -  -
14118  57 157 257 357   -  - 257 57   -  -
14119  60 160 260 360 160 60 260 60 360 60
14120  63 163 263 363   -  - 263 63   -  -
14121  66 166 266 366 166 66 266 66   -  -
14122  69 169 269 369   -  - 269 69   -  -
14123  72 172 272 372 172 72 272 72   -  -
14124  75 175 275 375   -  - 275 75 375 75
14125  78 178 278 378 178 78 278 78   -  -
14126  81 181 281 381   -  - 281 81   -  -
14127  84 184 284 384 184 84 284 84   -  -
14128  87 187 287 387   -  - 287 87   -  -
14129  90 190 290 390 190 90 290 90 390 90
14130  93 193 293 393   -  - 293 93   -  -
14131   -   -   -   -   -  - 200  0   -  -
14132}
14133do_execsql_test joinD-490 {
14134  SELECT t1.*, t2.*, t3.*, t4.*
14135  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14136  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
14137  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
14138  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14139} {
14140   3 103 203 303   -  - 203  3   -  -
14141   6 106 206 306 106  6 206  6   -  -
14142   9 109 209 309   -  - 209  9   -  -
14143  12 112 212 312 112 12 212 12   -  -
14144  15 115 215 315   -  - 215 15 315 15
14145  18 118 218 318 118 18 218 18   -  -
14146  21 121 221 321   -  - 221 21   -  -
14147  24 124 224 324 124 24 224 24   -  -
14148  27 127 227 327   -  - 227 27   -  -
14149  30 130 230 330 130 30 230 30 330 30
14150  33 133 233 333   -  - 233 33   -  -
14151  36 136 236 336 136 36 236 36   -  -
14152  39 139 239 339   -  - 239 39   -  -
14153  42 142 242 342 142 42 242 42   -  -
14154  45 145 245 345   -  - 245 45 345 45
14155  48 148 248 348 148 48 248 48   -  -
14156  51 151 251 351   -  - 251 51   -  -
14157  54 154 254 354 154 54 254 54   -  -
14158  57 157 257 357   -  - 257 57   -  -
14159  60 160 260 360 160 60 260 60 360 60
14160  63 163 263 363   -  - 263 63   -  -
14161  66 166 266 366 166 66 266 66   -  -
14162  69 169 269 369   -  - 269 69   -  -
14163  72 172 272 372 172 72 272 72   -  -
14164  75 175 275 375   -  - 275 75 375 75
14165  78 178 278 378 178 78 278 78   -  -
14166  81 181 281 381   -  - 281 81   -  -
14167  84 184 284 384 184 84 284 84   -  -
14168  87 187 287 387   -  - 287 87   -  -
14169  90 190 290 390 190 90 290 90 390 90
14170  93 193 293 393   -  - 293 93   -  -
14171   -   -   -   -   -  - 200  0   -  -
14172}
14173do_execsql_test joinD-491 {
14174  SELECT t1.*, t2.*, t3.*, t4.*
14175  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14176  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14177  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14178  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14179} {
14180  15 115 215 315   -  - 215 15 315 15
14181  30 130 230 330 130 30 230 30 330 30
14182  45 145 245 345   -  - 245 45 345 45
14183  60 160 260 360 160 60 260 60 360 60
14184  75 175 275 375   -  - 275 75 375 75
14185  90 190 290 390 190 90 290 90 390 90
14186   -   -   -   -   -  -   -  - 300  0
14187   -   -   -   -   -  -   -  - 305  5
14188   -   -   -   -   -  -   -  - 310 10
14189   -   -   -   -   -  -   -  - 320 20
14190   -   -   -   -   -  -   -  - 325 25
14191   -   -   -   -   -  -   -  - 335 35
14192   -   -   -   -   -  -   -  - 340 40
14193   -   -   -   -   -  -   -  - 350 50
14194   -   -   -   -   -  -   -  - 355 55
14195   -   -   -   -   -  -   -  - 365 65
14196   -   -   -   -   -  -   -  - 370 70
14197   -   -   -   -   -  -   -  - 380 80
14198   -   -   -   -   -  -   -  - 385 85
14199   -   -   -   -   -  -   -  - 395 95
14200}
14201do_execsql_test joinD-492 {
14202  SELECT t1.*, t2.*, t3.*, t4.*
14203  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
14204  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14205  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14206  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14207} {
14208  15 115 215 315   -  - 215 15 315 15
14209  30 130 230 330 130 30 230 30 330 30
14210  45 145 245 345   -  - 245 45 345 45
14211  60 160 260 360 160 60 260 60 360 60
14212  75 175 275 375   -  - 275 75 375 75
14213  90 190 290 390 190 90 290 90 390 90
14214   -   -   -   -   -  -   -  - 300  0
14215   -   -   -   -   -  -   -  - 305  5
14216   -   -   -   -   -  -   -  - 310 10
14217   -   -   -   -   -  -   -  - 320 20
14218   -   -   -   -   -  -   -  - 325 25
14219   -   -   -   -   -  -   -  - 335 35
14220   -   -   -   -   -  -   -  - 340 40
14221   -   -   -   -   -  -   -  - 350 50
14222   -   -   -   -   -  -   -  - 355 55
14223   -   -   -   -   -  -   -  - 365 65
14224   -   -   -   -   -  -   -  - 370 70
14225   -   -   -   -   -  -   -  - 380 80
14226   -   -   -   -   -  -   -  - 385 85
14227   -   -   -   -   -  -   -  - 395 95
14228}
14229do_execsql_test joinD-493 {
14230  SELECT t1.*, t2.*, t3.*, t4.*
14231  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14232  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14233  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14234  WHERE t2.x>0
14235  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14236} {
14237  30 130 230 330 130 30 230 30 330 30
14238  60 160 260 360 160 60 260 60 360 60
14239  90 190 290 390 190 90 290 90 390 90
14240}
14241do_execsql_test joinD-494 {
14242  SELECT t1.*, t2.*, t3.*, t4.*
14243  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14244  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14245  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14246  WHERE (t2.x>0 OR t2.x IS NULL)
14247  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14248} {
14249  15 115 215 315   -  - 215 15 315 15
14250  30 130 230 330 130 30 230 30 330 30
14251  45 145 245 345   -  - 245 45 345 45
14252  60 160 260 360 160 60 260 60 360 60
14253  75 175 275 375   -  - 275 75 375 75
14254  90 190 290 390 190 90 290 90 390 90
14255   -   -   -   -   -  -   -  - 300  0
14256   -   -   -   -   -  -   -  - 305  5
14257   -   -   -   -   -  -   -  - 310 10
14258   -   -   -   -   -  -   -  - 320 20
14259   -   -   -   -   -  -   -  - 325 25
14260   -   -   -   -   -  -   -  - 335 35
14261   -   -   -   -   -  -   -  - 340 40
14262   -   -   -   -   -  -   -  - 350 50
14263   -   -   -   -   -  -   -  - 355 55
14264   -   -   -   -   -  -   -  - 365 65
14265   -   -   -   -   -  -   -  - 370 70
14266   -   -   -   -   -  -   -  - 380 80
14267   -   -   -   -   -  -   -  - 385 85
14268   -   -   -   -   -  -   -  - 395 95
14269}
14270do_execsql_test joinD-495 {
14271  SELECT t1.*, t2.*, t3.*, t4.*
14272  FROM t1 LEFT JOIN t2 ON true
14273  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14274  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14275  WHERE t1.b=t2.b AND t2.x>0
14276  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14277} {
14278  30 130 230 330 130 30 230 30 330 30
14279  60 160 260 360 160 60 260 60 360 60
14280  90 190 290 390 190 90 290 90 390 90
14281}
14282do_execsql_test joinD-496 {
14283  SELECT t1.*, t2.*, t3.*, t4.*
14284  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14285  RIGHT JOIN t3 ON t1.c=t3.c
14286  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14287  WHERE t3.y>0
14288  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14289} {
14290  15 115 215 315   -  - 215 15 315 15
14291  30 130 230 330 130 30 230 30 330 30
14292  45 145 245 345   -  - 245 45 345 45
14293  60 160 260 360 160 60 260 60 360 60
14294  75 175 275 375   -  - 275 75 375 75
14295  90 190 290 390 190 90 290 90 390 90
14296}
14297do_execsql_test joinD-497 {
14298  SELECT t1.*, t2.*, t3.*, t4.*
14299  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14300  RIGHT JOIN t3 ON t1.c=t3.c
14301  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14302  WHERE t3.y>0 OR t3.y IS NULL
14303  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14304} {
14305  15 115 215 315   -  - 215 15 315 15
14306  30 130 230 330 130 30 230 30 330 30
14307  45 145 245 345   -  - 245 45 345 45
14308  60 160 260 360 160 60 260 60 360 60
14309  75 175 275 375   -  - 275 75 375 75
14310  90 190 290 390 190 90 290 90 390 90
14311   -   -   -   -   -  -   -  - 300  0
14312   -   -   -   -   -  -   -  - 305  5
14313   -   -   -   -   -  -   -  - 310 10
14314   -   -   -   -   -  -   -  - 320 20
14315   -   -   -   -   -  -   -  - 325 25
14316   -   -   -   -   -  -   -  - 335 35
14317   -   -   -   -   -  -   -  - 340 40
14318   -   -   -   -   -  -   -  - 350 50
14319   -   -   -   -   -  -   -  - 355 55
14320   -   -   -   -   -  -   -  - 365 65
14321   -   -   -   -   -  -   -  - 370 70
14322   -   -   -   -   -  -   -  - 380 80
14323   -   -   -   -   -  -   -  - 385 85
14324   -   -   -   -   -  -   -  - 395 95
14325}
14326do_execsql_test joinD-498 {
14327  SELECT t1.*, t2.*, t3.*, t4.*
14328  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14329  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14330  RIGHT JOIN t4 ON t1.d=t4.d
14331  WHERE t4.z>0
14332  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14333} {
14334  15 115 215 315   -  - 215 15 315 15
14335  30 130 230 330 130 30 230 30 330 30
14336  45 145 245 345   -  - 245 45 345 45
14337  60 160 260 360 160 60 260 60 360 60
14338  75 175 275 375   -  - 275 75 375 75
14339  90 190 290 390 190 90 290 90 390 90
14340   -   -   -   -   -  -   -  - 305  5
14341   -   -   -   -   -  -   -  - 310 10
14342   -   -   -   -   -  -   -  - 320 20
14343   -   -   -   -   -  -   -  - 325 25
14344   -   -   -   -   -  -   -  - 335 35
14345   -   -   -   -   -  -   -  - 340 40
14346   -   -   -   -   -  -   -  - 350 50
14347   -   -   -   -   -  -   -  - 355 55
14348   -   -   -   -   -  -   -  - 365 65
14349   -   -   -   -   -  -   -  - 370 70
14350   -   -   -   -   -  -   -  - 380 80
14351   -   -   -   -   -  -   -  - 385 85
14352   -   -   -   -   -  -   -  - 395 95
14353}
14354do_execsql_test joinD-499 {
14355  SELECT t1.*, t2.*, t3.*, t4.*
14356  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14357  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14358  RIGHT JOIN t4 ON t1.d=t4.d
14359  WHERE t4.z IS NULL OR t4.z>0
14360  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14361} {
14362  15 115 215 315   -  - 215 15 315 15
14363  30 130 230 330 130 30 230 30 330 30
14364  45 145 245 345   -  - 245 45 345 45
14365  60 160 260 360 160 60 260 60 360 60
14366  75 175 275 375   -  - 275 75 375 75
14367  90 190 290 390 190 90 290 90 390 90
14368   -   -   -   -   -  -   -  - 305  5
14369   -   -   -   -   -  -   -  - 310 10
14370   -   -   -   -   -  -   -  - 320 20
14371   -   -   -   -   -  -   -  - 325 25
14372   -   -   -   -   -  -   -  - 335 35
14373   -   -   -   -   -  -   -  - 340 40
14374   -   -   -   -   -  -   -  - 350 50
14375   -   -   -   -   -  -   -  - 355 55
14376   -   -   -   -   -  -   -  - 365 65
14377   -   -   -   -   -  -   -  - 370 70
14378   -   -   -   -   -  -   -  - 380 80
14379   -   -   -   -   -  -   -  - 385 85
14380   -   -   -   -   -  -   -  - 395 95
14381}
14382do_execsql_test joinD-500 {
14383  SELECT t1.*, t2.*, t3.*, t4.*
14384  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14385  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14386  RIGHT JOIN t4 ON t1.d=t4.d
14387  WHERE t2.x>0 AND t4.z>0
14388  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14389} {
14390  30 130 230 330 130 30 230 30 330 30
14391  60 160 260 360 160 60 260 60 360 60
14392  90 190 290 390 190 90 290 90 390 90
14393}
14394do_execsql_test joinD-501 {
14395  SELECT t1.*, t2.*, t3.*, t4.*
14396  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14397  RIGHT JOIN t3 ON t1.c=t3.c
14398  RIGHT JOIN t4 ON t1.d=t4.d
14399  WHERE t4.z>0 AND t3.y>0
14400  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14401} {
14402  15 115 215 315   -  - 215 15 315 15
14403  30 130 230 330 130 30 230 30 330 30
14404  45 145 245 345   -  - 245 45 345 45
14405  60 160 260 360 160 60 260 60 360 60
14406  75 175 275 375   -  - 275 75 375 75
14407  90 190 290 390 190 90 290 90 390 90
14408}
14409do_execsql_test joinD-502 {
14410  SELECT t1.*, t2.*, t3.*, t4.*
14411  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14412  RIGHT JOIN t3 ON t1.c=t3.c
14413  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14414  WHERE t2.x>0 AND t3.y>0
14415  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14416} {
14417  30 130 230 330 130 30 230 30 330 30
14418  60 160 260 360 160 60 260 60 360 60
14419  90 190 290 390 190 90 290 90 390 90
14420}
14421do_execsql_test joinD-503 {
14422  SELECT t1.*, t2.*, t3.*, t4.*
14423  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14424  RIGHT JOIN t3 ON t1.c=t3.c
14425  RIGHT JOIN t4 ON t1.d=t4.d
14426  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
14427  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14428} {
14429  30 130 230 330 130 30 230 30 330 30
14430  60 160 260 360 160 60 260 60 360 60
14431  90 190 290 390 190 90 290 90 390 90
14432}
14433do_execsql_test joinD-504 {
14434  SELECT t1.*, t2.*, t3.*, t4.*
14435  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
14436  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14437  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14438  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14439} {
14440  15 115 215 315   -  - 215 15 315 15
14441  30 130 230 330 130 30 230 30 330 30
14442  45 145 245 345   -  - 245 45 345 45
14443  60 160 260 360 160 60 260 60 360 60
14444  75 175 275 375   -  - 275 75 375 75
14445  90 190 290 390 190 90 290 90 390 90
14446   -   -   -   -   -  -   -  - 300  0
14447   -   -   -   -   -  -   -  - 305  5
14448   -   -   -   -   -  -   -  - 310 10
14449   -   -   -   -   -  -   -  - 320 20
14450   -   -   -   -   -  -   -  - 325 25
14451   -   -   -   -   -  -   -  - 335 35
14452   -   -   -   -   -  -   -  - 340 40
14453   -   -   -   -   -  -   -  - 350 50
14454   -   -   -   -   -  -   -  - 355 55
14455   -   -   -   -   -  -   -  - 365 65
14456   -   -   -   -   -  -   -  - 370 70
14457   -   -   -   -   -  -   -  - 380 80
14458   -   -   -   -   -  -   -  - 385 85
14459   -   -   -   -   -  -   -  - 395 95
14460}
14461do_execsql_test joinD-505 {
14462  SELECT t1.*, t2.*, t3.*, t4.*
14463  FROM t1 LEFT JOIN t2 ON t2.x>0
14464  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14465  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14466  WHERE t1.b IS NOT DISTINCT FROM t2.b
14467  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14468} {
14469  30 130 230 330 130 30 230 30 330 30
14470  60 160 260 360 160 60 260 60 360 60
14471  90 190 290 390 190 90 290 90 390 90
14472   -   -   -   -   -  -   -  - 300  0
14473   -   -   -   -   -  -   -  - 305  5
14474   -   -   -   -   -  -   -  - 310 10
14475   -   -   -   -   -  -   -  - 320 20
14476   -   -   -   -   -  -   -  - 325 25
14477   -   -   -   -   -  -   -  - 335 35
14478   -   -   -   -   -  -   -  - 340 40
14479   -   -   -   -   -  -   -  - 350 50
14480   -   -   -   -   -  -   -  - 355 55
14481   -   -   -   -   -  -   -  - 365 65
14482   -   -   -   -   -  -   -  - 370 70
14483   -   -   -   -   -  -   -  - 380 80
14484   -   -   -   -   -  -   -  - 385 85
14485   -   -   -   -   -  -   -  - 395 95
14486}
14487do_execsql_test joinD-506 {
14488  SELECT t1.*, t2.*, t3.*, t4.*
14489  FROM t1 LEFT JOIN t2 ON t2.x>0
14490  RIGHT JOIN t3 ON t3.y>0
14491  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
14492  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
14493  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14494} {
14495  30 130 230 330 130 30 230 30 330 30
14496  60 160 260 360 160 60 260 60 360 60
14497  90 190 290 390 190 90 290 90 390 90
14498   -   -   -   -   -  -   -  - 300  0
14499}
14500do_execsql_test joinD-507 {
14501  SELECT t1.*, t2.*, t3.*, t4.*
14502  FROM t1 LEFT JOIN t2 ON t2.x>0
14503  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
14504  RIGHT JOIN t4 ON t4.z>0
14505  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
14506  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14507} {
14508  30 130 230 330 130 30 230 30 330 30
14509  60 160 260 360 160 60 260 60 360 60
14510  90 190 290 390 190 90 290 90 390 90
14511}
14512do_execsql_test joinD-508 {
14513  SELECT t1.*, t2.*, t3.*, t4.*
14514  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
14515  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14516  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14517  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14518} {
14519  15 115 215 315   -  - 215 15 315 15
14520  30 130 230 330 130 30 230 30 330 30
14521  45 145 245 345   -  - 245 45 345 45
14522  60 160 260 360 160 60 260 60 360 60
14523  75 175 275 375   -  - 275 75 375 75
14524  90 190 290 390 190 90 290 90 390 90
14525   -   -   -   -   -  -   -  - 300  0
14526   -   -   -   -   -  -   -  - 305  5
14527   -   -   -   -   -  -   -  - 310 10
14528   -   -   -   -   -  -   -  - 320 20
14529   -   -   -   -   -  -   -  - 325 25
14530   -   -   -   -   -  -   -  - 335 35
14531   -   -   -   -   -  -   -  - 340 40
14532   -   -   -   -   -  -   -  - 350 50
14533   -   -   -   -   -  -   -  - 355 55
14534   -   -   -   -   -  -   -  - 365 65
14535   -   -   -   -   -  -   -  - 370 70
14536   -   -   -   -   -  -   -  - 380 80
14537   -   -   -   -   -  -   -  - 385 85
14538   -   -   -   -   -  -   -  - 395 95
14539}
14540do_execsql_test joinD-509 {
14541  SELECT t1.*, t2.*, t3.*, t4.*
14542  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14543  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
14544  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
14545  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14546} {
14547  15 115 215 315   -  - 215 15 315 15
14548  30 130 230 330 130 30 230 30 330 30
14549  45 145 245 345   -  - 245 45 345 45
14550  60 160 260 360 160 60 260 60 360 60
14551  75 175 275 375   -  - 275 75 375 75
14552  90 190 290 390 190 90 290 90 390 90
14553   -   -   -   -   -  -   -  - 300  0
14554   -   -   -   -   -  -   -  - 305  5
14555   -   -   -   -   -  -   -  - 310 10
14556   -   -   -   -   -  -   -  - 320 20
14557   -   -   -   -   -  -   -  - 325 25
14558   -   -   -   -   -  -   -  - 335 35
14559   -   -   -   -   -  -   -  - 340 40
14560   -   -   -   -   -  -   -  - 350 50
14561   -   -   -   -   -  -   -  - 355 55
14562   -   -   -   -   -  -   -  - 365 65
14563   -   -   -   -   -  -   -  - 370 70
14564   -   -   -   -   -  -   -  - 380 80
14565   -   -   -   -   -  -   -  - 385 85
14566   -   -   -   -   -  -   -  - 395 95
14567}
14568do_execsql_test joinD-510 {
14569  SELECT t1.*, t2.*, t3.*, t4.*
14570  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14571  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14572  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14573  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14574} {
14575   3 103 203 303   -  - 203  3   -  -
14576   6 106 206 306 106  6 206  6   -  -
14577   9 109 209 309   -  - 209  9   -  -
14578  12 112 212 312 112 12 212 12   -  -
14579  15 115 215 315   -  - 215 15 315 15
14580  18 118 218 318 118 18 218 18   -  -
14581  21 121 221 321   -  - 221 21   -  -
14582  24 124 224 324 124 24 224 24   -  -
14583  27 127 227 327   -  - 227 27   -  -
14584  30 130 230 330 130 30 230 30 330 30
14585  33 133 233 333   -  - 233 33   -  -
14586  36 136 236 336 136 36 236 36   -  -
14587  39 139 239 339   -  - 239 39   -  -
14588  42 142 242 342 142 42 242 42   -  -
14589  45 145 245 345   -  - 245 45 345 45
14590  48 148 248 348 148 48 248 48   -  -
14591  51 151 251 351   -  - 251 51   -  -
14592  54 154 254 354 154 54 254 54   -  -
14593  57 157 257 357   -  - 257 57   -  -
14594  60 160 260 360 160 60 260 60 360 60
14595  63 163 263 363   -  - 263 63   -  -
14596  66 166 266 366 166 66 266 66   -  -
14597  69 169 269 369   -  - 269 69   -  -
14598  72 172 272 372 172 72 272 72   -  -
14599  75 175 275 375   -  - 275 75 375 75
14600  78 178 278 378 178 78 278 78   -  -
14601  81 181 281 381   -  - 281 81   -  -
14602  84 184 284 384 184 84 284 84   -  -
14603  87 187 287 387   -  - 287 87   -  -
14604  90 190 290 390 190 90 290 90 390 90
14605  93 193 293 393   -  - 293 93   -  -
14606   -   -   -   -   -  - 200  0   -  -
14607   -   -   -   -   -  -   -  - 300  0
14608   -   -   -   -   -  -   -  - 305  5
14609   -   -   -   -   -  -   -  - 310 10
14610   -   -   -   -   -  -   -  - 320 20
14611   -   -   -   -   -  -   -  - 325 25
14612   -   -   -   -   -  -   -  - 335 35
14613   -   -   -   -   -  -   -  - 340 40
14614   -   -   -   -   -  -   -  - 350 50
14615   -   -   -   -   -  -   -  - 355 55
14616   -   -   -   -   -  -   -  - 365 65
14617   -   -   -   -   -  -   -  - 370 70
14618   -   -   -   -   -  -   -  - 380 80
14619   -   -   -   -   -  -   -  - 385 85
14620   -   -   -   -   -  -   -  - 395 95
14621}
14622do_execsql_test joinD-511 {
14623  SELECT t1.*, t2.*, t3.*, t4.*
14624  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
14625  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14626  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14627  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14628} {
14629   3 103 203 303   -  - 203  3   -  -
14630   6 106 206 306 106  6 206  6   -  -
14631   9 109 209 309   -  - 209  9   -  -
14632  12 112 212 312 112 12 212 12   -  -
14633  15 115 215 315   -  - 215 15 315 15
14634  18 118 218 318 118 18 218 18   -  -
14635  21 121 221 321   -  - 221 21   -  -
14636  24 124 224 324 124 24 224 24   -  -
14637  27 127 227 327   -  - 227 27   -  -
14638  30 130 230 330 130 30 230 30 330 30
14639  33 133 233 333   -  - 233 33   -  -
14640  36 136 236 336 136 36 236 36   -  -
14641  39 139 239 339   -  - 239 39   -  -
14642  42 142 242 342 142 42 242 42   -  -
14643  45 145 245 345   -  - 245 45 345 45
14644  48 148 248 348 148 48 248 48   -  -
14645  51 151 251 351   -  - 251 51   -  -
14646  54 154 254 354 154 54 254 54   -  -
14647  57 157 257 357   -  - 257 57   -  -
14648  60 160 260 360 160 60 260 60 360 60
14649  63 163 263 363   -  - 263 63   -  -
14650  66 166 266 366 166 66 266 66   -  -
14651  69 169 269 369   -  - 269 69   -  -
14652  72 172 272 372 172 72 272 72   -  -
14653  75 175 275 375   -  - 275 75 375 75
14654  78 178 278 378 178 78 278 78   -  -
14655  81 181 281 381   -  - 281 81   -  -
14656  84 184 284 384 184 84 284 84   -  -
14657  87 187 287 387   -  - 287 87   -  -
14658  90 190 290 390 190 90 290 90 390 90
14659  93 193 293 393   -  - 293 93   -  -
14660   -   -   -   -   -  - 200  0   -  -
14661   -   -   -   -   -  -   -  - 300  0
14662   -   -   -   -   -  -   -  - 305  5
14663   -   -   -   -   -  -   -  - 310 10
14664   -   -   -   -   -  -   -  - 320 20
14665   -   -   -   -   -  -   -  - 325 25
14666   -   -   -   -   -  -   -  - 335 35
14667   -   -   -   -   -  -   -  - 340 40
14668   -   -   -   -   -  -   -  - 350 50
14669   -   -   -   -   -  -   -  - 355 55
14670   -   -   -   -   -  -   -  - 365 65
14671   -   -   -   -   -  -   -  - 370 70
14672   -   -   -   -   -  -   -  - 380 80
14673   -   -   -   -   -  -   -  - 385 85
14674   -   -   -   -   -  -   -  - 395 95
14675}
14676do_execsql_test joinD-512 {
14677  SELECT t1.*, t2.*, t3.*, t4.*
14678  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14679  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14680  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14681  WHERE t2.x>0
14682  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14683} {
14684   6 106 206 306 106  6 206  6   -  -
14685  12 112 212 312 112 12 212 12   -  -
14686  18 118 218 318 118 18 218 18   -  -
14687  24 124 224 324 124 24 224 24   -  -
14688  30 130 230 330 130 30 230 30 330 30
14689  36 136 236 336 136 36 236 36   -  -
14690  42 142 242 342 142 42 242 42   -  -
14691  48 148 248 348 148 48 248 48   -  -
14692  54 154 254 354 154 54 254 54   -  -
14693  60 160 260 360 160 60 260 60 360 60
14694  66 166 266 366 166 66 266 66   -  -
14695  72 172 272 372 172 72 272 72   -  -
14696  78 178 278 378 178 78 278 78   -  -
14697  84 184 284 384 184 84 284 84   -  -
14698  90 190 290 390 190 90 290 90 390 90
14699}
14700do_execsql_test joinD-513 {
14701  SELECT t1.*, t2.*, t3.*, t4.*
14702  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14703  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14704  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14705  WHERE (t2.x>0 OR t2.x IS NULL)
14706  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14707} {
14708   3 103 203 303   -  - 203  3   -  -
14709   6 106 206 306 106  6 206  6   -  -
14710   9 109 209 309   -  - 209  9   -  -
14711  12 112 212 312 112 12 212 12   -  -
14712  15 115 215 315   -  - 215 15 315 15
14713  18 118 218 318 118 18 218 18   -  -
14714  21 121 221 321   -  - 221 21   -  -
14715  24 124 224 324 124 24 224 24   -  -
14716  27 127 227 327   -  - 227 27   -  -
14717  30 130 230 330 130 30 230 30 330 30
14718  33 133 233 333   -  - 233 33   -  -
14719  36 136 236 336 136 36 236 36   -  -
14720  39 139 239 339   -  - 239 39   -  -
14721  42 142 242 342 142 42 242 42   -  -
14722  45 145 245 345   -  - 245 45 345 45
14723  48 148 248 348 148 48 248 48   -  -
14724  51 151 251 351   -  - 251 51   -  -
14725  54 154 254 354 154 54 254 54   -  -
14726  57 157 257 357   -  - 257 57   -  -
14727  60 160 260 360 160 60 260 60 360 60
14728  63 163 263 363   -  - 263 63   -  -
14729  66 166 266 366 166 66 266 66   -  -
14730  69 169 269 369   -  - 269 69   -  -
14731  72 172 272 372 172 72 272 72   -  -
14732  75 175 275 375   -  - 275 75 375 75
14733  78 178 278 378 178 78 278 78   -  -
14734  81 181 281 381   -  - 281 81   -  -
14735  84 184 284 384 184 84 284 84   -  -
14736  87 187 287 387   -  - 287 87   -  -
14737  90 190 290 390 190 90 290 90 390 90
14738  93 193 293 393   -  - 293 93   -  -
14739   -   -   -   -   -  - 200  0   -  -
14740   -   -   -   -   -  -   -  - 300  0
14741   -   -   -   -   -  -   -  - 305  5
14742   -   -   -   -   -  -   -  - 310 10
14743   -   -   -   -   -  -   -  - 320 20
14744   -   -   -   -   -  -   -  - 325 25
14745   -   -   -   -   -  -   -  - 335 35
14746   -   -   -   -   -  -   -  - 340 40
14747   -   -   -   -   -  -   -  - 350 50
14748   -   -   -   -   -  -   -  - 355 55
14749   -   -   -   -   -  -   -  - 365 65
14750   -   -   -   -   -  -   -  - 370 70
14751   -   -   -   -   -  -   -  - 380 80
14752   -   -   -   -   -  -   -  - 385 85
14753   -   -   -   -   -  -   -  - 395 95
14754}
14755do_execsql_test joinD-514 {
14756  SELECT t1.*, t2.*, t3.*, t4.*
14757  FROM t1 LEFT JOIN t2 ON true
14758  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14759  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14760  WHERE t1.b=t2.b AND t2.x>0
14761  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14762} {
14763   6 106 206 306 106  6 206  6   -  -
14764  12 112 212 312 112 12 212 12   -  -
14765  18 118 218 318 118 18 218 18   -  -
14766  24 124 224 324 124 24 224 24   -  -
14767  30 130 230 330 130 30 230 30 330 30
14768  36 136 236 336 136 36 236 36   -  -
14769  42 142 242 342 142 42 242 42   -  -
14770  48 148 248 348 148 48 248 48   -  -
14771  54 154 254 354 154 54 254 54   -  -
14772  60 160 260 360 160 60 260 60 360 60
14773  66 166 266 366 166 66 266 66   -  -
14774  72 172 272 372 172 72 272 72   -  -
14775  78 178 278 378 178 78 278 78   -  -
14776  84 184 284 384 184 84 284 84   -  -
14777  90 190 290 390 190 90 290 90 390 90
14778}
14779do_execsql_test joinD-515 {
14780  SELECT t1.*, t2.*, t3.*, t4.*
14781  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14782  RIGHT JOIN t3 ON t1.c=t3.c
14783  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14784  WHERE t3.y>0
14785  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14786} {
14787   3 103 203 303   -  - 203  3   -  -
14788   6 106 206 306 106  6 206  6   -  -
14789   9 109 209 309   -  - 209  9   -  -
14790  12 112 212 312 112 12 212 12   -  -
14791  15 115 215 315   -  - 215 15 315 15
14792  18 118 218 318 118 18 218 18   -  -
14793  21 121 221 321   -  - 221 21   -  -
14794  24 124 224 324 124 24 224 24   -  -
14795  27 127 227 327   -  - 227 27   -  -
14796  30 130 230 330 130 30 230 30 330 30
14797  33 133 233 333   -  - 233 33   -  -
14798  36 136 236 336 136 36 236 36   -  -
14799  39 139 239 339   -  - 239 39   -  -
14800  42 142 242 342 142 42 242 42   -  -
14801  45 145 245 345   -  - 245 45 345 45
14802  48 148 248 348 148 48 248 48   -  -
14803  51 151 251 351   -  - 251 51   -  -
14804  54 154 254 354 154 54 254 54   -  -
14805  57 157 257 357   -  - 257 57   -  -
14806  60 160 260 360 160 60 260 60 360 60
14807  63 163 263 363   -  - 263 63   -  -
14808  66 166 266 366 166 66 266 66   -  -
14809  69 169 269 369   -  - 269 69   -  -
14810  72 172 272 372 172 72 272 72   -  -
14811  75 175 275 375   -  - 275 75 375 75
14812  78 178 278 378 178 78 278 78   -  -
14813  81 181 281 381   -  - 281 81   -  -
14814  84 184 284 384 184 84 284 84   -  -
14815  87 187 287 387   -  - 287 87   -  -
14816  90 190 290 390 190 90 290 90 390 90
14817  93 193 293 393   -  - 293 93   -  -
14818}
14819do_execsql_test joinD-516 {
14820  SELECT t1.*, t2.*, t3.*, t4.*
14821  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14822  RIGHT JOIN t3 ON t1.c=t3.c
14823  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14824  WHERE t3.y>0 OR t3.y IS NULL
14825  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14826} {
14827   3 103 203 303   -  - 203  3   -  -
14828   6 106 206 306 106  6 206  6   -  -
14829   9 109 209 309   -  - 209  9   -  -
14830  12 112 212 312 112 12 212 12   -  -
14831  15 115 215 315   -  - 215 15 315 15
14832  18 118 218 318 118 18 218 18   -  -
14833  21 121 221 321   -  - 221 21   -  -
14834  24 124 224 324 124 24 224 24   -  -
14835  27 127 227 327   -  - 227 27   -  -
14836  30 130 230 330 130 30 230 30 330 30
14837  33 133 233 333   -  - 233 33   -  -
14838  36 136 236 336 136 36 236 36   -  -
14839  39 139 239 339   -  - 239 39   -  -
14840  42 142 242 342 142 42 242 42   -  -
14841  45 145 245 345   -  - 245 45 345 45
14842  48 148 248 348 148 48 248 48   -  -
14843  51 151 251 351   -  - 251 51   -  -
14844  54 154 254 354 154 54 254 54   -  -
14845  57 157 257 357   -  - 257 57   -  -
14846  60 160 260 360 160 60 260 60 360 60
14847  63 163 263 363   -  - 263 63   -  -
14848  66 166 266 366 166 66 266 66   -  -
14849  69 169 269 369   -  - 269 69   -  -
14850  72 172 272 372 172 72 272 72   -  -
14851  75 175 275 375   -  - 275 75 375 75
14852  78 178 278 378 178 78 278 78   -  -
14853  81 181 281 381   -  - 281 81   -  -
14854  84 184 284 384 184 84 284 84   -  -
14855  87 187 287 387   -  - 287 87   -  -
14856  90 190 290 390 190 90 290 90 390 90
14857  93 193 293 393   -  - 293 93   -  -
14858   -   -   -   -   -  -   -  - 300  0
14859   -   -   -   -   -  -   -  - 305  5
14860   -   -   -   -   -  -   -  - 310 10
14861   -   -   -   -   -  -   -  - 320 20
14862   -   -   -   -   -  -   -  - 325 25
14863   -   -   -   -   -  -   -  - 335 35
14864   -   -   -   -   -  -   -  - 340 40
14865   -   -   -   -   -  -   -  - 350 50
14866   -   -   -   -   -  -   -  - 355 55
14867   -   -   -   -   -  -   -  - 365 65
14868   -   -   -   -   -  -   -  - 370 70
14869   -   -   -   -   -  -   -  - 380 80
14870   -   -   -   -   -  -   -  - 385 85
14871   -   -   -   -   -  -   -  - 395 95
14872}
14873do_execsql_test joinD-517 {
14874  SELECT t1.*, t2.*, t3.*, t4.*
14875  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14876  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14877  FULL JOIN t4 ON t1.d=t4.d
14878  WHERE t4.z>0
14879  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14880} {
14881  15 115 215 315   -  - 215 15 315 15
14882  30 130 230 330 130 30 230 30 330 30
14883  45 145 245 345   -  - 245 45 345 45
14884  60 160 260 360 160 60 260 60 360 60
14885  75 175 275 375   -  - 275 75 375 75
14886  90 190 290 390 190 90 290 90 390 90
14887   -   -   -   -   -  -   -  - 305  5
14888   -   -   -   -   -  -   -  - 310 10
14889   -   -   -   -   -  -   -  - 320 20
14890   -   -   -   -   -  -   -  - 325 25
14891   -   -   -   -   -  -   -  - 335 35
14892   -   -   -   -   -  -   -  - 340 40
14893   -   -   -   -   -  -   -  - 350 50
14894   -   -   -   -   -  -   -  - 355 55
14895   -   -   -   -   -  -   -  - 365 65
14896   -   -   -   -   -  -   -  - 370 70
14897   -   -   -   -   -  -   -  - 380 80
14898   -   -   -   -   -  -   -  - 385 85
14899   -   -   -   -   -  -   -  - 395 95
14900}
14901do_execsql_test joinD-518 {
14902  SELECT t1.*, t2.*, t3.*, t4.*
14903  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14904  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14905  FULL JOIN t4 ON t1.d=t4.d
14906  WHERE t4.z IS NULL OR t4.z>0
14907  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14908} {
14909   3 103 203 303   -  - 203  3   -  -
14910   6 106 206 306 106  6 206  6   -  -
14911   9 109 209 309   -  - 209  9   -  -
14912  12 112 212 312 112 12 212 12   -  -
14913  15 115 215 315   -  - 215 15 315 15
14914  18 118 218 318 118 18 218 18   -  -
14915  21 121 221 321   -  - 221 21   -  -
14916  24 124 224 324 124 24 224 24   -  -
14917  27 127 227 327   -  - 227 27   -  -
14918  30 130 230 330 130 30 230 30 330 30
14919  33 133 233 333   -  - 233 33   -  -
14920  36 136 236 336 136 36 236 36   -  -
14921  39 139 239 339   -  - 239 39   -  -
14922  42 142 242 342 142 42 242 42   -  -
14923  45 145 245 345   -  - 245 45 345 45
14924  48 148 248 348 148 48 248 48   -  -
14925  51 151 251 351   -  - 251 51   -  -
14926  54 154 254 354 154 54 254 54   -  -
14927  57 157 257 357   -  - 257 57   -  -
14928  60 160 260 360 160 60 260 60 360 60
14929  63 163 263 363   -  - 263 63   -  -
14930  66 166 266 366 166 66 266 66   -  -
14931  69 169 269 369   -  - 269 69   -  -
14932  72 172 272 372 172 72 272 72   -  -
14933  75 175 275 375   -  - 275 75 375 75
14934  78 178 278 378 178 78 278 78   -  -
14935  81 181 281 381   -  - 281 81   -  -
14936  84 184 284 384 184 84 284 84   -  -
14937  87 187 287 387   -  - 287 87   -  -
14938  90 190 290 390 190 90 290 90 390 90
14939  93 193 293 393   -  - 293 93   -  -
14940   -   -   -   -   -  - 200  0   -  -
14941   -   -   -   -   -  -   -  - 305  5
14942   -   -   -   -   -  -   -  - 310 10
14943   -   -   -   -   -  -   -  - 320 20
14944   -   -   -   -   -  -   -  - 325 25
14945   -   -   -   -   -  -   -  - 335 35
14946   -   -   -   -   -  -   -  - 340 40
14947   -   -   -   -   -  -   -  - 350 50
14948   -   -   -   -   -  -   -  - 355 55
14949   -   -   -   -   -  -   -  - 365 65
14950   -   -   -   -   -  -   -  - 370 70
14951   -   -   -   -   -  -   -  - 380 80
14952   -   -   -   -   -  -   -  - 385 85
14953   -   -   -   -   -  -   -  - 395 95
14954}
14955do_execsql_test joinD-519 {
14956  SELECT t1.*, t2.*, t3.*, t4.*
14957  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14958  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
14959  FULL JOIN t4 ON t1.d=t4.d
14960  WHERE t2.x>0 AND t4.z>0
14961  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14962} {
14963  30 130 230 330 130 30 230 30 330 30
14964  60 160 260 360 160 60 260 60 360 60
14965  90 190 290 390 190 90 290 90 390 90
14966}
14967do_execsql_test joinD-520 {
14968  SELECT t1.*, t2.*, t3.*, t4.*
14969  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
14970  RIGHT JOIN t3 ON t1.c=t3.c
14971  FULL JOIN t4 ON t1.d=t4.d
14972  WHERE t4.z>0 AND t3.y>0
14973  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14974} {
14975  15 115 215 315   -  - 215 15 315 15
14976  30 130 230 330 130 30 230 30 330 30
14977  45 145 245 345   -  - 245 45 345 45
14978  60 160 260 360 160 60 260 60 360 60
14979  75 175 275 375   -  - 275 75 375 75
14980  90 190 290 390 190 90 290 90 390 90
14981}
14982do_execsql_test joinD-521 {
14983  SELECT t1.*, t2.*, t3.*, t4.*
14984  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
14985  RIGHT JOIN t3 ON t1.c=t3.c
14986  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
14987  WHERE t2.x>0 AND t3.y>0
14988  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
14989} {
14990   6 106 206 306 106  6 206  6   -  -
14991  12 112 212 312 112 12 212 12   -  -
14992  18 118 218 318 118 18 218 18   -  -
14993  24 124 224 324 124 24 224 24   -  -
14994  30 130 230 330 130 30 230 30 330 30
14995  36 136 236 336 136 36 236 36   -  -
14996  42 142 242 342 142 42 242 42   -  -
14997  48 148 248 348 148 48 248 48   -  -
14998  54 154 254 354 154 54 254 54   -  -
14999  60 160 260 360 160 60 260 60 360 60
15000  66 166 266 366 166 66 266 66   -  -
15001  72 172 272 372 172 72 272 72   -  -
15002  78 178 278 378 178 78 278 78   -  -
15003  84 184 284 384 184 84 284 84   -  -
15004  90 190 290 390 190 90 290 90 390 90
15005}
15006do_execsql_test joinD-522 {
15007  SELECT t1.*, t2.*, t3.*, t4.*
15008  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15009  RIGHT JOIN t3 ON t1.c=t3.c
15010  FULL JOIN t4 ON t1.d=t4.d
15011  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
15012  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15013} {
15014  30 130 230 330 130 30 230 30 330 30
15015  60 160 260 360 160 60 260 60 360 60
15016  90 190 290 390 190 90 290 90 390 90
15017}
15018do_execsql_test joinD-523 {
15019  SELECT t1.*, t2.*, t3.*, t4.*
15020  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15021  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
15022  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
15023  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15024} {
15025   3 103 203 303   -  - 203  3   -  -
15026   6 106 206 306 106  6 206  6   -  -
15027   9 109 209 309   -  - 209  9   -  -
15028  12 112 212 312 112 12 212 12   -  -
15029  15 115 215 315   -  - 215 15 315 15
15030  18 118 218 318 118 18 218 18   -  -
15031  21 121 221 321   -  - 221 21   -  -
15032  24 124 224 324 124 24 224 24   -  -
15033  27 127 227 327   -  - 227 27   -  -
15034  30 130 230 330 130 30 230 30 330 30
15035  33 133 233 333   -  - 233 33   -  -
15036  36 136 236 336 136 36 236 36   -  -
15037  39 139 239 339   -  - 239 39   -  -
15038  42 142 242 342 142 42 242 42   -  -
15039  45 145 245 345   -  - 245 45 345 45
15040  48 148 248 348 148 48 248 48   -  -
15041  51 151 251 351   -  - 251 51   -  -
15042  54 154 254 354 154 54 254 54   -  -
15043  57 157 257 357   -  - 257 57   -  -
15044  60 160 260 360 160 60 260 60 360 60
15045  63 163 263 363   -  - 263 63   -  -
15046  66 166 266 366 166 66 266 66   -  -
15047  69 169 269 369   -  - 269 69   -  -
15048  72 172 272 372 172 72 272 72   -  -
15049  75 175 275 375   -  - 275 75 375 75
15050  78 178 278 378 178 78 278 78   -  -
15051  81 181 281 381   -  - 281 81   -  -
15052  84 184 284 384 184 84 284 84   -  -
15053  87 187 287 387   -  - 287 87   -  -
15054  90 190 290 390 190 90 290 90 390 90
15055  93 193 293 393   -  - 293 93   -  -
15056   -   -   -   -   -  - 200  0   -  -
15057   -   -   -   -   -  -   -  - 300  0
15058   -   -   -   -   -  -   -  - 305  5
15059   -   -   -   -   -  -   -  - 310 10
15060   -   -   -   -   -  -   -  - 320 20
15061   -   -   -   -   -  -   -  - 325 25
15062   -   -   -   -   -  -   -  - 335 35
15063   -   -   -   -   -  -   -  - 340 40
15064   -   -   -   -   -  -   -  - 350 50
15065   -   -   -   -   -  -   -  - 355 55
15066   -   -   -   -   -  -   -  - 365 65
15067   -   -   -   -   -  -   -  - 370 70
15068   -   -   -   -   -  -   -  - 380 80
15069   -   -   -   -   -  -   -  - 385 85
15070   -   -   -   -   -  -   -  - 395 95
15071}
15072do_execsql_test joinD-524 {
15073  SELECT t1.*, t2.*, t3.*, t4.*
15074  FROM t1 LEFT JOIN t2 ON t2.x>0
15075  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
15076  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
15077  WHERE t1.b IS NOT DISTINCT FROM t2.b
15078  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15079} {
15080   6 106 206 306 106  6 206  6   -  -
15081  12 112 212 312 112 12 212 12   -  -
15082  18 118 218 318 118 18 218 18   -  -
15083  24 124 224 324 124 24 224 24   -  -
15084  30 130 230 330 130 30 230 30 330 30
15085  36 136 236 336 136 36 236 36   -  -
15086  42 142 242 342 142 42 242 42   -  -
15087  48 148 248 348 148 48 248 48   -  -
15088  54 154 254 354 154 54 254 54   -  -
15089  60 160 260 360 160 60 260 60 360 60
15090  66 166 266 366 166 66 266 66   -  -
15091  72 172 272 372 172 72 272 72   -  -
15092  78 178 278 378 178 78 278 78   -  -
15093  84 184 284 384 184 84 284 84   -  -
15094  90 190 290 390 190 90 290 90 390 90
15095   -   -   -   -   -  - 200  0   -  -
15096   -   -   -   -   -  -   -  - 300  0
15097   -   -   -   -   -  -   -  - 305  5
15098   -   -   -   -   -  -   -  - 310 10
15099   -   -   -   -   -  -   -  - 320 20
15100   -   -   -   -   -  -   -  - 325 25
15101   -   -   -   -   -  -   -  - 335 35
15102   -   -   -   -   -  -   -  - 340 40
15103   -   -   -   -   -  -   -  - 350 50
15104   -   -   -   -   -  -   -  - 355 55
15105   -   -   -   -   -  -   -  - 365 65
15106   -   -   -   -   -  -   -  - 370 70
15107   -   -   -   -   -  -   -  - 380 80
15108   -   -   -   -   -  -   -  - 385 85
15109   -   -   -   -   -  -   -  - 395 95
15110}
15111do_execsql_test joinD-525 {
15112  SELECT t1.*, t2.*, t3.*, t4.*
15113  FROM t1 LEFT JOIN t2 ON t2.x>0
15114  RIGHT JOIN t3 ON t3.y>0
15115  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
15116  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
15117  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15118} {
15119   6 106 206 306 106  6 206  6   -  -
15120  12 112 212 312 112 12 212 12   -  -
15121  18 118 218 318 118 18 218 18   -  -
15122  24 124 224 324 124 24 224 24   -  -
15123  30 130 230 330 130 30 230 30 330 30
15124  36 136 236 336 136 36 236 36   -  -
15125  42 142 242 342 142 42 242 42   -  -
15126  48 148 248 348 148 48 248 48   -  -
15127  54 154 254 354 154 54 254 54   -  -
15128  60 160 260 360 160 60 260 60 360 60
15129  66 166 266 366 166 66 266 66   -  -
15130  72 172 272 372 172 72 272 72   -  -
15131  78 178 278 378 178 78 278 78   -  -
15132  84 184 284 384 184 84 284 84   -  -
15133  90 190 290 390 190 90 290 90 390 90
15134   -   -   -   -   -  -   -  - 300  0
15135}
15136do_execsql_test joinD-526 {
15137  SELECT t1.*, t2.*, t3.*, t4.*
15138  FROM t1 LEFT JOIN t2 ON t2.x>0
15139  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
15140  FULL JOIN t4 ON t4.z>0
15141  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
15142  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15143} {
15144  30 130 230 330 130 30 230 30 330 30
15145  60 160 260 360 160 60 260 60 360 60
15146  90 190 290 390 190 90 290 90 390 90
15147}
15148do_execsql_test joinD-527 {
15149  SELECT t1.*, t2.*, t3.*, t4.*
15150  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
15151  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
15152  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
15153  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15154} {
15155   3 103 203 303   -  - 203  3   -  -
15156   6 106 206 306 106  6 206  6   -  -
15157   9 109 209 309   -  - 209  9   -  -
15158  12 112 212 312 112 12 212 12   -  -
15159  15 115 215 315   -  - 215 15 315 15
15160  18 118 218 318 118 18 218 18   -  -
15161  21 121 221 321   -  - 221 21   -  -
15162  24 124 224 324 124 24 224 24   -  -
15163  27 127 227 327   -  - 227 27   -  -
15164  30 130 230 330 130 30 230 30 330 30
15165  33 133 233 333   -  - 233 33   -  -
15166  36 136 236 336 136 36 236 36   -  -
15167  39 139 239 339   -  - 239 39   -  -
15168  42 142 242 342 142 42 242 42   -  -
15169  45 145 245 345   -  - 245 45 345 45
15170  48 148 248 348 148 48 248 48   -  -
15171  51 151 251 351   -  - 251 51   -  -
15172  54 154 254 354 154 54 254 54   -  -
15173  57 157 257 357   -  - 257 57   -  -
15174  60 160 260 360 160 60 260 60 360 60
15175  63 163 263 363   -  - 263 63   -  -
15176  66 166 266 366 166 66 266 66   -  -
15177  69 169 269 369   -  - 269 69   -  -
15178  72 172 272 372 172 72 272 72   -  -
15179  75 175 275 375   -  - 275 75 375 75
15180  78 178 278 378 178 78 278 78   -  -
15181  81 181 281 381   -  - 281 81   -  -
15182  84 184 284 384 184 84 284 84   -  -
15183  87 187 287 387   -  - 287 87   -  -
15184  90 190 290 390 190 90 290 90 390 90
15185  93 193 293 393   -  - 293 93   -  -
15186   -   -   -   -   -  - 200  0   -  -
15187   -   -   -   -   -  -   -  - 300  0
15188   -   -   -   -   -  -   -  - 305  5
15189   -   -   -   -   -  -   -  - 310 10
15190   -   -   -   -   -  -   -  - 320 20
15191   -   -   -   -   -  -   -  - 325 25
15192   -   -   -   -   -  -   -  - 335 35
15193   -   -   -   -   -  -   -  - 340 40
15194   -   -   -   -   -  -   -  - 350 50
15195   -   -   -   -   -  -   -  - 355 55
15196   -   -   -   -   -  -   -  - 365 65
15197   -   -   -   -   -  -   -  - 370 70
15198   -   -   -   -   -  -   -  - 380 80
15199   -   -   -   -   -  -   -  - 385 85
15200   -   -   -   -   -  -   -  - 395 95
15201}
15202do_execsql_test joinD-528 {
15203  SELECT t1.*, t2.*, t3.*, t4.*
15204  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15205  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
15206  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
15207  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15208} {
15209   3 103 203 303   -  - 203  3   -  -
15210   6 106 206 306 106  6 206  6   -  -
15211   9 109 209 309   -  - 209  9   -  -
15212  12 112 212 312 112 12 212 12   -  -
15213  15 115 215 315   -  - 215 15 315 15
15214  18 118 218 318 118 18 218 18   -  -
15215  21 121 221 321   -  - 221 21   -  -
15216  24 124 224 324 124 24 224 24   -  -
15217  27 127 227 327   -  - 227 27   -  -
15218  30 130 230 330 130 30 230 30 330 30
15219  33 133 233 333   -  - 233 33   -  -
15220  36 136 236 336 136 36 236 36   -  -
15221  39 139 239 339   -  - 239 39   -  -
15222  42 142 242 342 142 42 242 42   -  -
15223  45 145 245 345   -  - 245 45 345 45
15224  48 148 248 348 148 48 248 48   -  -
15225  51 151 251 351   -  - 251 51   -  -
15226  54 154 254 354 154 54 254 54   -  -
15227  57 157 257 357   -  - 257 57   -  -
15228  60 160 260 360 160 60 260 60 360 60
15229  63 163 263 363   -  - 263 63   -  -
15230  66 166 266 366 166 66 266 66   -  -
15231  69 169 269 369   -  - 269 69   -  -
15232  72 172 272 372 172 72 272 72   -  -
15233  75 175 275 375   -  - 275 75 375 75
15234  78 178 278 378 178 78 278 78   -  -
15235  81 181 281 381   -  - 281 81   -  -
15236  84 184 284 384 184 84 284 84   -  -
15237  87 187 287 387   -  - 287 87   -  -
15238  90 190 290 390 190 90 290 90 390 90
15239  93 193 293 393   -  - 293 93   -  -
15240   -   -   -   -   -  - 200  0   -  -
15241   -   -   -   -   -  -   -  - 300  0
15242   -   -   -   -   -  -   -  - 305  5
15243   -   -   -   -   -  -   -  - 310 10
15244   -   -   -   -   -  -   -  - 320 20
15245   -   -   -   -   -  -   -  - 325 25
15246   -   -   -   -   -  -   -  - 335 35
15247   -   -   -   -   -  -   -  - 340 40
15248   -   -   -   -   -  -   -  - 350 50
15249   -   -   -   -   -  -   -  - 355 55
15250   -   -   -   -   -  -   -  - 365 65
15251   -   -   -   -   -  -   -  - 370 70
15252   -   -   -   -   -  -   -  - 380 80
15253   -   -   -   -   -  -   -  - 385 85
15254   -   -   -   -   -  -   -  - 395 95
15255}
15256do_execsql_test joinD-529 {
15257  SELECT t1.*, t2.*, t3.*, t4.*
15258  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15259  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15260  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15261  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15262} {
15263   5 105 205 305   -  -   -  - 305  5
15264  10 110 210 310 110 10   -  - 310 10
15265  15 115 215 315   -  - 215 15 315 15
15266  20 120 220 320 120 20   -  - 320 20
15267  25 125 225 325   -  -   -  - 325 25
15268  30 130 230 330 130 30 230 30 330 30
15269  35 135 235 335   -  -   -  - 335 35
15270  40 140 240 340 140 40   -  - 340 40
15271  45 145 245 345   -  - 245 45 345 45
15272  50 150 250 350 150 50   -  - 350 50
15273  55 155 255 355   -  -   -  - 355 55
15274  60 160 260 360 160 60 260 60 360 60
15275  65 165 265 365   -  -   -  - 365 65
15276  70 170 270 370 170 70   -  - 370 70
15277  75 175 275 375   -  - 275 75 375 75
15278  80 180 280 380 180 80   -  - 380 80
15279  85 185 285 385   -  -   -  - 385 85
15280  90 190 290 390 190 90 290 90 390 90
15281  95 195 295 395   -  -   -  - 395 95
15282}
15283do_execsql_test joinD-530 {
15284  SELECT t1.*, t2.*, t3.*, t4.*
15285  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15286  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15287  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15288  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15289} {
15290   5 105 205 305   -  -   -  - 305  5
15291  10 110 210 310 110 10   -  - 310 10
15292  15 115 215 315   -  - 215 15 315 15
15293  20 120 220 320 120 20   -  - 320 20
15294  25 125 225 325   -  -   -  - 325 25
15295  30 130 230 330 130 30 230 30 330 30
15296  35 135 235 335   -  -   -  - 335 35
15297  40 140 240 340 140 40   -  - 340 40
15298  45 145 245 345   -  - 245 45 345 45
15299  50 150 250 350 150 50   -  - 350 50
15300  55 155 255 355   -  -   -  - 355 55
15301  60 160 260 360 160 60 260 60 360 60
15302  65 165 265 365   -  -   -  - 365 65
15303  70 170 270 370 170 70   -  - 370 70
15304  75 175 275 375   -  - 275 75 375 75
15305  80 180 280 380 180 80   -  - 380 80
15306  85 185 285 385   -  -   -  - 385 85
15307  90 190 290 390 190 90 290 90 390 90
15308  95 195 295 395   -  -   -  - 395 95
15309}
15310do_execsql_test joinD-531 {
15311  SELECT t1.*, t2.*, t3.*, t4.*
15312  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15313  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15314  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15315  WHERE t2.x>0
15316  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15317} {
15318  10 110 210 310 110 10   -  - 310 10
15319  20 120 220 320 120 20   -  - 320 20
15320  30 130 230 330 130 30 230 30 330 30
15321  40 140 240 340 140 40   -  - 340 40
15322  50 150 250 350 150 50   -  - 350 50
15323  60 160 260 360 160 60 260 60 360 60
15324  70 170 270 370 170 70   -  - 370 70
15325  80 180 280 380 180 80   -  - 380 80
15326  90 190 290 390 190 90 290 90 390 90
15327}
15328do_execsql_test joinD-532 {
15329  SELECT t1.*, t2.*, t3.*, t4.*
15330  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15331  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15332  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15333  WHERE (t2.x>0 OR t2.x IS NULL)
15334  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15335} {
15336   5 105 205 305   -  -   -  - 305  5
15337  10 110 210 310 110 10   -  - 310 10
15338  15 115 215 315   -  - 215 15 315 15
15339  20 120 220 320 120 20   -  - 320 20
15340  25 125 225 325   -  -   -  - 325 25
15341  30 130 230 330 130 30 230 30 330 30
15342  35 135 235 335   -  -   -  - 335 35
15343  40 140 240 340 140 40   -  - 340 40
15344  45 145 245 345   -  - 245 45 345 45
15345  50 150 250 350 150 50   -  - 350 50
15346  55 155 255 355   -  -   -  - 355 55
15347  60 160 260 360 160 60 260 60 360 60
15348  65 165 265 365   -  -   -  - 365 65
15349  70 170 270 370 170 70   -  - 370 70
15350  75 175 275 375   -  - 275 75 375 75
15351  80 180 280 380 180 80   -  - 380 80
15352  85 185 285 385   -  -   -  - 385 85
15353  90 190 290 390 190 90 290 90 390 90
15354  95 195 295 395   -  -   -  - 395 95
15355}
15356do_execsql_test joinD-533 {
15357  SELECT t1.*, t2.*, t3.*, t4.*
15358  FROM t1 LEFT JOIN t2 ON true
15359  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15360  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15361  WHERE t1.b=t2.b AND t2.x>0
15362  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15363} {
15364  10 110 210 310 110 10   -  - 310 10
15365  20 120 220 320 120 20   -  - 320 20
15366  30 130 230 330 130 30 230 30 330 30
15367  40 140 240 340 140 40   -  - 340 40
15368  50 150 250 350 150 50   -  - 350 50
15369  60 160 260 360 160 60 260 60 360 60
15370  70 170 270 370 170 70   -  - 370 70
15371  80 180 280 380 180 80   -  - 380 80
15372  90 190 290 390 190 90 290 90 390 90
15373}
15374do_execsql_test joinD-534 {
15375  SELECT t1.*, t2.*, t3.*, t4.*
15376  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15377  FULL JOIN t3 ON t1.c=t3.c
15378  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15379  WHERE t3.y>0
15380  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15381} {
15382  15 115 215 315   -  - 215 15 315 15
15383  30 130 230 330 130 30 230 30 330 30
15384  45 145 245 345   -  - 245 45 345 45
15385  60 160 260 360 160 60 260 60 360 60
15386  75 175 275 375   -  - 275 75 375 75
15387  90 190 290 390 190 90 290 90 390 90
15388}
15389do_execsql_test joinD-535 {
15390  SELECT t1.*, t2.*, t3.*, t4.*
15391  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15392  FULL JOIN t3 ON t1.c=t3.c
15393  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15394  WHERE t3.y>0 OR t3.y IS NULL
15395  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15396} {
15397   5 105 205 305   -  -   -  - 305  5
15398  10 110 210 310 110 10   -  - 310 10
15399  15 115 215 315   -  - 215 15 315 15
15400  20 120 220 320 120 20   -  - 320 20
15401  25 125 225 325   -  -   -  - 325 25
15402  30 130 230 330 130 30 230 30 330 30
15403  35 135 235 335   -  -   -  - 335 35
15404  40 140 240 340 140 40   -  - 340 40
15405  45 145 245 345   -  - 245 45 345 45
15406  50 150 250 350 150 50   -  - 350 50
15407  55 155 255 355   -  -   -  - 355 55
15408  60 160 260 360 160 60 260 60 360 60
15409  65 165 265 365   -  -   -  - 365 65
15410  70 170 270 370 170 70   -  - 370 70
15411  75 175 275 375   -  - 275 75 375 75
15412  80 180 280 380 180 80   -  - 380 80
15413  85 185 285 385   -  -   -  - 385 85
15414  90 190 290 390 190 90 290 90 390 90
15415  95 195 295 395   -  -   -  - 395 95
15416}
15417do_execsql_test joinD-536 {
15418  SELECT t1.*, t2.*, t3.*, t4.*
15419  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15420  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15421  INNER JOIN t4 ON t1.d=t4.d
15422  WHERE t4.z>0
15423  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15424} {
15425   5 105 205 305   -  -   -  - 305  5
15426  10 110 210 310 110 10   -  - 310 10
15427  15 115 215 315   -  - 215 15 315 15
15428  20 120 220 320 120 20   -  - 320 20
15429  25 125 225 325   -  -   -  - 325 25
15430  30 130 230 330 130 30 230 30 330 30
15431  35 135 235 335   -  -   -  - 335 35
15432  40 140 240 340 140 40   -  - 340 40
15433  45 145 245 345   -  - 245 45 345 45
15434  50 150 250 350 150 50   -  - 350 50
15435  55 155 255 355   -  -   -  - 355 55
15436  60 160 260 360 160 60 260 60 360 60
15437  65 165 265 365   -  -   -  - 365 65
15438  70 170 270 370 170 70   -  - 370 70
15439  75 175 275 375   -  - 275 75 375 75
15440  80 180 280 380 180 80   -  - 380 80
15441  85 185 285 385   -  -   -  - 385 85
15442  90 190 290 390 190 90 290 90 390 90
15443  95 195 295 395   -  -   -  - 395 95
15444}
15445do_execsql_test joinD-537 {
15446  SELECT t1.*, t2.*, t3.*, t4.*
15447  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15448  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15449  INNER JOIN t4 ON t1.d=t4.d
15450  WHERE t4.z IS NULL OR t4.z>0
15451  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15452} {
15453   5 105 205 305   -  -   -  - 305  5
15454  10 110 210 310 110 10   -  - 310 10
15455  15 115 215 315   -  - 215 15 315 15
15456  20 120 220 320 120 20   -  - 320 20
15457  25 125 225 325   -  -   -  - 325 25
15458  30 130 230 330 130 30 230 30 330 30
15459  35 135 235 335   -  -   -  - 335 35
15460  40 140 240 340 140 40   -  - 340 40
15461  45 145 245 345   -  - 245 45 345 45
15462  50 150 250 350 150 50   -  - 350 50
15463  55 155 255 355   -  -   -  - 355 55
15464  60 160 260 360 160 60 260 60 360 60
15465  65 165 265 365   -  -   -  - 365 65
15466  70 170 270 370 170 70   -  - 370 70
15467  75 175 275 375   -  - 275 75 375 75
15468  80 180 280 380 180 80   -  - 380 80
15469  85 185 285 385   -  -   -  - 385 85
15470  90 190 290 390 190 90 290 90 390 90
15471  95 195 295 395   -  -   -  - 395 95
15472}
15473do_execsql_test joinD-538 {
15474  SELECT t1.*, t2.*, t3.*, t4.*
15475  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15476  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15477  INNER JOIN t4 ON t1.d=t4.d
15478  WHERE t2.x>0 AND t4.z>0
15479  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15480} {
15481  10 110 210 310 110 10   -  - 310 10
15482  20 120 220 320 120 20   -  - 320 20
15483  30 130 230 330 130 30 230 30 330 30
15484  40 140 240 340 140 40   -  - 340 40
15485  50 150 250 350 150 50   -  - 350 50
15486  60 160 260 360 160 60 260 60 360 60
15487  70 170 270 370 170 70   -  - 370 70
15488  80 180 280 380 180 80   -  - 380 80
15489  90 190 290 390 190 90 290 90 390 90
15490}
15491do_execsql_test joinD-539 {
15492  SELECT t1.*, t2.*, t3.*, t4.*
15493  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15494  FULL JOIN t3 ON t1.c=t3.c
15495  INNER JOIN t4 ON t1.d=t4.d
15496  WHERE t4.z>0 AND t3.y>0
15497  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15498} {
15499  15 115 215 315   -  - 215 15 315 15
15500  30 130 230 330 130 30 230 30 330 30
15501  45 145 245 345   -  - 245 45 345 45
15502  60 160 260 360 160 60 260 60 360 60
15503  75 175 275 375   -  - 275 75 375 75
15504  90 190 290 390 190 90 290 90 390 90
15505}
15506do_execsql_test joinD-540 {
15507  SELECT t1.*, t2.*, t3.*, t4.*
15508  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15509  FULL JOIN t3 ON t1.c=t3.c
15510  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15511  WHERE t2.x>0 AND t3.y>0
15512  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15513} {
15514  30 130 230 330 130 30 230 30 330 30
15515  60 160 260 360 160 60 260 60 360 60
15516  90 190 290 390 190 90 290 90 390 90
15517}
15518do_execsql_test joinD-541 {
15519  SELECT t1.*, t2.*, t3.*, t4.*
15520  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15521  FULL JOIN t3 ON t1.c=t3.c
15522  INNER JOIN t4 ON t1.d=t4.d
15523  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
15524  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15525} {
15526  30 130 230 330 130 30 230 30 330 30
15527  60 160 260 360 160 60 260 60 360 60
15528  90 190 290 390 190 90 290 90 390 90
15529}
15530do_execsql_test joinD-542 {
15531  SELECT t1.*, t2.*, t3.*, t4.*
15532  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15533  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
15534  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
15535  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15536} {
15537   5 105 205 305   -  -   -  - 305  5
15538  10 110 210 310 110 10   -  - 310 10
15539  15 115 215 315   -  - 215 15 315 15
15540  20 120 220 320 120 20   -  - 320 20
15541  25 125 225 325   -  -   -  - 325 25
15542  30 130 230 330 130 30 230 30 330 30
15543  35 135 235 335   -  -   -  - 335 35
15544  40 140 240 340 140 40   -  - 340 40
15545  45 145 245 345   -  - 245 45 345 45
15546  50 150 250 350 150 50   -  - 350 50
15547  55 155 255 355   -  -   -  - 355 55
15548  60 160 260 360 160 60 260 60 360 60
15549  65 165 265 365   -  -   -  - 365 65
15550  70 170 270 370 170 70   -  - 370 70
15551  75 175 275 375   -  - 275 75 375 75
15552  80 180 280 380 180 80   -  - 380 80
15553  85 185 285 385   -  -   -  - 385 85
15554  90 190 290 390 190 90 290 90 390 90
15555  95 195 295 395   -  -   -  - 395 95
15556}
15557do_execsql_test joinD-543 {
15558  SELECT t1.*, t2.*, t3.*, t4.*
15559  FROM t1 LEFT JOIN t2 ON t2.x>0
15560  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
15561  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
15562  WHERE t1.b IS NOT DISTINCT FROM t2.b
15563  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15564} {
15565  10 110 210 310 110 10   -  - 310 10
15566  20 120 220 320 120 20   -  - 320 20
15567  30 130 230 330 130 30 230 30 330 30
15568  40 140 240 340 140 40   -  - 340 40
15569  50 150 250 350 150 50   -  - 350 50
15570  60 160 260 360 160 60 260 60 360 60
15571  70 170 270 370 170 70   -  - 370 70
15572  80 180 280 380 180 80   -  - 380 80
15573  90 190 290 390 190 90 290 90 390 90
15574}
15575do_execsql_test joinD-544 {
15576  SELECT t1.*, t2.*, t3.*, t4.*
15577  FROM t1 LEFT JOIN t2 ON t2.x>0
15578  FULL JOIN t3 ON t3.y>0
15579  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
15580  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
15581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15582} {
15583  30 130 230 330 130 30 230 30 330 30
15584  60 160 260 360 160 60 260 60 360 60
15585  90 190 290 390 190 90 290 90 390 90
15586}
15587do_execsql_test joinD-545 {
15588  SELECT t1.*, t2.*, t3.*, t4.*
15589  FROM t1 LEFT JOIN t2 ON t2.x>0
15590  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
15591  INNER JOIN t4 ON t4.z>0
15592  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
15593  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15594} {
15595  10 110 210 310 110 10   -  - 310 10
15596  20 120 220 320 120 20   -  - 320 20
15597  30 130 230 330 130 30 230 30 330 30
15598  40 140 240 340 140 40   -  - 340 40
15599  50 150 250 350 150 50   -  - 350 50
15600  60 160 260 360 160 60 260 60 360 60
15601  70 170 270 370 170 70   -  - 370 70
15602  80 180 280 380 180 80   -  - 380 80
15603  90 190 290 390 190 90 290 90 390 90
15604}
15605do_execsql_test joinD-546 {
15606  SELECT t1.*, t2.*, t3.*, t4.*
15607  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
15608  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15609  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
15610  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15611} {
15612   5 105 205 305   -  -   -  - 305  5
15613  10 110 210 310 110 10   -  - 310 10
15614  15 115 215 315   -  - 215 15 315 15
15615  20 120 220 320 120 20   -  - 320 20
15616  25 125 225 325   -  -   -  - 325 25
15617  30 130 230 330 130 30 230 30 330 30
15618  35 135 235 335   -  -   -  - 335 35
15619  40 140 240 340 140 40   -  - 340 40
15620  45 145 245 345   -  - 245 45 345 45
15621  50 150 250 350 150 50   -  - 350 50
15622  55 155 255 355   -  -   -  - 355 55
15623  60 160 260 360 160 60 260 60 360 60
15624  65 165 265 365   -  -   -  - 365 65
15625  70 170 270 370 170 70   -  - 370 70
15626  75 175 275 375   -  - 275 75 375 75
15627  80 180 280 380 180 80   -  - 380 80
15628  85 185 285 385   -  -   -  - 385 85
15629  90 190 290 390 190 90 290 90 390 90
15630  95 195 295 395   -  -   -  - 395 95
15631}
15632do_execsql_test joinD-547 {
15633  SELECT t1.*, t2.*, t3.*, t4.*
15634  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
15635  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15636  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15637  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15638} {
15639   0 100 200 300   -  -   -  -   -  -
15640   1 101 201 301   -  -   -  -   -  -
15641   2 102 202 302 102  2   -  -   -  -
15642   3 103 203 303   -  - 203  3   -  -
15643   4 104 204 304 104  4   -  -   -  -
15644   5 105 205 305   -  -   -  - 305  5
15645   6 106 206 306 106  6 206  6   -  -
15646   7 107 207 307   -  -   -  -   -  -
15647   8 108 208 308 108  8   -  -   -  -
15648   9 109 209 309   -  - 209  9   -  -
15649  10 110 210 310 110 10   -  - 310 10
15650  11 111 211 311   -  -   -  -   -  -
15651  12 112 212 312 112 12 212 12   -  -
15652  13 113 213 313   -  -   -  -   -  -
15653  14 114 214 314 114 14   -  -   -  -
15654  15 115 215 315   -  - 215 15 315 15
15655  16 116 216 316 116 16   -  -   -  -
15656  17 117 217 317   -  -   -  -   -  -
15657  18 118 218 318 118 18 218 18   -  -
15658  19 119 219 319   -  -   -  -   -  -
15659  20 120 220 320 120 20   -  - 320 20
15660  21 121 221 321   -  - 221 21   -  -
15661  22 122 222 322 122 22   -  -   -  -
15662  23 123 223 323   -  -   -  -   -  -
15663  24 124 224 324 124 24 224 24   -  -
15664  25 125 225 325   -  -   -  - 325 25
15665  26 126 226 326 126 26   -  -   -  -
15666  27 127 227 327   -  - 227 27   -  -
15667  28 128 228 328 128 28   -  -   -  -
15668  29 129 229 329   -  -   -  -   -  -
15669  30 130 230 330 130 30 230 30 330 30
15670  31 131 231 331   -  -   -  -   -  -
15671  32 132 232 332 132 32   -  -   -  -
15672  33 133 233 333   -  - 233 33   -  -
15673  34 134 234 334 134 34   -  -   -  -
15674  35 135 235 335   -  -   -  - 335 35
15675  36 136 236 336 136 36 236 36   -  -
15676  37 137 237 337   -  -   -  -   -  -
15677  38 138 238 338 138 38   -  -   -  -
15678  39 139 239 339   -  - 239 39   -  -
15679  40 140 240 340 140 40   -  - 340 40
15680  41 141 241 341   -  -   -  -   -  -
15681  42 142 242 342 142 42 242 42   -  -
15682  43 143 243 343   -  -   -  -   -  -
15683  44 144 244 344 144 44   -  -   -  -
15684  45 145 245 345   -  - 245 45 345 45
15685  46 146 246 346 146 46   -  -   -  -
15686  47 147 247 347   -  -   -  -   -  -
15687  48 148 248 348 148 48 248 48   -  -
15688  49 149 249 349   -  -   -  -   -  -
15689  50 150 250 350 150 50   -  - 350 50
15690  51 151 251 351   -  - 251 51   -  -
15691  52 152 252 352 152 52   -  -   -  -
15692  53 153 253 353   -  -   -  -   -  -
15693  54 154 254 354 154 54 254 54   -  -
15694  55 155 255 355   -  -   -  - 355 55
15695  56 156 256 356 156 56   -  -   -  -
15696  57 157 257 357   -  - 257 57   -  -
15697  58 158 258 358 158 58   -  -   -  -
15698  59 159 259 359   -  -   -  -   -  -
15699  60 160 260 360 160 60 260 60 360 60
15700  61 161 261 361   -  -   -  -   -  -
15701  62 162 262 362 162 62   -  -   -  -
15702  63 163 263 363   -  - 263 63   -  -
15703  64 164 264 364 164 64   -  -   -  -
15704  65 165 265 365   -  -   -  - 365 65
15705  66 166 266 366 166 66 266 66   -  -
15706  67 167 267 367   -  -   -  -   -  -
15707  68 168 268 368 168 68   -  -   -  -
15708  69 169 269 369   -  - 269 69   -  -
15709  70 170 270 370 170 70   -  - 370 70
15710  71 171 271 371   -  -   -  -   -  -
15711  72 172 272 372 172 72 272 72   -  -
15712  73 173 273 373   -  -   -  -   -  -
15713  74 174 274 374 174 74   -  -   -  -
15714  75 175 275 375   -  - 275 75 375 75
15715  76 176 276 376 176 76   -  -   -  -
15716  77 177 277 377   -  -   -  -   -  -
15717  78 178 278 378 178 78 278 78   -  -
15718  79 179 279 379   -  -   -  -   -  -
15719  80 180 280 380 180 80   -  - 380 80
15720  81 181 281 381   -  - 281 81   -  -
15721  82 182 282 382 182 82   -  -   -  -
15722  83 183 283 383   -  -   -  -   -  -
15723  84 184 284 384 184 84 284 84   -  -
15724  85 185 285 385   -  -   -  - 385 85
15725  86 186 286 386 186 86   -  -   -  -
15726  87 187 287 387   -  - 287 87   -  -
15727  88 188 288 388 188 88   -  -   -  -
15728  89 189 289 389   -  -   -  -   -  -
15729  90 190 290 390 190 90 290 90 390 90
15730  91 191 291 391   -  -   -  -   -  -
15731  92 192 292 392 192 92   -  -   -  -
15732  93 193 293 393   -  - 293 93   -  -
15733  94 194 294 394 194 94   -  -   -  -
15734  95 195 295 395   -  -   -  - 395 95
15735  96   - 296 396   -  -   -  -   -  -
15736  97 197   - 397   -  -   -  -   -  -
15737  98 198 298   -   -  -   -  -   -  -
15738  99   -   -   -   -  -   -  -   -  -
15739   -   -   -   -   -  - 200  0   -  -
15740}
15741do_execsql_test joinD-548 {
15742  SELECT t1.*, t2.*, t3.*, t4.*
15743  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
15744  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15745  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15746  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15747} {
15748   0 100 200 300   -  -   -  -   -  -
15749   1 101 201 301   -  -   -  -   -  -
15750   2 102 202 302 102  2   -  -   -  -
15751   3 103 203 303   -  - 203  3   -  -
15752   4 104 204 304 104  4   -  -   -  -
15753   5 105 205 305   -  -   -  - 305  5
15754   6 106 206 306 106  6 206  6   -  -
15755   7 107 207 307   -  -   -  -   -  -
15756   8 108 208 308 108  8   -  -   -  -
15757   9 109 209 309   -  - 209  9   -  -
15758  10 110 210 310 110 10   -  - 310 10
15759  11 111 211 311   -  -   -  -   -  -
15760  12 112 212 312 112 12 212 12   -  -
15761  13 113 213 313   -  -   -  -   -  -
15762  14 114 214 314 114 14   -  -   -  -
15763  15 115 215 315   -  - 215 15 315 15
15764  16 116 216 316 116 16   -  -   -  -
15765  17 117 217 317   -  -   -  -   -  -
15766  18 118 218 318 118 18 218 18   -  -
15767  19 119 219 319   -  -   -  -   -  -
15768  20 120 220 320 120 20   -  - 320 20
15769  21 121 221 321   -  - 221 21   -  -
15770  22 122 222 322 122 22   -  -   -  -
15771  23 123 223 323   -  -   -  -   -  -
15772  24 124 224 324 124 24 224 24   -  -
15773  25 125 225 325   -  -   -  - 325 25
15774  26 126 226 326 126 26   -  -   -  -
15775  27 127 227 327   -  - 227 27   -  -
15776  28 128 228 328 128 28   -  -   -  -
15777  29 129 229 329   -  -   -  -   -  -
15778  30 130 230 330 130 30 230 30 330 30
15779  31 131 231 331   -  -   -  -   -  -
15780  32 132 232 332 132 32   -  -   -  -
15781  33 133 233 333   -  - 233 33   -  -
15782  34 134 234 334 134 34   -  -   -  -
15783  35 135 235 335   -  -   -  - 335 35
15784  36 136 236 336 136 36 236 36   -  -
15785  37 137 237 337   -  -   -  -   -  -
15786  38 138 238 338 138 38   -  -   -  -
15787  39 139 239 339   -  - 239 39   -  -
15788  40 140 240 340 140 40   -  - 340 40
15789  41 141 241 341   -  -   -  -   -  -
15790  42 142 242 342 142 42 242 42   -  -
15791  43 143 243 343   -  -   -  -   -  -
15792  44 144 244 344 144 44   -  -   -  -
15793  45 145 245 345   -  - 245 45 345 45
15794  46 146 246 346 146 46   -  -   -  -
15795  47 147 247 347   -  -   -  -   -  -
15796  48 148 248 348 148 48 248 48   -  -
15797  49 149 249 349   -  -   -  -   -  -
15798  50 150 250 350 150 50   -  - 350 50
15799  51 151 251 351   -  - 251 51   -  -
15800  52 152 252 352 152 52   -  -   -  -
15801  53 153 253 353   -  -   -  -   -  -
15802  54 154 254 354 154 54 254 54   -  -
15803  55 155 255 355   -  -   -  - 355 55
15804  56 156 256 356 156 56   -  -   -  -
15805  57 157 257 357   -  - 257 57   -  -
15806  58 158 258 358 158 58   -  -   -  -
15807  59 159 259 359   -  -   -  -   -  -
15808  60 160 260 360 160 60 260 60 360 60
15809  61 161 261 361   -  -   -  -   -  -
15810  62 162 262 362 162 62   -  -   -  -
15811  63 163 263 363   -  - 263 63   -  -
15812  64 164 264 364 164 64   -  -   -  -
15813  65 165 265 365   -  -   -  - 365 65
15814  66 166 266 366 166 66 266 66   -  -
15815  67 167 267 367   -  -   -  -   -  -
15816  68 168 268 368 168 68   -  -   -  -
15817  69 169 269 369   -  - 269 69   -  -
15818  70 170 270 370 170 70   -  - 370 70
15819  71 171 271 371   -  -   -  -   -  -
15820  72 172 272 372 172 72 272 72   -  -
15821  73 173 273 373   -  -   -  -   -  -
15822  74 174 274 374 174 74   -  -   -  -
15823  75 175 275 375   -  - 275 75 375 75
15824  76 176 276 376 176 76   -  -   -  -
15825  77 177 277 377   -  -   -  -   -  -
15826  78 178 278 378 178 78 278 78   -  -
15827  79 179 279 379   -  -   -  -   -  -
15828  80 180 280 380 180 80   -  - 380 80
15829  81 181 281 381   -  - 281 81   -  -
15830  82 182 282 382 182 82   -  -   -  -
15831  83 183 283 383   -  -   -  -   -  -
15832  84 184 284 384 184 84 284 84   -  -
15833  85 185 285 385   -  -   -  - 385 85
15834  86 186 286 386 186 86   -  -   -  -
15835  87 187 287 387   -  - 287 87   -  -
15836  88 188 288 388 188 88   -  -   -  -
15837  89 189 289 389   -  -   -  -   -  -
15838  90 190 290 390 190 90 290 90 390 90
15839  91 191 291 391   -  -   -  -   -  -
15840  92 192 292 392 192 92   -  -   -  -
15841  93 193 293 393   -  - 293 93   -  -
15842  94 194 294 394 194 94   -  -   -  -
15843  95 195 295 395   -  -   -  - 395 95
15844  96   - 296 396   -  -   -  -   -  -
15845  97 197   - 397   -  -   -  -   -  -
15846  98 198 298   -   -  -   -  -   -  -
15847  99   -   -   -   -  -   -  -   -  -
15848   -   -   -   -   -  - 200  0   -  -
15849}
15850do_execsql_test joinD-549 {
15851  SELECT t1.*, t2.*, t3.*, t4.*
15852  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15853  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15854  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15855  WHERE t2.x>0
15856  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15857} {
15858   2 102 202 302 102  2   -  -   -  -
15859   4 104 204 304 104  4   -  -   -  -
15860   6 106 206 306 106  6 206  6   -  -
15861   8 108 208 308 108  8   -  -   -  -
15862  10 110 210 310 110 10   -  - 310 10
15863  12 112 212 312 112 12 212 12   -  -
15864  14 114 214 314 114 14   -  -   -  -
15865  16 116 216 316 116 16   -  -   -  -
15866  18 118 218 318 118 18 218 18   -  -
15867  20 120 220 320 120 20   -  - 320 20
15868  22 122 222 322 122 22   -  -   -  -
15869  24 124 224 324 124 24 224 24   -  -
15870  26 126 226 326 126 26   -  -   -  -
15871  28 128 228 328 128 28   -  -   -  -
15872  30 130 230 330 130 30 230 30 330 30
15873  32 132 232 332 132 32   -  -   -  -
15874  34 134 234 334 134 34   -  -   -  -
15875  36 136 236 336 136 36 236 36   -  -
15876  38 138 238 338 138 38   -  -   -  -
15877  40 140 240 340 140 40   -  - 340 40
15878  42 142 242 342 142 42 242 42   -  -
15879  44 144 244 344 144 44   -  -   -  -
15880  46 146 246 346 146 46   -  -   -  -
15881  48 148 248 348 148 48 248 48   -  -
15882  50 150 250 350 150 50   -  - 350 50
15883  52 152 252 352 152 52   -  -   -  -
15884  54 154 254 354 154 54 254 54   -  -
15885  56 156 256 356 156 56   -  -   -  -
15886  58 158 258 358 158 58   -  -   -  -
15887  60 160 260 360 160 60 260 60 360 60
15888  62 162 262 362 162 62   -  -   -  -
15889  64 164 264 364 164 64   -  -   -  -
15890  66 166 266 366 166 66 266 66   -  -
15891  68 168 268 368 168 68   -  -   -  -
15892  70 170 270 370 170 70   -  - 370 70
15893  72 172 272 372 172 72 272 72   -  -
15894  74 174 274 374 174 74   -  -   -  -
15895  76 176 276 376 176 76   -  -   -  -
15896  78 178 278 378 178 78 278 78   -  -
15897  80 180 280 380 180 80   -  - 380 80
15898  82 182 282 382 182 82   -  -   -  -
15899  84 184 284 384 184 84 284 84   -  -
15900  86 186 286 386 186 86   -  -   -  -
15901  88 188 288 388 188 88   -  -   -  -
15902  90 190 290 390 190 90 290 90 390 90
15903  92 192 292 392 192 92   -  -   -  -
15904  94 194 294 394 194 94   -  -   -  -
15905}
15906do_execsql_test joinD-550 {
15907  SELECT t1.*, t2.*, t3.*, t4.*
15908  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
15909  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
15910  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
15911  WHERE (t2.x>0 OR t2.x IS NULL)
15912  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
15913} {
15914   1 101 201 301   -  -   -  -   -  -
15915   2 102 202 302 102  2   -  -   -  -
15916   3 103 203 303   -  - 203  3   -  -
15917   4 104 204 304 104  4   -  -   -  -
15918   5 105 205 305   -  -   -  - 305  5
15919   6 106 206 306 106  6 206  6   -  -
15920   7 107 207 307   -  -   -  -   -  -
15921   8 108 208 308 108  8   -  -   -  -
15922   9 109 209 309   -  - 209  9   -  -
15923  10 110 210 310 110 10   -  - 310 10
15924  11 111 211 311   -  -   -  -   -  -
15925  12 112 212 312 112 12 212 12   -  -
15926  13 113 213 313   -  -   -  -   -  -
15927  14 114 214 314 114 14   -  -   -  -
15928  15 115 215 315   -  - 215 15 315 15
15929  16 116 216 316 116 16   -  -   -  -
15930  17 117 217 317   -  -   -  -   -  -
15931  18 118 218 318 118 18 218 18   -  -
15932  19 119 219 319   -  -   -  -   -  -
15933  20 120 220 320 120 20   -  - 320 20
15934  21 121 221 321   -  - 221 21   -  -
15935  22 122 222 322 122 22   -  -   -  -
15936  23 123 223 323   -  -   -  -   -  -
15937  24 124 224 324 124 24 224 24   -  -
15938  25 125 225 325   -  -   -  - 325 25
15939  26 126 226 326 126 26   -  -   -  -
15940  27 127 227 327   -  - 227 27   -  -
15941  28 128 228 328 128 28   -  -   -  -
15942  29 129 229 329   -  -   -  -   -  -
15943  30 130 230 330 130 30 230 30 330 30
15944  31 131 231 331   -  -   -  -   -  -
15945  32 132 232 332 132 32   -  -   -  -
15946  33 133 233 333   -  - 233 33   -  -
15947  34 134 234 334 134 34   -  -   -  -
15948  35 135 235 335   -  -   -  - 335 35
15949  36 136 236 336 136 36 236 36   -  -
15950  37 137 237 337   -  -   -  -   -  -
15951  38 138 238 338 138 38   -  -   -  -
15952  39 139 239 339   -  - 239 39   -  -
15953  40 140 240 340 140 40   -  - 340 40
15954  41 141 241 341   -  -   -  -   -  -
15955  42 142 242 342 142 42 242 42   -  -
15956  43 143 243 343   -  -   -  -   -  -
15957  44 144 244 344 144 44   -  -   -  -
15958  45 145 245 345   -  - 245 45 345 45
15959  46 146 246 346 146 46   -  -   -  -
15960  47 147 247 347   -  -   -  -   -  -
15961  48 148 248 348 148 48 248 48   -  -
15962  49 149 249 349   -  -   -  -   -  -
15963  50 150 250 350 150 50   -  - 350 50
15964  51 151 251 351   -  - 251 51   -  -
15965  52 152 252 352 152 52   -  -   -  -
15966  53 153 253 353   -  -   -  -   -  -
15967  54 154 254 354 154 54 254 54   -  -
15968  55 155 255 355   -  -   -  - 355 55
15969  56 156 256 356 156 56   -  -   -  -
15970  57 157 257 357   -  - 257 57   -  -
15971  58 158 258 358 158 58   -  -   -  -
15972  59 159 259 359   -  -   -  -   -  -
15973  60 160 260 360 160 60 260 60 360 60
15974  61 161 261 361   -  -   -  -   -  -
15975  62 162 262 362 162 62   -  -   -  -
15976  63 163 263 363   -  - 263 63   -  -
15977  64 164 264 364 164 64   -  -   -  -
15978  65 165 265 365   -  -   -  - 365 65
15979  66 166 266 366 166 66 266 66   -  -
15980  67 167 267 367   -  -   -  -   -  -
15981  68 168 268 368 168 68   -  -   -  -
15982  69 169 269 369   -  - 269 69   -  -
15983  70 170 270 370 170 70   -  - 370 70
15984  71 171 271 371   -  -   -  -   -  -
15985  72 172 272 372 172 72 272 72   -  -
15986  73 173 273 373   -  -   -  -   -  -
15987  74 174 274 374 174 74   -  -   -  -
15988  75 175 275 375   -  - 275 75 375 75
15989  76 176 276 376 176 76   -  -   -  -
15990  77 177 277 377   -  -   -  -   -  -
15991  78 178 278 378 178 78 278 78   -  -
15992  79 179 279 379   -  -   -  -   -  -
15993  80 180 280 380 180 80   -  - 380 80
15994  81 181 281 381   -  - 281 81   -  -
15995  82 182 282 382 182 82   -  -   -  -
15996  83 183 283 383   -  -   -  -   -  -
15997  84 184 284 384 184 84 284 84   -  -
15998  85 185 285 385   -  -   -  - 385 85
15999  86 186 286 386 186 86   -  -   -  -
16000  87 187 287 387   -  - 287 87   -  -
16001  88 188 288 388 188 88   -  -   -  -
16002  89 189 289 389   -  -   -  -   -  -
16003  90 190 290 390 190 90 290 90 390 90
16004  91 191 291 391   -  -   -  -   -  -
16005  92 192 292 392 192 92   -  -   -  -
16006  93 193 293 393   -  - 293 93   -  -
16007  94 194 294 394 194 94   -  -   -  -
16008  95 195 295 395   -  -   -  - 395 95
16009  96   - 296 396   -  -   -  -   -  -
16010  97 197   - 397   -  -   -  -   -  -
16011  98 198 298   -   -  -   -  -   -  -
16012  99   -   -   -   -  -   -  -   -  -
16013   -   -   -   -   -  - 200  0   -  -
16014}
16015do_execsql_test joinD-551 {
16016  SELECT t1.*, t2.*, t3.*, t4.*
16017  FROM t1 LEFT JOIN t2 ON true
16018  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16019  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16020  WHERE t1.b=t2.b AND t2.x>0
16021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16022} {
16023   2 102 202 302 102  2   -  -   -  -
16024   4 104 204 304 104  4   -  -   -  -
16025   6 106 206 306 106  6 206  6   -  -
16026   8 108 208 308 108  8   -  -   -  -
16027  10 110 210 310 110 10   -  - 310 10
16028  12 112 212 312 112 12 212 12   -  -
16029  14 114 214 314 114 14   -  -   -  -
16030  16 116 216 316 116 16   -  -   -  -
16031  18 118 218 318 118 18 218 18   -  -
16032  20 120 220 320 120 20   -  - 320 20
16033  22 122 222 322 122 22   -  -   -  -
16034  24 124 224 324 124 24 224 24   -  -
16035  26 126 226 326 126 26   -  -   -  -
16036  28 128 228 328 128 28   -  -   -  -
16037  30 130 230 330 130 30 230 30 330 30
16038  32 132 232 332 132 32   -  -   -  -
16039  34 134 234 334 134 34   -  -   -  -
16040  36 136 236 336 136 36 236 36   -  -
16041  38 138 238 338 138 38   -  -   -  -
16042  40 140 240 340 140 40   -  - 340 40
16043  42 142 242 342 142 42 242 42   -  -
16044  44 144 244 344 144 44   -  -   -  -
16045  46 146 246 346 146 46   -  -   -  -
16046  48 148 248 348 148 48 248 48   -  -
16047  50 150 250 350 150 50   -  - 350 50
16048  52 152 252 352 152 52   -  -   -  -
16049  54 154 254 354 154 54 254 54   -  -
16050  56 156 256 356 156 56   -  -   -  -
16051  58 158 258 358 158 58   -  -   -  -
16052  60 160 260 360 160 60 260 60 360 60
16053  62 162 262 362 162 62   -  -   -  -
16054  64 164 264 364 164 64   -  -   -  -
16055  66 166 266 366 166 66 266 66   -  -
16056  68 168 268 368 168 68   -  -   -  -
16057  70 170 270 370 170 70   -  - 370 70
16058  72 172 272 372 172 72 272 72   -  -
16059  74 174 274 374 174 74   -  -   -  -
16060  76 176 276 376 176 76   -  -   -  -
16061  78 178 278 378 178 78 278 78   -  -
16062  80 180 280 380 180 80   -  - 380 80
16063  82 182 282 382 182 82   -  -   -  -
16064  84 184 284 384 184 84 284 84   -  -
16065  86 186 286 386 186 86   -  -   -  -
16066  88 188 288 388 188 88   -  -   -  -
16067  90 190 290 390 190 90 290 90 390 90
16068  92 192 292 392 192 92   -  -   -  -
16069  94 194 294 394 194 94   -  -   -  -
16070}
16071do_execsql_test joinD-552 {
16072  SELECT t1.*, t2.*, t3.*, t4.*
16073  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16074  FULL JOIN t3 ON t1.c=t3.c
16075  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16076  WHERE t3.y>0
16077  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16078} {
16079   3 103 203 303   -  - 203  3   -  -
16080   6 106 206 306 106  6 206  6   -  -
16081   9 109 209 309   -  - 209  9   -  -
16082  12 112 212 312 112 12 212 12   -  -
16083  15 115 215 315   -  - 215 15 315 15
16084  18 118 218 318 118 18 218 18   -  -
16085  21 121 221 321   -  - 221 21   -  -
16086  24 124 224 324 124 24 224 24   -  -
16087  27 127 227 327   -  - 227 27   -  -
16088  30 130 230 330 130 30 230 30 330 30
16089  33 133 233 333   -  - 233 33   -  -
16090  36 136 236 336 136 36 236 36   -  -
16091  39 139 239 339   -  - 239 39   -  -
16092  42 142 242 342 142 42 242 42   -  -
16093  45 145 245 345   -  - 245 45 345 45
16094  48 148 248 348 148 48 248 48   -  -
16095  51 151 251 351   -  - 251 51   -  -
16096  54 154 254 354 154 54 254 54   -  -
16097  57 157 257 357   -  - 257 57   -  -
16098  60 160 260 360 160 60 260 60 360 60
16099  63 163 263 363   -  - 263 63   -  -
16100  66 166 266 366 166 66 266 66   -  -
16101  69 169 269 369   -  - 269 69   -  -
16102  72 172 272 372 172 72 272 72   -  -
16103  75 175 275 375   -  - 275 75 375 75
16104  78 178 278 378 178 78 278 78   -  -
16105  81 181 281 381   -  - 281 81   -  -
16106  84 184 284 384 184 84 284 84   -  -
16107  87 187 287 387   -  - 287 87   -  -
16108  90 190 290 390 190 90 290 90 390 90
16109  93 193 293 393   -  - 293 93   -  -
16110}
16111do_execsql_test joinD-553 {
16112  SELECT t1.*, t2.*, t3.*, t4.*
16113  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16114  FULL JOIN t3 ON t1.c=t3.c
16115  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16116  WHERE t3.y>0 OR t3.y IS NULL
16117  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16118} {
16119   1 101 201 301   -  -   -  -   -  -
16120   2 102 202 302 102  2   -  -   -  -
16121   3 103 203 303   -  - 203  3   -  -
16122   4 104 204 304 104  4   -  -   -  -
16123   5 105 205 305   -  -   -  - 305  5
16124   6 106 206 306 106  6 206  6   -  -
16125   7 107 207 307   -  -   -  -   -  -
16126   8 108 208 308 108  8   -  -   -  -
16127   9 109 209 309   -  - 209  9   -  -
16128  10 110 210 310 110 10   -  - 310 10
16129  11 111 211 311   -  -   -  -   -  -
16130  12 112 212 312 112 12 212 12   -  -
16131  13 113 213 313   -  -   -  -   -  -
16132  14 114 214 314 114 14   -  -   -  -
16133  15 115 215 315   -  - 215 15 315 15
16134  16 116 216 316 116 16   -  -   -  -
16135  17 117 217 317   -  -   -  -   -  -
16136  18 118 218 318 118 18 218 18   -  -
16137  19 119 219 319   -  -   -  -   -  -
16138  20 120 220 320 120 20   -  - 320 20
16139  21 121 221 321   -  - 221 21   -  -
16140  22 122 222 322 122 22   -  -   -  -
16141  23 123 223 323   -  -   -  -   -  -
16142  24 124 224 324 124 24 224 24   -  -
16143  25 125 225 325   -  -   -  - 325 25
16144  26 126 226 326 126 26   -  -   -  -
16145  27 127 227 327   -  - 227 27   -  -
16146  28 128 228 328 128 28   -  -   -  -
16147  29 129 229 329   -  -   -  -   -  -
16148  30 130 230 330 130 30 230 30 330 30
16149  31 131 231 331   -  -   -  -   -  -
16150  32 132 232 332 132 32   -  -   -  -
16151  33 133 233 333   -  - 233 33   -  -
16152  34 134 234 334 134 34   -  -   -  -
16153  35 135 235 335   -  -   -  - 335 35
16154  36 136 236 336 136 36 236 36   -  -
16155  37 137 237 337   -  -   -  -   -  -
16156  38 138 238 338 138 38   -  -   -  -
16157  39 139 239 339   -  - 239 39   -  -
16158  40 140 240 340 140 40   -  - 340 40
16159  41 141 241 341   -  -   -  -   -  -
16160  42 142 242 342 142 42 242 42   -  -
16161  43 143 243 343   -  -   -  -   -  -
16162  44 144 244 344 144 44   -  -   -  -
16163  45 145 245 345   -  - 245 45 345 45
16164  46 146 246 346 146 46   -  -   -  -
16165  47 147 247 347   -  -   -  -   -  -
16166  48 148 248 348 148 48 248 48   -  -
16167  49 149 249 349   -  -   -  -   -  -
16168  50 150 250 350 150 50   -  - 350 50
16169  51 151 251 351   -  - 251 51   -  -
16170  52 152 252 352 152 52   -  -   -  -
16171  53 153 253 353   -  -   -  -   -  -
16172  54 154 254 354 154 54 254 54   -  -
16173  55 155 255 355   -  -   -  - 355 55
16174  56 156 256 356 156 56   -  -   -  -
16175  57 157 257 357   -  - 257 57   -  -
16176  58 158 258 358 158 58   -  -   -  -
16177  59 159 259 359   -  -   -  -   -  -
16178  60 160 260 360 160 60 260 60 360 60
16179  61 161 261 361   -  -   -  -   -  -
16180  62 162 262 362 162 62   -  -   -  -
16181  63 163 263 363   -  - 263 63   -  -
16182  64 164 264 364 164 64   -  -   -  -
16183  65 165 265 365   -  -   -  - 365 65
16184  66 166 266 366 166 66 266 66   -  -
16185  67 167 267 367   -  -   -  -   -  -
16186  68 168 268 368 168 68   -  -   -  -
16187  69 169 269 369   -  - 269 69   -  -
16188  70 170 270 370 170 70   -  - 370 70
16189  71 171 271 371   -  -   -  -   -  -
16190  72 172 272 372 172 72 272 72   -  -
16191  73 173 273 373   -  -   -  -   -  -
16192  74 174 274 374 174 74   -  -   -  -
16193  75 175 275 375   -  - 275 75 375 75
16194  76 176 276 376 176 76   -  -   -  -
16195  77 177 277 377   -  -   -  -   -  -
16196  78 178 278 378 178 78 278 78   -  -
16197  79 179 279 379   -  -   -  -   -  -
16198  80 180 280 380 180 80   -  - 380 80
16199  81 181 281 381   -  - 281 81   -  -
16200  82 182 282 382 182 82   -  -   -  -
16201  83 183 283 383   -  -   -  -   -  -
16202  84 184 284 384 184 84 284 84   -  -
16203  85 185 285 385   -  -   -  - 385 85
16204  86 186 286 386 186 86   -  -   -  -
16205  87 187 287 387   -  - 287 87   -  -
16206  88 188 288 388 188 88   -  -   -  -
16207  89 189 289 389   -  -   -  -   -  -
16208  90 190 290 390 190 90 290 90 390 90
16209  91 191 291 391   -  -   -  -   -  -
16210  92 192 292 392 192 92   -  -   -  -
16211  93 193 293 393   -  - 293 93   -  -
16212  94 194 294 394 194 94   -  -   -  -
16213  95 195 295 395   -  -   -  - 395 95
16214  96   - 296 396   -  -   -  -   -  -
16215  97 197   - 397   -  -   -  -   -  -
16216  98 198 298   -   -  -   -  -   -  -
16217  99   -   -   -   -  -   -  -   -  -
16218}
16219do_execsql_test joinD-554 {
16220  SELECT t1.*, t2.*, t3.*, t4.*
16221  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16222  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16223  LEFT JOIN t4 ON t1.d=t4.d
16224  WHERE t4.z>0
16225  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16226} {
16227   5 105 205 305   -  -   -  - 305  5
16228  10 110 210 310 110 10   -  - 310 10
16229  15 115 215 315   -  - 215 15 315 15
16230  20 120 220 320 120 20   -  - 320 20
16231  25 125 225 325   -  -   -  - 325 25
16232  30 130 230 330 130 30 230 30 330 30
16233  35 135 235 335   -  -   -  - 335 35
16234  40 140 240 340 140 40   -  - 340 40
16235  45 145 245 345   -  - 245 45 345 45
16236  50 150 250 350 150 50   -  - 350 50
16237  55 155 255 355   -  -   -  - 355 55
16238  60 160 260 360 160 60 260 60 360 60
16239  65 165 265 365   -  -   -  - 365 65
16240  70 170 270 370 170 70   -  - 370 70
16241  75 175 275 375   -  - 275 75 375 75
16242  80 180 280 380 180 80   -  - 380 80
16243  85 185 285 385   -  -   -  - 385 85
16244  90 190 290 390 190 90 290 90 390 90
16245  95 195 295 395   -  -   -  - 395 95
16246}
16247do_execsql_test joinD-555 {
16248  SELECT t1.*, t2.*, t3.*, t4.*
16249  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16250  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16251  LEFT JOIN t4 ON t1.d=t4.d
16252  WHERE t4.z IS NULL OR t4.z>0
16253  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16254} {
16255   1 101 201 301   -  -   -  -   -  -
16256   2 102 202 302 102  2   -  -   -  -
16257   3 103 203 303   -  - 203  3   -  -
16258   4 104 204 304 104  4   -  -   -  -
16259   5 105 205 305   -  -   -  - 305  5
16260   6 106 206 306 106  6 206  6   -  -
16261   7 107 207 307   -  -   -  -   -  -
16262   8 108 208 308 108  8   -  -   -  -
16263   9 109 209 309   -  - 209  9   -  -
16264  10 110 210 310 110 10   -  - 310 10
16265  11 111 211 311   -  -   -  -   -  -
16266  12 112 212 312 112 12 212 12   -  -
16267  13 113 213 313   -  -   -  -   -  -
16268  14 114 214 314 114 14   -  -   -  -
16269  15 115 215 315   -  - 215 15 315 15
16270  16 116 216 316 116 16   -  -   -  -
16271  17 117 217 317   -  -   -  -   -  -
16272  18 118 218 318 118 18 218 18   -  -
16273  19 119 219 319   -  -   -  -   -  -
16274  20 120 220 320 120 20   -  - 320 20
16275  21 121 221 321   -  - 221 21   -  -
16276  22 122 222 322 122 22   -  -   -  -
16277  23 123 223 323   -  -   -  -   -  -
16278  24 124 224 324 124 24 224 24   -  -
16279  25 125 225 325   -  -   -  - 325 25
16280  26 126 226 326 126 26   -  -   -  -
16281  27 127 227 327   -  - 227 27   -  -
16282  28 128 228 328 128 28   -  -   -  -
16283  29 129 229 329   -  -   -  -   -  -
16284  30 130 230 330 130 30 230 30 330 30
16285  31 131 231 331   -  -   -  -   -  -
16286  32 132 232 332 132 32   -  -   -  -
16287  33 133 233 333   -  - 233 33   -  -
16288  34 134 234 334 134 34   -  -   -  -
16289  35 135 235 335   -  -   -  - 335 35
16290  36 136 236 336 136 36 236 36   -  -
16291  37 137 237 337   -  -   -  -   -  -
16292  38 138 238 338 138 38   -  -   -  -
16293  39 139 239 339   -  - 239 39   -  -
16294  40 140 240 340 140 40   -  - 340 40
16295  41 141 241 341   -  -   -  -   -  -
16296  42 142 242 342 142 42 242 42   -  -
16297  43 143 243 343   -  -   -  -   -  -
16298  44 144 244 344 144 44   -  -   -  -
16299  45 145 245 345   -  - 245 45 345 45
16300  46 146 246 346 146 46   -  -   -  -
16301  47 147 247 347   -  -   -  -   -  -
16302  48 148 248 348 148 48 248 48   -  -
16303  49 149 249 349   -  -   -  -   -  -
16304  50 150 250 350 150 50   -  - 350 50
16305  51 151 251 351   -  - 251 51   -  -
16306  52 152 252 352 152 52   -  -   -  -
16307  53 153 253 353   -  -   -  -   -  -
16308  54 154 254 354 154 54 254 54   -  -
16309  55 155 255 355   -  -   -  - 355 55
16310  56 156 256 356 156 56   -  -   -  -
16311  57 157 257 357   -  - 257 57   -  -
16312  58 158 258 358 158 58   -  -   -  -
16313  59 159 259 359   -  -   -  -   -  -
16314  60 160 260 360 160 60 260 60 360 60
16315  61 161 261 361   -  -   -  -   -  -
16316  62 162 262 362 162 62   -  -   -  -
16317  63 163 263 363   -  - 263 63   -  -
16318  64 164 264 364 164 64   -  -   -  -
16319  65 165 265 365   -  -   -  - 365 65
16320  66 166 266 366 166 66 266 66   -  -
16321  67 167 267 367   -  -   -  -   -  -
16322  68 168 268 368 168 68   -  -   -  -
16323  69 169 269 369   -  - 269 69   -  -
16324  70 170 270 370 170 70   -  - 370 70
16325  71 171 271 371   -  -   -  -   -  -
16326  72 172 272 372 172 72 272 72   -  -
16327  73 173 273 373   -  -   -  -   -  -
16328  74 174 274 374 174 74   -  -   -  -
16329  75 175 275 375   -  - 275 75 375 75
16330  76 176 276 376 176 76   -  -   -  -
16331  77 177 277 377   -  -   -  -   -  -
16332  78 178 278 378 178 78 278 78   -  -
16333  79 179 279 379   -  -   -  -   -  -
16334  80 180 280 380 180 80   -  - 380 80
16335  81 181 281 381   -  - 281 81   -  -
16336  82 182 282 382 182 82   -  -   -  -
16337  83 183 283 383   -  -   -  -   -  -
16338  84 184 284 384 184 84 284 84   -  -
16339  85 185 285 385   -  -   -  - 385 85
16340  86 186 286 386 186 86   -  -   -  -
16341  87 187 287 387   -  - 287 87   -  -
16342  88 188 288 388 188 88   -  -   -  -
16343  89 189 289 389   -  -   -  -   -  -
16344  90 190 290 390 190 90 290 90 390 90
16345  91 191 291 391   -  -   -  -   -  -
16346  92 192 292 392 192 92   -  -   -  -
16347  93 193 293 393   -  - 293 93   -  -
16348  94 194 294 394 194 94   -  -   -  -
16349  95 195 295 395   -  -   -  - 395 95
16350  96   - 296 396   -  -   -  -   -  -
16351  97 197   - 397   -  -   -  -   -  -
16352  98 198 298   -   -  -   -  -   -  -
16353  99   -   -   -   -  -   -  -   -  -
16354   -   -   -   -   -  - 200  0   -  -
16355}
16356do_execsql_test joinD-556 {
16357  SELECT t1.*, t2.*, t3.*, t4.*
16358  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16359  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16360  LEFT JOIN t4 ON t1.d=t4.d
16361  WHERE t2.x>0 AND t4.z>0
16362  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16363} {
16364  10 110 210 310 110 10   -  - 310 10
16365  20 120 220 320 120 20   -  - 320 20
16366  30 130 230 330 130 30 230 30 330 30
16367  40 140 240 340 140 40   -  - 340 40
16368  50 150 250 350 150 50   -  - 350 50
16369  60 160 260 360 160 60 260 60 360 60
16370  70 170 270 370 170 70   -  - 370 70
16371  80 180 280 380 180 80   -  - 380 80
16372  90 190 290 390 190 90 290 90 390 90
16373}
16374do_execsql_test joinD-557 {
16375  SELECT t1.*, t2.*, t3.*, t4.*
16376  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16377  FULL JOIN t3 ON t1.c=t3.c
16378  LEFT JOIN t4 ON t1.d=t4.d
16379  WHERE t4.z>0 AND t3.y>0
16380  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16381} {
16382  15 115 215 315   -  - 215 15 315 15
16383  30 130 230 330 130 30 230 30 330 30
16384  45 145 245 345   -  - 245 45 345 45
16385  60 160 260 360 160 60 260 60 360 60
16386  75 175 275 375   -  - 275 75 375 75
16387  90 190 290 390 190 90 290 90 390 90
16388}
16389do_execsql_test joinD-558 {
16390  SELECT t1.*, t2.*, t3.*, t4.*
16391  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16392  FULL JOIN t3 ON t1.c=t3.c
16393  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16394  WHERE t2.x>0 AND t3.y>0
16395  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16396} {
16397   6 106 206 306 106  6 206  6   -  -
16398  12 112 212 312 112 12 212 12   -  -
16399  18 118 218 318 118 18 218 18   -  -
16400  24 124 224 324 124 24 224 24   -  -
16401  30 130 230 330 130 30 230 30 330 30
16402  36 136 236 336 136 36 236 36   -  -
16403  42 142 242 342 142 42 242 42   -  -
16404  48 148 248 348 148 48 248 48   -  -
16405  54 154 254 354 154 54 254 54   -  -
16406  60 160 260 360 160 60 260 60 360 60
16407  66 166 266 366 166 66 266 66   -  -
16408  72 172 272 372 172 72 272 72   -  -
16409  78 178 278 378 178 78 278 78   -  -
16410  84 184 284 384 184 84 284 84   -  -
16411  90 190 290 390 190 90 290 90 390 90
16412}
16413do_execsql_test joinD-559 {
16414  SELECT t1.*, t2.*, t3.*, t4.*
16415  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16416  FULL JOIN t3 ON t1.c=t3.c
16417  LEFT JOIN t4 ON t1.d=t4.d
16418  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
16419  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16420} {
16421  30 130 230 330 130 30 230 30 330 30
16422  60 160 260 360 160 60 260 60 360 60
16423  90 190 290 390 190 90 290 90 390 90
16424}
16425do_execsql_test joinD-560 {
16426  SELECT t1.*, t2.*, t3.*, t4.*
16427  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
16428  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
16429  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
16430  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16431} {
16432   0 100 200 300   -  -   -  -   -  -
16433   1 101 201 301   -  -   -  -   -  -
16434   2 102 202 302 102  2   -  -   -  -
16435   3 103 203 303   -  - 203  3   -  -
16436   4 104 204 304 104  4   -  -   -  -
16437   5 105 205 305   -  -   -  - 305  5
16438   6 106 206 306 106  6 206  6   -  -
16439   7 107 207 307   -  -   -  -   -  -
16440   8 108 208 308 108  8   -  -   -  -
16441   9 109 209 309   -  - 209  9   -  -
16442  10 110 210 310 110 10   -  - 310 10
16443  11 111 211 311   -  -   -  -   -  -
16444  12 112 212 312 112 12 212 12   -  -
16445  13 113 213 313   -  -   -  -   -  -
16446  14 114 214 314 114 14   -  -   -  -
16447  15 115 215 315   -  - 215 15 315 15
16448  16 116 216 316 116 16   -  -   -  -
16449  17 117 217 317   -  -   -  -   -  -
16450  18 118 218 318 118 18 218 18   -  -
16451  19 119 219 319   -  -   -  -   -  -
16452  20 120 220 320 120 20   -  - 320 20
16453  21 121 221 321   -  - 221 21   -  -
16454  22 122 222 322 122 22   -  -   -  -
16455  23 123 223 323   -  -   -  -   -  -
16456  24 124 224 324 124 24 224 24   -  -
16457  25 125 225 325   -  -   -  - 325 25
16458  26 126 226 326 126 26   -  -   -  -
16459  27 127 227 327   -  - 227 27   -  -
16460  28 128 228 328 128 28   -  -   -  -
16461  29 129 229 329   -  -   -  -   -  -
16462  30 130 230 330 130 30 230 30 330 30
16463  31 131 231 331   -  -   -  -   -  -
16464  32 132 232 332 132 32   -  -   -  -
16465  33 133 233 333   -  - 233 33   -  -
16466  34 134 234 334 134 34   -  -   -  -
16467  35 135 235 335   -  -   -  - 335 35
16468  36 136 236 336 136 36 236 36   -  -
16469  37 137 237 337   -  -   -  -   -  -
16470  38 138 238 338 138 38   -  -   -  -
16471  39 139 239 339   -  - 239 39   -  -
16472  40 140 240 340 140 40   -  - 340 40
16473  41 141 241 341   -  -   -  -   -  -
16474  42 142 242 342 142 42 242 42   -  -
16475  43 143 243 343   -  -   -  -   -  -
16476  44 144 244 344 144 44   -  -   -  -
16477  45 145 245 345   -  - 245 45 345 45
16478  46 146 246 346 146 46   -  -   -  -
16479  47 147 247 347   -  -   -  -   -  -
16480  48 148 248 348 148 48 248 48   -  -
16481  49 149 249 349   -  -   -  -   -  -
16482  50 150 250 350 150 50   -  - 350 50
16483  51 151 251 351   -  - 251 51   -  -
16484  52 152 252 352 152 52   -  -   -  -
16485  53 153 253 353   -  -   -  -   -  -
16486  54 154 254 354 154 54 254 54   -  -
16487  55 155 255 355   -  -   -  - 355 55
16488  56 156 256 356 156 56   -  -   -  -
16489  57 157 257 357   -  - 257 57   -  -
16490  58 158 258 358 158 58   -  -   -  -
16491  59 159 259 359   -  -   -  -   -  -
16492  60 160 260 360 160 60 260 60 360 60
16493  61 161 261 361   -  -   -  -   -  -
16494  62 162 262 362 162 62   -  -   -  -
16495  63 163 263 363   -  - 263 63   -  -
16496  64 164 264 364 164 64   -  -   -  -
16497  65 165 265 365   -  -   -  - 365 65
16498  66 166 266 366 166 66 266 66   -  -
16499  67 167 267 367   -  -   -  -   -  -
16500  68 168 268 368 168 68   -  -   -  -
16501  69 169 269 369   -  - 269 69   -  -
16502  70 170 270 370 170 70   -  - 370 70
16503  71 171 271 371   -  -   -  -   -  -
16504  72 172 272 372 172 72 272 72   -  -
16505  73 173 273 373   -  -   -  -   -  -
16506  74 174 274 374 174 74   -  -   -  -
16507  75 175 275 375   -  - 275 75 375 75
16508  76 176 276 376 176 76   -  -   -  -
16509  77 177 277 377   -  -   -  -   -  -
16510  78 178 278 378 178 78 278 78   -  -
16511  79 179 279 379   -  -   -  -   -  -
16512  80 180 280 380 180 80   -  - 380 80
16513  81 181 281 381   -  - 281 81   -  -
16514  82 182 282 382 182 82   -  -   -  -
16515  83 183 283 383   -  -   -  -   -  -
16516  84 184 284 384 184 84 284 84   -  -
16517  85 185 285 385   -  -   -  - 385 85
16518  86 186 286 386 186 86   -  -   -  -
16519  87 187 287 387   -  - 287 87   -  -
16520  88 188 288 388 188 88   -  -   -  -
16521  89 189 289 389   -  -   -  -   -  -
16522  90 190 290 390 190 90 290 90 390 90
16523  91 191 291 391   -  -   -  -   -  -
16524  92 192 292 392 192 92   -  -   -  -
16525  93 193 293 393   -  - 293 93   -  -
16526  94 194 294 394 194 94   -  -   -  -
16527  95 195 295 395   -  -   -  - 395 95
16528  96   - 296 396   -  -   -  -   -  -
16529  97 197   - 397   -  -   -  -   -  -
16530  98 198 298   -   -  -   -  -   -  -
16531  99   -   -   -   -  -   -  -   -  -
16532   -   -   -   -   -  - 200  0   -  -
16533}
16534do_execsql_test joinD-561 {
16535  SELECT t1.*, t2.*, t3.*, t4.*
16536  FROM t1 LEFT JOIN t2 ON t2.x>0
16537  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
16538  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
16539  WHERE t1.b IS NOT DISTINCT FROM t2.b
16540  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16541} {
16542   2 102 202 302 102  2   -  -   -  -
16543   4 104 204 304 104  4   -  -   -  -
16544   6 106 206 306 106  6 206  6   -  -
16545   8 108 208 308 108  8   -  -   -  -
16546  10 110 210 310 110 10   -  - 310 10
16547  12 112 212 312 112 12 212 12   -  -
16548  14 114 214 314 114 14   -  -   -  -
16549  16 116 216 316 116 16   -  -   -  -
16550  18 118 218 318 118 18 218 18   -  -
16551  20 120 220 320 120 20   -  - 320 20
16552  22 122 222 322 122 22   -  -   -  -
16553  24 124 224 324 124 24 224 24   -  -
16554  26 126 226 326 126 26   -  -   -  -
16555  28 128 228 328 128 28   -  -   -  -
16556  30 130 230 330 130 30 230 30 330 30
16557  32 132 232 332 132 32   -  -   -  -
16558  34 134 234 334 134 34   -  -   -  -
16559  36 136 236 336 136 36 236 36   -  -
16560  38 138 238 338 138 38   -  -   -  -
16561  40 140 240 340 140 40   -  - 340 40
16562  42 142 242 342 142 42 242 42   -  -
16563  44 144 244 344 144 44   -  -   -  -
16564  46 146 246 346 146 46   -  -   -  -
16565  48 148 248 348 148 48 248 48   -  -
16566  50 150 250 350 150 50   -  - 350 50
16567  52 152 252 352 152 52   -  -   -  -
16568  54 154 254 354 154 54 254 54   -  -
16569  56 156 256 356 156 56   -  -   -  -
16570  58 158 258 358 158 58   -  -   -  -
16571  60 160 260 360 160 60 260 60 360 60
16572  62 162 262 362 162 62   -  -   -  -
16573  64 164 264 364 164 64   -  -   -  -
16574  66 166 266 366 166 66 266 66   -  -
16575  68 168 268 368 168 68   -  -   -  -
16576  70 170 270 370 170 70   -  - 370 70
16577  72 172 272 372 172 72 272 72   -  -
16578  74 174 274 374 174 74   -  -   -  -
16579  76 176 276 376 176 76   -  -   -  -
16580  78 178 278 378 178 78 278 78   -  -
16581  80 180 280 380 180 80   -  - 380 80
16582  82 182 282 382 182 82   -  -   -  -
16583  84 184 284 384 184 84 284 84   -  -
16584  86 186 286 386 186 86   -  -   -  -
16585  88 188 288 388 188 88   -  -   -  -
16586  90 190 290 390 190 90 290 90 390 90
16587  92 192 292 392 192 92   -  -   -  -
16588  94 194 294 394 194 94   -  -   -  -
16589   -   -   -   -   -  - 200  0   -  -
16590}
16591do_execsql_test joinD-562 {
16592  SELECT t1.*, t2.*, t3.*, t4.*
16593  FROM t1 LEFT JOIN t2 ON t2.x>0
16594  FULL JOIN t3 ON t3.y>0
16595  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
16596  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
16597  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16598} {
16599   6 106 206 306 106  6 206  6   -  -
16600  12 112 212 312 112 12 212 12   -  -
16601  18 118 218 318 118 18 218 18   -  -
16602  24 124 224 324 124 24 224 24   -  -
16603  30 130 230 330 130 30 230 30 330 30
16604  36 136 236 336 136 36 236 36   -  -
16605  42 142 242 342 142 42 242 42   -  -
16606  48 148 248 348 148 48 248 48   -  -
16607  54 154 254 354 154 54 254 54   -  -
16608  60 160 260 360 160 60 260 60 360 60
16609  66 166 266 366 166 66 266 66   -  -
16610  72 172 272 372 172 72 272 72   -  -
16611  78 178 278 378 178 78 278 78   -  -
16612  84 184 284 384 184 84 284 84   -  -
16613  90 190 290 390 190 90 290 90 390 90
16614}
16615do_execsql_test joinD-563 {
16616  SELECT t1.*, t2.*, t3.*, t4.*
16617  FROM t1 LEFT JOIN t2 ON t2.x>0
16618  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
16619  LEFT JOIN t4 ON t4.z>0
16620  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
16621  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16622} {
16623  10 110 210 310 110 10   -  - 310 10
16624  20 120 220 320 120 20   -  - 320 20
16625  30 130 230 330 130 30 230 30 330 30
16626  40 140 240 340 140 40   -  - 340 40
16627  50 150 250 350 150 50   -  - 350 50
16628  60 160 260 360 160 60 260 60 360 60
16629  70 170 270 370 170 70   -  - 370 70
16630  80 180 280 380 180 80   -  - 380 80
16631  90 190 290 390 190 90 290 90 390 90
16632}
16633do_execsql_test joinD-564 {
16634  SELECT t1.*, t2.*, t3.*, t4.*
16635  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
16636  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16637  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
16638  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16639} {
16640   0 100 200 300   -  -   -  -   -  -
16641   1 101 201 301   -  -   -  -   -  -
16642   2 102 202 302 102  2   -  -   -  -
16643   3 103 203 303   -  - 203  3   -  -
16644   4 104 204 304 104  4   -  -   -  -
16645   5 105 205 305   -  -   -  - 305  5
16646   6 106 206 306 106  6 206  6   -  -
16647   7 107 207 307   -  -   -  -   -  -
16648   8 108 208 308 108  8   -  -   -  -
16649   9 109 209 309   -  - 209  9   -  -
16650  10 110 210 310 110 10   -  - 310 10
16651  11 111 211 311   -  -   -  -   -  -
16652  12 112 212 312 112 12 212 12   -  -
16653  13 113 213 313   -  -   -  -   -  -
16654  14 114 214 314 114 14   -  -   -  -
16655  15 115 215 315   -  - 215 15 315 15
16656  16 116 216 316 116 16   -  -   -  -
16657  17 117 217 317   -  -   -  -   -  -
16658  18 118 218 318 118 18 218 18   -  -
16659  19 119 219 319   -  -   -  -   -  -
16660  20 120 220 320 120 20   -  - 320 20
16661  21 121 221 321   -  - 221 21   -  -
16662  22 122 222 322 122 22   -  -   -  -
16663  23 123 223 323   -  -   -  -   -  -
16664  24 124 224 324 124 24 224 24   -  -
16665  25 125 225 325   -  -   -  - 325 25
16666  26 126 226 326 126 26   -  -   -  -
16667  27 127 227 327   -  - 227 27   -  -
16668  28 128 228 328 128 28   -  -   -  -
16669  29 129 229 329   -  -   -  -   -  -
16670  30 130 230 330 130 30 230 30 330 30
16671  31 131 231 331   -  -   -  -   -  -
16672  32 132 232 332 132 32   -  -   -  -
16673  33 133 233 333   -  - 233 33   -  -
16674  34 134 234 334 134 34   -  -   -  -
16675  35 135 235 335   -  -   -  - 335 35
16676  36 136 236 336 136 36 236 36   -  -
16677  37 137 237 337   -  -   -  -   -  -
16678  38 138 238 338 138 38   -  -   -  -
16679  39 139 239 339   -  - 239 39   -  -
16680  40 140 240 340 140 40   -  - 340 40
16681  41 141 241 341   -  -   -  -   -  -
16682  42 142 242 342 142 42 242 42   -  -
16683  43 143 243 343   -  -   -  -   -  -
16684  44 144 244 344 144 44   -  -   -  -
16685  45 145 245 345   -  - 245 45 345 45
16686  46 146 246 346 146 46   -  -   -  -
16687  47 147 247 347   -  -   -  -   -  -
16688  48 148 248 348 148 48 248 48   -  -
16689  49 149 249 349   -  -   -  -   -  -
16690  50 150 250 350 150 50   -  - 350 50
16691  51 151 251 351   -  - 251 51   -  -
16692  52 152 252 352 152 52   -  -   -  -
16693  53 153 253 353   -  -   -  -   -  -
16694  54 154 254 354 154 54 254 54   -  -
16695  55 155 255 355   -  -   -  - 355 55
16696  56 156 256 356 156 56   -  -   -  -
16697  57 157 257 357   -  - 257 57   -  -
16698  58 158 258 358 158 58   -  -   -  -
16699  59 159 259 359   -  -   -  -   -  -
16700  60 160 260 360 160 60 260 60 360 60
16701  61 161 261 361   -  -   -  -   -  -
16702  62 162 262 362 162 62   -  -   -  -
16703  63 163 263 363   -  - 263 63   -  -
16704  64 164 264 364 164 64   -  -   -  -
16705  65 165 265 365   -  -   -  - 365 65
16706  66 166 266 366 166 66 266 66   -  -
16707  67 167 267 367   -  -   -  -   -  -
16708  68 168 268 368 168 68   -  -   -  -
16709  69 169 269 369   -  - 269 69   -  -
16710  70 170 270 370 170 70   -  - 370 70
16711  71 171 271 371   -  -   -  -   -  -
16712  72 172 272 372 172 72 272 72   -  -
16713  73 173 273 373   -  -   -  -   -  -
16714  74 174 274 374 174 74   -  -   -  -
16715  75 175 275 375   -  - 275 75 375 75
16716  76 176 276 376 176 76   -  -   -  -
16717  77 177 277 377   -  -   -  -   -  -
16718  78 178 278 378 178 78 278 78   -  -
16719  79 179 279 379   -  -   -  -   -  -
16720  80 180 280 380 180 80   -  - 380 80
16721  81 181 281 381   -  - 281 81   -  -
16722  82 182 282 382 182 82   -  -   -  -
16723  83 183 283 383   -  -   -  -   -  -
16724  84 184 284 384 184 84 284 84   -  -
16725  85 185 285 385   -  -   -  - 385 85
16726  86 186 286 386 186 86   -  -   -  -
16727  87 187 287 387   -  - 287 87   -  -
16728  88 188 288 388 188 88   -  -   -  -
16729  89 189 289 389   -  -   -  -   -  -
16730  90 190 290 390 190 90 290 90 390 90
16731  91 191 291 391   -  -   -  -   -  -
16732  92 192 292 392 192 92   -  -   -  -
16733  93 193 293 393   -  - 293 93   -  -
16734  94 194 294 394 194 94   -  -   -  -
16735  95 195 295 395   -  -   -  - 395 95
16736  96   - 296 396   -  -   -  -   -  -
16737  97 197   - 397   -  -   -  -   -  -
16738  98 198 298   -   -  -   -  -   -  -
16739  99   -   -   -   -  -   -  -   -  -
16740   -   -   -   -   -  - 200  0   -  -
16741}
16742do_execsql_test joinD-565 {
16743  SELECT t1.*, t2.*, t3.*, t4.*
16744  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16745  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16746  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16747  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16748} {
16749   5 105 205 305   -  -   -  - 305  5
16750  10 110 210 310 110 10   -  - 310 10
16751  15 115 215 315   -  - 215 15 315 15
16752  20 120 220 320 120 20   -  - 320 20
16753  25 125 225 325   -  -   -  - 325 25
16754  30 130 230 330 130 30 230 30 330 30
16755  35 135 235 335   -  -   -  - 335 35
16756  40 140 240 340 140 40   -  - 340 40
16757  45 145 245 345   -  - 245 45 345 45
16758  50 150 250 350 150 50   -  - 350 50
16759  55 155 255 355   -  -   -  - 355 55
16760  60 160 260 360 160 60 260 60 360 60
16761  65 165 265 365   -  -   -  - 365 65
16762  70 170 270 370 170 70   -  - 370 70
16763  75 175 275 375   -  - 275 75 375 75
16764  80 180 280 380 180 80   -  - 380 80
16765  85 185 285 385   -  -   -  - 385 85
16766  90 190 290 390 190 90 290 90 390 90
16767  95 195 295 395   -  -   -  - 395 95
16768   -   -   -   -   -  -   -  - 300  0
16769}
16770do_execsql_test joinD-566 {
16771  SELECT t1.*, t2.*, t3.*, t4.*
16772  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
16773  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16774  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16775  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16776} {
16777   5 105 205 305   -  -   -  - 305  5
16778  10 110 210 310 110 10   -  - 310 10
16779  15 115 215 315   -  - 215 15 315 15
16780  20 120 220 320 120 20   -  - 320 20
16781  25 125 225 325   -  -   -  - 325 25
16782  30 130 230 330 130 30 230 30 330 30
16783  35 135 235 335   -  -   -  - 335 35
16784  40 140 240 340 140 40   -  - 340 40
16785  45 145 245 345   -  - 245 45 345 45
16786  50 150 250 350 150 50   -  - 350 50
16787  55 155 255 355   -  -   -  - 355 55
16788  60 160 260 360 160 60 260 60 360 60
16789  65 165 265 365   -  -   -  - 365 65
16790  70 170 270 370 170 70   -  - 370 70
16791  75 175 275 375   -  - 275 75 375 75
16792  80 180 280 380 180 80   -  - 380 80
16793  85 185 285 385   -  -   -  - 385 85
16794  90 190 290 390 190 90 290 90 390 90
16795  95 195 295 395   -  -   -  - 395 95
16796   -   -   -   -   -  -   -  - 300  0
16797}
16798do_execsql_test joinD-567 {
16799  SELECT t1.*, t2.*, t3.*, t4.*
16800  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16801  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16802  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16803  WHERE t2.x>0
16804  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16805} {
16806  10 110 210 310 110 10   -  - 310 10
16807  20 120 220 320 120 20   -  - 320 20
16808  30 130 230 330 130 30 230 30 330 30
16809  40 140 240 340 140 40   -  - 340 40
16810  50 150 250 350 150 50   -  - 350 50
16811  60 160 260 360 160 60 260 60 360 60
16812  70 170 270 370 170 70   -  - 370 70
16813  80 180 280 380 180 80   -  - 380 80
16814  90 190 290 390 190 90 290 90 390 90
16815}
16816do_execsql_test joinD-568 {
16817  SELECT t1.*, t2.*, t3.*, t4.*
16818  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16819  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16820  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16821  WHERE (t2.x>0 OR t2.x IS NULL)
16822  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16823} {
16824   5 105 205 305   -  -   -  - 305  5
16825  10 110 210 310 110 10   -  - 310 10
16826  15 115 215 315   -  - 215 15 315 15
16827  20 120 220 320 120 20   -  - 320 20
16828  25 125 225 325   -  -   -  - 325 25
16829  30 130 230 330 130 30 230 30 330 30
16830  35 135 235 335   -  -   -  - 335 35
16831  40 140 240 340 140 40   -  - 340 40
16832  45 145 245 345   -  - 245 45 345 45
16833  50 150 250 350 150 50   -  - 350 50
16834  55 155 255 355   -  -   -  - 355 55
16835  60 160 260 360 160 60 260 60 360 60
16836  65 165 265 365   -  -   -  - 365 65
16837  70 170 270 370 170 70   -  - 370 70
16838  75 175 275 375   -  - 275 75 375 75
16839  80 180 280 380 180 80   -  - 380 80
16840  85 185 285 385   -  -   -  - 385 85
16841  90 190 290 390 190 90 290 90 390 90
16842  95 195 295 395   -  -   -  - 395 95
16843   -   -   -   -   -  -   -  - 300  0
16844}
16845do_execsql_test joinD-569 {
16846  SELECT t1.*, t2.*, t3.*, t4.*
16847  FROM t1 LEFT JOIN t2 ON true
16848  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16849  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16850  WHERE t1.b=t2.b AND t2.x>0
16851  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16852} {
16853  10 110 210 310 110 10   -  - 310 10
16854  20 120 220 320 120 20   -  - 320 20
16855  30 130 230 330 130 30 230 30 330 30
16856  40 140 240 340 140 40   -  - 340 40
16857  50 150 250 350 150 50   -  - 350 50
16858  60 160 260 360 160 60 260 60 360 60
16859  70 170 270 370 170 70   -  - 370 70
16860  80 180 280 380 180 80   -  - 380 80
16861  90 190 290 390 190 90 290 90 390 90
16862}
16863do_execsql_test joinD-570 {
16864  SELECT t1.*, t2.*, t3.*, t4.*
16865  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16866  FULL JOIN t3 ON t1.c=t3.c
16867  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16868  WHERE t3.y>0
16869  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16870} {
16871  15 115 215 315   -  - 215 15 315 15
16872  30 130 230 330 130 30 230 30 330 30
16873  45 145 245 345   -  - 245 45 345 45
16874  60 160 260 360 160 60 260 60 360 60
16875  75 175 275 375   -  - 275 75 375 75
16876  90 190 290 390 190 90 290 90 390 90
16877}
16878do_execsql_test joinD-571 {
16879  SELECT t1.*, t2.*, t3.*, t4.*
16880  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16881  FULL JOIN t3 ON t1.c=t3.c
16882  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
16883  WHERE t3.y>0 OR t3.y IS NULL
16884  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16885} {
16886   5 105 205 305   -  -   -  - 305  5
16887  10 110 210 310 110 10   -  - 310 10
16888  15 115 215 315   -  - 215 15 315 15
16889  20 120 220 320 120 20   -  - 320 20
16890  25 125 225 325   -  -   -  - 325 25
16891  30 130 230 330 130 30 230 30 330 30
16892  35 135 235 335   -  -   -  - 335 35
16893  40 140 240 340 140 40   -  - 340 40
16894  45 145 245 345   -  - 245 45 345 45
16895  50 150 250 350 150 50   -  - 350 50
16896  55 155 255 355   -  -   -  - 355 55
16897  60 160 260 360 160 60 260 60 360 60
16898  65 165 265 365   -  -   -  - 365 65
16899  70 170 270 370 170 70   -  - 370 70
16900  75 175 275 375   -  - 275 75 375 75
16901  80 180 280 380 180 80   -  - 380 80
16902  85 185 285 385   -  -   -  - 385 85
16903  90 190 290 390 190 90 290 90 390 90
16904  95 195 295 395   -  -   -  - 395 95
16905   -   -   -   -   -  -   -  - 300  0
16906}
16907do_execsql_test joinD-572 {
16908  SELECT t1.*, t2.*, t3.*, t4.*
16909  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16910  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16911  RIGHT JOIN t4 ON t1.d=t4.d
16912  WHERE t4.z>0
16913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16914} {
16915   5 105 205 305   -  -   -  - 305  5
16916  10 110 210 310 110 10   -  - 310 10
16917  15 115 215 315   -  - 215 15 315 15
16918  20 120 220 320 120 20   -  - 320 20
16919  25 125 225 325   -  -   -  - 325 25
16920  30 130 230 330 130 30 230 30 330 30
16921  35 135 235 335   -  -   -  - 335 35
16922  40 140 240 340 140 40   -  - 340 40
16923  45 145 245 345   -  - 245 45 345 45
16924  50 150 250 350 150 50   -  - 350 50
16925  55 155 255 355   -  -   -  - 355 55
16926  60 160 260 360 160 60 260 60 360 60
16927  65 165 265 365   -  -   -  - 365 65
16928  70 170 270 370 170 70   -  - 370 70
16929  75 175 275 375   -  - 275 75 375 75
16930  80 180 280 380 180 80   -  - 380 80
16931  85 185 285 385   -  -   -  - 385 85
16932  90 190 290 390 190 90 290 90 390 90
16933  95 195 295 395   -  -   -  - 395 95
16934}
16935do_execsql_test joinD-573 {
16936  SELECT t1.*, t2.*, t3.*, t4.*
16937  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16938  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16939  RIGHT JOIN t4 ON t1.d=t4.d
16940  WHERE t4.z IS NULL OR t4.z>0
16941  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16942} {
16943   5 105 205 305   -  -   -  - 305  5
16944  10 110 210 310 110 10   -  - 310 10
16945  15 115 215 315   -  - 215 15 315 15
16946  20 120 220 320 120 20   -  - 320 20
16947  25 125 225 325   -  -   -  - 325 25
16948  30 130 230 330 130 30 230 30 330 30
16949  35 135 235 335   -  -   -  - 335 35
16950  40 140 240 340 140 40   -  - 340 40
16951  45 145 245 345   -  - 245 45 345 45
16952  50 150 250 350 150 50   -  - 350 50
16953  55 155 255 355   -  -   -  - 355 55
16954  60 160 260 360 160 60 260 60 360 60
16955  65 165 265 365   -  -   -  - 365 65
16956  70 170 270 370 170 70   -  - 370 70
16957  75 175 275 375   -  - 275 75 375 75
16958  80 180 280 380 180 80   -  - 380 80
16959  85 185 285 385   -  -   -  - 385 85
16960  90 190 290 390 190 90 290 90 390 90
16961  95 195 295 395   -  -   -  - 395 95
16962}
16963do_execsql_test joinD-574 {
16964  SELECT t1.*, t2.*, t3.*, t4.*
16965  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16966  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
16967  RIGHT JOIN t4 ON t1.d=t4.d
16968  WHERE t2.x>0 AND t4.z>0
16969  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16970} {
16971  10 110 210 310 110 10   -  - 310 10
16972  20 120 220 320 120 20   -  - 320 20
16973  30 130 230 330 130 30 230 30 330 30
16974  40 140 240 340 140 40   -  - 340 40
16975  50 150 250 350 150 50   -  - 350 50
16976  60 160 260 360 160 60 260 60 360 60
16977  70 170 270 370 170 70   -  - 370 70
16978  80 180 280 380 180 80   -  - 380 80
16979  90 190 290 390 190 90 290 90 390 90
16980}
16981do_execsql_test joinD-575 {
16982  SELECT t1.*, t2.*, t3.*, t4.*
16983  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
16984  FULL JOIN t3 ON t1.c=t3.c
16985  RIGHT JOIN t4 ON t1.d=t4.d
16986  WHERE t4.z>0 AND t3.y>0
16987  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
16988} {
16989  15 115 215 315   -  - 215 15 315 15
16990  30 130 230 330 130 30 230 30 330 30
16991  45 145 245 345   -  - 245 45 345 45
16992  60 160 260 360 160 60 260 60 360 60
16993  75 175 275 375   -  - 275 75 375 75
16994  90 190 290 390 190 90 290 90 390 90
16995}
16996do_execsql_test joinD-576 {
16997  SELECT t1.*, t2.*, t3.*, t4.*
16998  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
16999  FULL JOIN t3 ON t1.c=t3.c
17000  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
17001  WHERE t2.x>0 AND t3.y>0
17002  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17003} {
17004  30 130 230 330 130 30 230 30 330 30
17005  60 160 260 360 160 60 260 60 360 60
17006  90 190 290 390 190 90 290 90 390 90
17007}
17008do_execsql_test joinD-577 {
17009  SELECT t1.*, t2.*, t3.*, t4.*
17010  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17011  FULL JOIN t3 ON t1.c=t3.c
17012  RIGHT JOIN t4 ON t1.d=t4.d
17013  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
17014  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17015} {
17016  30 130 230 330 130 30 230 30 330 30
17017  60 160 260 360 160 60 260 60 360 60
17018  90 190 290 390 190 90 290 90 390 90
17019}
17020do_execsql_test joinD-578 {
17021  SELECT t1.*, t2.*, t3.*, t4.*
17022  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
17023  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17024  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
17025  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17026} {
17027   5 105 205 305   -  -   -  - 305  5
17028  10 110 210 310 110 10   -  - 310 10
17029  15 115 215 315   -  - 215 15 315 15
17030  20 120 220 320 120 20   -  - 320 20
17031  25 125 225 325   -  -   -  - 325 25
17032  30 130 230 330 130 30 230 30 330 30
17033  35 135 235 335   -  -   -  - 335 35
17034  40 140 240 340 140 40   -  - 340 40
17035  45 145 245 345   -  - 245 45 345 45
17036  50 150 250 350 150 50   -  - 350 50
17037  55 155 255 355   -  -   -  - 355 55
17038  60 160 260 360 160 60 260 60 360 60
17039  65 165 265 365   -  -   -  - 365 65
17040  70 170 270 370 170 70   -  - 370 70
17041  75 175 275 375   -  - 275 75 375 75
17042  80 180 280 380 180 80   -  - 380 80
17043  85 185 285 385   -  -   -  - 385 85
17044  90 190 290 390 190 90 290 90 390 90
17045  95 195 295 395   -  -   -  - 395 95
17046   -   -   -   -   -  -   -  - 300  0
17047}
17048do_execsql_test joinD-579 {
17049  SELECT t1.*, t2.*, t3.*, t4.*
17050  FROM t1 LEFT JOIN t2 ON t2.x>0
17051  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17052  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
17053  WHERE t1.b IS NOT DISTINCT FROM t2.b
17054  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17055} {
17056  10 110 210 310 110 10   -  - 310 10
17057  20 120 220 320 120 20   -  - 320 20
17058  30 130 230 330 130 30 230 30 330 30
17059  40 140 240 340 140 40   -  - 340 40
17060  50 150 250 350 150 50   -  - 350 50
17061  60 160 260 360 160 60 260 60 360 60
17062  70 170 270 370 170 70   -  - 370 70
17063  80 180 280 380 180 80   -  - 380 80
17064  90 190 290 390 190 90 290 90 390 90
17065   -   -   -   -   -  -   -  - 300  0
17066}
17067do_execsql_test joinD-580 {
17068  SELECT t1.*, t2.*, t3.*, t4.*
17069  FROM t1 LEFT JOIN t2 ON t2.x>0
17070  FULL JOIN t3 ON t3.y>0
17071  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
17072  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
17073  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17074} {
17075  30 130 230 330 130 30 230 30 330 30
17076  60 160 260 360 160 60 260 60 360 60
17077  90 190 290 390 190 90 290 90 390 90
17078}
17079do_execsql_test joinD-581 {
17080  SELECT t1.*, t2.*, t3.*, t4.*
17081  FROM t1 LEFT JOIN t2 ON t2.x>0
17082  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17083  RIGHT JOIN t4 ON t4.z>0
17084  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
17085  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17086} {
17087  10 110 210 310 110 10   -  - 310 10
17088  20 120 220 320 120 20   -  - 320 20
17089  30 130 230 330 130 30 230 30 330 30
17090  40 140 240 340 140 40   -  - 340 40
17091  50 150 250 350 150 50   -  - 350 50
17092  60 160 260 360 160 60 260 60 360 60
17093  70 170 270 370 170 70   -  - 370 70
17094  80 180 280 380 180 80   -  - 380 80
17095  90 190 290 390 190 90 290 90 390 90
17096}
17097do_execsql_test joinD-582 {
17098  SELECT t1.*, t2.*, t3.*, t4.*
17099  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
17100  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17101  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
17102  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17103} {
17104   5 105 205 305   -  -   -  - 305  5
17105  10 110 210 310 110 10   -  - 310 10
17106  15 115 215 315   -  - 215 15 315 15
17107  20 120 220 320 120 20   -  - 320 20
17108  25 125 225 325   -  -   -  - 325 25
17109  30 130 230 330 130 30 230 30 330 30
17110  35 135 235 335   -  -   -  - 335 35
17111  40 140 240 340 140 40   -  - 340 40
17112  45 145 245 345   -  - 245 45 345 45
17113  50 150 250 350 150 50   -  - 350 50
17114  55 155 255 355   -  -   -  - 355 55
17115  60 160 260 360 160 60 260 60 360 60
17116  65 165 265 365   -  -   -  - 365 65
17117  70 170 270 370 170 70   -  - 370 70
17118  75 175 275 375   -  - 275 75 375 75
17119  80 180 280 380 180 80   -  - 380 80
17120  85 185 285 385   -  -   -  - 385 85
17121  90 190 290 390 190 90 290 90 390 90
17122  95 195 295 395   -  -   -  - 395 95
17123   -   -   -   -   -  -   -  - 300  0
17124}
17125do_execsql_test joinD-583 {
17126  SELECT t1.*, t2.*, t3.*, t4.*
17127  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17128  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17129  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17130  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17131} {
17132   0 100 200 300   -  -   -  -   -  -
17133   1 101 201 301   -  -   -  -   -  -
17134   2 102 202 302 102  2   -  -   -  -
17135   3 103 203 303   -  - 203  3   -  -
17136   4 104 204 304 104  4   -  -   -  -
17137   5 105 205 305   -  -   -  - 305  5
17138   6 106 206 306 106  6 206  6   -  -
17139   7 107 207 307   -  -   -  -   -  -
17140   8 108 208 308 108  8   -  -   -  -
17141   9 109 209 309   -  - 209  9   -  -
17142  10 110 210 310 110 10   -  - 310 10
17143  11 111 211 311   -  -   -  -   -  -
17144  12 112 212 312 112 12 212 12   -  -
17145  13 113 213 313   -  -   -  -   -  -
17146  14 114 214 314 114 14   -  -   -  -
17147  15 115 215 315   -  - 215 15 315 15
17148  16 116 216 316 116 16   -  -   -  -
17149  17 117 217 317   -  -   -  -   -  -
17150  18 118 218 318 118 18 218 18   -  -
17151  19 119 219 319   -  -   -  -   -  -
17152  20 120 220 320 120 20   -  - 320 20
17153  21 121 221 321   -  - 221 21   -  -
17154  22 122 222 322 122 22   -  -   -  -
17155  23 123 223 323   -  -   -  -   -  -
17156  24 124 224 324 124 24 224 24   -  -
17157  25 125 225 325   -  -   -  - 325 25
17158  26 126 226 326 126 26   -  -   -  -
17159  27 127 227 327   -  - 227 27   -  -
17160  28 128 228 328 128 28   -  -   -  -
17161  29 129 229 329   -  -   -  -   -  -
17162  30 130 230 330 130 30 230 30 330 30
17163  31 131 231 331   -  -   -  -   -  -
17164  32 132 232 332 132 32   -  -   -  -
17165  33 133 233 333   -  - 233 33   -  -
17166  34 134 234 334 134 34   -  -   -  -
17167  35 135 235 335   -  -   -  - 335 35
17168  36 136 236 336 136 36 236 36   -  -
17169  37 137 237 337   -  -   -  -   -  -
17170  38 138 238 338 138 38   -  -   -  -
17171  39 139 239 339   -  - 239 39   -  -
17172  40 140 240 340 140 40   -  - 340 40
17173  41 141 241 341   -  -   -  -   -  -
17174  42 142 242 342 142 42 242 42   -  -
17175  43 143 243 343   -  -   -  -   -  -
17176  44 144 244 344 144 44   -  -   -  -
17177  45 145 245 345   -  - 245 45 345 45
17178  46 146 246 346 146 46   -  -   -  -
17179  47 147 247 347   -  -   -  -   -  -
17180  48 148 248 348 148 48 248 48   -  -
17181  49 149 249 349   -  -   -  -   -  -
17182  50 150 250 350 150 50   -  - 350 50
17183  51 151 251 351   -  - 251 51   -  -
17184  52 152 252 352 152 52   -  -   -  -
17185  53 153 253 353   -  -   -  -   -  -
17186  54 154 254 354 154 54 254 54   -  -
17187  55 155 255 355   -  -   -  - 355 55
17188  56 156 256 356 156 56   -  -   -  -
17189  57 157 257 357   -  - 257 57   -  -
17190  58 158 258 358 158 58   -  -   -  -
17191  59 159 259 359   -  -   -  -   -  -
17192  60 160 260 360 160 60 260 60 360 60
17193  61 161 261 361   -  -   -  -   -  -
17194  62 162 262 362 162 62   -  -   -  -
17195  63 163 263 363   -  - 263 63   -  -
17196  64 164 264 364 164 64   -  -   -  -
17197  65 165 265 365   -  -   -  - 365 65
17198  66 166 266 366 166 66 266 66   -  -
17199  67 167 267 367   -  -   -  -   -  -
17200  68 168 268 368 168 68   -  -   -  -
17201  69 169 269 369   -  - 269 69   -  -
17202  70 170 270 370 170 70   -  - 370 70
17203  71 171 271 371   -  -   -  -   -  -
17204  72 172 272 372 172 72 272 72   -  -
17205  73 173 273 373   -  -   -  -   -  -
17206  74 174 274 374 174 74   -  -   -  -
17207  75 175 275 375   -  - 275 75 375 75
17208  76 176 276 376 176 76   -  -   -  -
17209  77 177 277 377   -  -   -  -   -  -
17210  78 178 278 378 178 78 278 78   -  -
17211  79 179 279 379   -  -   -  -   -  -
17212  80 180 280 380 180 80   -  - 380 80
17213  81 181 281 381   -  - 281 81   -  -
17214  82 182 282 382 182 82   -  -   -  -
17215  83 183 283 383   -  -   -  -   -  -
17216  84 184 284 384 184 84 284 84   -  -
17217  85 185 285 385   -  -   -  - 385 85
17218  86 186 286 386 186 86   -  -   -  -
17219  87 187 287 387   -  - 287 87   -  -
17220  88 188 288 388 188 88   -  -   -  -
17221  89 189 289 389   -  -   -  -   -  -
17222  90 190 290 390 190 90 290 90 390 90
17223  91 191 291 391   -  -   -  -   -  -
17224  92 192 292 392 192 92   -  -   -  -
17225  93 193 293 393   -  - 293 93   -  -
17226  94 194 294 394 194 94   -  -   -  -
17227  95 195 295 395   -  -   -  - 395 95
17228  96   - 296 396   -  -   -  -   -  -
17229  97 197   - 397   -  -   -  -   -  -
17230  98 198 298   -   -  -   -  -   -  -
17231  99   -   -   -   -  -   -  -   -  -
17232   -   -   -   -   -  - 200  0   -  -
17233   -   -   -   -   -  -   -  - 300  0
17234}
17235do_execsql_test joinD-584 {
17236  SELECT t1.*, t2.*, t3.*, t4.*
17237  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
17238  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17239  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17240  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17241} {
17242   0 100 200 300   -  -   -  -   -  -
17243   1 101 201 301   -  -   -  -   -  -
17244   2 102 202 302 102  2   -  -   -  -
17245   3 103 203 303   -  - 203  3   -  -
17246   4 104 204 304 104  4   -  -   -  -
17247   5 105 205 305   -  -   -  - 305  5
17248   6 106 206 306 106  6 206  6   -  -
17249   7 107 207 307   -  -   -  -   -  -
17250   8 108 208 308 108  8   -  -   -  -
17251   9 109 209 309   -  - 209  9   -  -
17252  10 110 210 310 110 10   -  - 310 10
17253  11 111 211 311   -  -   -  -   -  -
17254  12 112 212 312 112 12 212 12   -  -
17255  13 113 213 313   -  -   -  -   -  -
17256  14 114 214 314 114 14   -  -   -  -
17257  15 115 215 315   -  - 215 15 315 15
17258  16 116 216 316 116 16   -  -   -  -
17259  17 117 217 317   -  -   -  -   -  -
17260  18 118 218 318 118 18 218 18   -  -
17261  19 119 219 319   -  -   -  -   -  -
17262  20 120 220 320 120 20   -  - 320 20
17263  21 121 221 321   -  - 221 21   -  -
17264  22 122 222 322 122 22   -  -   -  -
17265  23 123 223 323   -  -   -  -   -  -
17266  24 124 224 324 124 24 224 24   -  -
17267  25 125 225 325   -  -   -  - 325 25
17268  26 126 226 326 126 26   -  -   -  -
17269  27 127 227 327   -  - 227 27   -  -
17270  28 128 228 328 128 28   -  -   -  -
17271  29 129 229 329   -  -   -  -   -  -
17272  30 130 230 330 130 30 230 30 330 30
17273  31 131 231 331   -  -   -  -   -  -
17274  32 132 232 332 132 32   -  -   -  -
17275  33 133 233 333   -  - 233 33   -  -
17276  34 134 234 334 134 34   -  -   -  -
17277  35 135 235 335   -  -   -  - 335 35
17278  36 136 236 336 136 36 236 36   -  -
17279  37 137 237 337   -  -   -  -   -  -
17280  38 138 238 338 138 38   -  -   -  -
17281  39 139 239 339   -  - 239 39   -  -
17282  40 140 240 340 140 40   -  - 340 40
17283  41 141 241 341   -  -   -  -   -  -
17284  42 142 242 342 142 42 242 42   -  -
17285  43 143 243 343   -  -   -  -   -  -
17286  44 144 244 344 144 44   -  -   -  -
17287  45 145 245 345   -  - 245 45 345 45
17288  46 146 246 346 146 46   -  -   -  -
17289  47 147 247 347   -  -   -  -   -  -
17290  48 148 248 348 148 48 248 48   -  -
17291  49 149 249 349   -  -   -  -   -  -
17292  50 150 250 350 150 50   -  - 350 50
17293  51 151 251 351   -  - 251 51   -  -
17294  52 152 252 352 152 52   -  -   -  -
17295  53 153 253 353   -  -   -  -   -  -
17296  54 154 254 354 154 54 254 54   -  -
17297  55 155 255 355   -  -   -  - 355 55
17298  56 156 256 356 156 56   -  -   -  -
17299  57 157 257 357   -  - 257 57   -  -
17300  58 158 258 358 158 58   -  -   -  -
17301  59 159 259 359   -  -   -  -   -  -
17302  60 160 260 360 160 60 260 60 360 60
17303  61 161 261 361   -  -   -  -   -  -
17304  62 162 262 362 162 62   -  -   -  -
17305  63 163 263 363   -  - 263 63   -  -
17306  64 164 264 364 164 64   -  -   -  -
17307  65 165 265 365   -  -   -  - 365 65
17308  66 166 266 366 166 66 266 66   -  -
17309  67 167 267 367   -  -   -  -   -  -
17310  68 168 268 368 168 68   -  -   -  -
17311  69 169 269 369   -  - 269 69   -  -
17312  70 170 270 370 170 70   -  - 370 70
17313  71 171 271 371   -  -   -  -   -  -
17314  72 172 272 372 172 72 272 72   -  -
17315  73 173 273 373   -  -   -  -   -  -
17316  74 174 274 374 174 74   -  -   -  -
17317  75 175 275 375   -  - 275 75 375 75
17318  76 176 276 376 176 76   -  -   -  -
17319  77 177 277 377   -  -   -  -   -  -
17320  78 178 278 378 178 78 278 78   -  -
17321  79 179 279 379   -  -   -  -   -  -
17322  80 180 280 380 180 80   -  - 380 80
17323  81 181 281 381   -  - 281 81   -  -
17324  82 182 282 382 182 82   -  -   -  -
17325  83 183 283 383   -  -   -  -   -  -
17326  84 184 284 384 184 84 284 84   -  -
17327  85 185 285 385   -  -   -  - 385 85
17328  86 186 286 386 186 86   -  -   -  -
17329  87 187 287 387   -  - 287 87   -  -
17330  88 188 288 388 188 88   -  -   -  -
17331  89 189 289 389   -  -   -  -   -  -
17332  90 190 290 390 190 90 290 90 390 90
17333  91 191 291 391   -  -   -  -   -  -
17334  92 192 292 392 192 92   -  -   -  -
17335  93 193 293 393   -  - 293 93   -  -
17336  94 194 294 394 194 94   -  -   -  -
17337  95 195 295 395   -  -   -  - 395 95
17338  96   - 296 396   -  -   -  -   -  -
17339  97 197   - 397   -  -   -  -   -  -
17340  98 198 298   -   -  -   -  -   -  -
17341  99   -   -   -   -  -   -  -   -  -
17342   -   -   -   -   -  - 200  0   -  -
17343   -   -   -   -   -  -   -  - 300  0
17344}
17345do_execsql_test joinD-585 {
17346  SELECT t1.*, t2.*, t3.*, t4.*
17347  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17348  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17349  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17350  WHERE t2.x>0
17351  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17352} {
17353   2 102 202 302 102  2   -  -   -  -
17354   4 104 204 304 104  4   -  -   -  -
17355   6 106 206 306 106  6 206  6   -  -
17356   8 108 208 308 108  8   -  -   -  -
17357  10 110 210 310 110 10   -  - 310 10
17358  12 112 212 312 112 12 212 12   -  -
17359  14 114 214 314 114 14   -  -   -  -
17360  16 116 216 316 116 16   -  -   -  -
17361  18 118 218 318 118 18 218 18   -  -
17362  20 120 220 320 120 20   -  - 320 20
17363  22 122 222 322 122 22   -  -   -  -
17364  24 124 224 324 124 24 224 24   -  -
17365  26 126 226 326 126 26   -  -   -  -
17366  28 128 228 328 128 28   -  -   -  -
17367  30 130 230 330 130 30 230 30 330 30
17368  32 132 232 332 132 32   -  -   -  -
17369  34 134 234 334 134 34   -  -   -  -
17370  36 136 236 336 136 36 236 36   -  -
17371  38 138 238 338 138 38   -  -   -  -
17372  40 140 240 340 140 40   -  - 340 40
17373  42 142 242 342 142 42 242 42   -  -
17374  44 144 244 344 144 44   -  -   -  -
17375  46 146 246 346 146 46   -  -   -  -
17376  48 148 248 348 148 48 248 48   -  -
17377  50 150 250 350 150 50   -  - 350 50
17378  52 152 252 352 152 52   -  -   -  -
17379  54 154 254 354 154 54 254 54   -  -
17380  56 156 256 356 156 56   -  -   -  -
17381  58 158 258 358 158 58   -  -   -  -
17382  60 160 260 360 160 60 260 60 360 60
17383  62 162 262 362 162 62   -  -   -  -
17384  64 164 264 364 164 64   -  -   -  -
17385  66 166 266 366 166 66 266 66   -  -
17386  68 168 268 368 168 68   -  -   -  -
17387  70 170 270 370 170 70   -  - 370 70
17388  72 172 272 372 172 72 272 72   -  -
17389  74 174 274 374 174 74   -  -   -  -
17390  76 176 276 376 176 76   -  -   -  -
17391  78 178 278 378 178 78 278 78   -  -
17392  80 180 280 380 180 80   -  - 380 80
17393  82 182 282 382 182 82   -  -   -  -
17394  84 184 284 384 184 84 284 84   -  -
17395  86 186 286 386 186 86   -  -   -  -
17396  88 188 288 388 188 88   -  -   -  -
17397  90 190 290 390 190 90 290 90 390 90
17398  92 192 292 392 192 92   -  -   -  -
17399  94 194 294 394 194 94   -  -   -  -
17400}
17401do_execsql_test joinD-586 {
17402  SELECT t1.*, t2.*, t3.*, t4.*
17403  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17404  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17405  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17406  WHERE (t2.x>0 OR t2.x IS NULL)
17407  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17408} {
17409   1 101 201 301   -  -   -  -   -  -
17410   2 102 202 302 102  2   -  -   -  -
17411   3 103 203 303   -  - 203  3   -  -
17412   4 104 204 304 104  4   -  -   -  -
17413   5 105 205 305   -  -   -  - 305  5
17414   6 106 206 306 106  6 206  6   -  -
17415   7 107 207 307   -  -   -  -   -  -
17416   8 108 208 308 108  8   -  -   -  -
17417   9 109 209 309   -  - 209  9   -  -
17418  10 110 210 310 110 10   -  - 310 10
17419  11 111 211 311   -  -   -  -   -  -
17420  12 112 212 312 112 12 212 12   -  -
17421  13 113 213 313   -  -   -  -   -  -
17422  14 114 214 314 114 14   -  -   -  -
17423  15 115 215 315   -  - 215 15 315 15
17424  16 116 216 316 116 16   -  -   -  -
17425  17 117 217 317   -  -   -  -   -  -
17426  18 118 218 318 118 18 218 18   -  -
17427  19 119 219 319   -  -   -  -   -  -
17428  20 120 220 320 120 20   -  - 320 20
17429  21 121 221 321   -  - 221 21   -  -
17430  22 122 222 322 122 22   -  -   -  -
17431  23 123 223 323   -  -   -  -   -  -
17432  24 124 224 324 124 24 224 24   -  -
17433  25 125 225 325   -  -   -  - 325 25
17434  26 126 226 326 126 26   -  -   -  -
17435  27 127 227 327   -  - 227 27   -  -
17436  28 128 228 328 128 28   -  -   -  -
17437  29 129 229 329   -  -   -  -   -  -
17438  30 130 230 330 130 30 230 30 330 30
17439  31 131 231 331   -  -   -  -   -  -
17440  32 132 232 332 132 32   -  -   -  -
17441  33 133 233 333   -  - 233 33   -  -
17442  34 134 234 334 134 34   -  -   -  -
17443  35 135 235 335   -  -   -  - 335 35
17444  36 136 236 336 136 36 236 36   -  -
17445  37 137 237 337   -  -   -  -   -  -
17446  38 138 238 338 138 38   -  -   -  -
17447  39 139 239 339   -  - 239 39   -  -
17448  40 140 240 340 140 40   -  - 340 40
17449  41 141 241 341   -  -   -  -   -  -
17450  42 142 242 342 142 42 242 42   -  -
17451  43 143 243 343   -  -   -  -   -  -
17452  44 144 244 344 144 44   -  -   -  -
17453  45 145 245 345   -  - 245 45 345 45
17454  46 146 246 346 146 46   -  -   -  -
17455  47 147 247 347   -  -   -  -   -  -
17456  48 148 248 348 148 48 248 48   -  -
17457  49 149 249 349   -  -   -  -   -  -
17458  50 150 250 350 150 50   -  - 350 50
17459  51 151 251 351   -  - 251 51   -  -
17460  52 152 252 352 152 52   -  -   -  -
17461  53 153 253 353   -  -   -  -   -  -
17462  54 154 254 354 154 54 254 54   -  -
17463  55 155 255 355   -  -   -  - 355 55
17464  56 156 256 356 156 56   -  -   -  -
17465  57 157 257 357   -  - 257 57   -  -
17466  58 158 258 358 158 58   -  -   -  -
17467  59 159 259 359   -  -   -  -   -  -
17468  60 160 260 360 160 60 260 60 360 60
17469  61 161 261 361   -  -   -  -   -  -
17470  62 162 262 362 162 62   -  -   -  -
17471  63 163 263 363   -  - 263 63   -  -
17472  64 164 264 364 164 64   -  -   -  -
17473  65 165 265 365   -  -   -  - 365 65
17474  66 166 266 366 166 66 266 66   -  -
17475  67 167 267 367   -  -   -  -   -  -
17476  68 168 268 368 168 68   -  -   -  -
17477  69 169 269 369   -  - 269 69   -  -
17478  70 170 270 370 170 70   -  - 370 70
17479  71 171 271 371   -  -   -  -   -  -
17480  72 172 272 372 172 72 272 72   -  -
17481  73 173 273 373   -  -   -  -   -  -
17482  74 174 274 374 174 74   -  -   -  -
17483  75 175 275 375   -  - 275 75 375 75
17484  76 176 276 376 176 76   -  -   -  -
17485  77 177 277 377   -  -   -  -   -  -
17486  78 178 278 378 178 78 278 78   -  -
17487  79 179 279 379   -  -   -  -   -  -
17488  80 180 280 380 180 80   -  - 380 80
17489  81 181 281 381   -  - 281 81   -  -
17490  82 182 282 382 182 82   -  -   -  -
17491  83 183 283 383   -  -   -  -   -  -
17492  84 184 284 384 184 84 284 84   -  -
17493  85 185 285 385   -  -   -  - 385 85
17494  86 186 286 386 186 86   -  -   -  -
17495  87 187 287 387   -  - 287 87   -  -
17496  88 188 288 388 188 88   -  -   -  -
17497  89 189 289 389   -  -   -  -   -  -
17498  90 190 290 390 190 90 290 90 390 90
17499  91 191 291 391   -  -   -  -   -  -
17500  92 192 292 392 192 92   -  -   -  -
17501  93 193 293 393   -  - 293 93   -  -
17502  94 194 294 394 194 94   -  -   -  -
17503  95 195 295 395   -  -   -  - 395 95
17504  96   - 296 396   -  -   -  -   -  -
17505  97 197   - 397   -  -   -  -   -  -
17506  98 198 298   -   -  -   -  -   -  -
17507  99   -   -   -   -  -   -  -   -  -
17508   -   -   -   -   -  - 200  0   -  -
17509   -   -   -   -   -  -   -  - 300  0
17510}
17511do_execsql_test joinD-587 {
17512  SELECT t1.*, t2.*, t3.*, t4.*
17513  FROM t1 LEFT JOIN t2 ON true
17514  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17515  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17516  WHERE t1.b=t2.b AND t2.x>0
17517  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17518} {
17519   2 102 202 302 102  2   -  -   -  -
17520   4 104 204 304 104  4   -  -   -  -
17521   6 106 206 306 106  6 206  6   -  -
17522   8 108 208 308 108  8   -  -   -  -
17523  10 110 210 310 110 10   -  - 310 10
17524  12 112 212 312 112 12 212 12   -  -
17525  14 114 214 314 114 14   -  -   -  -
17526  16 116 216 316 116 16   -  -   -  -
17527  18 118 218 318 118 18 218 18   -  -
17528  20 120 220 320 120 20   -  - 320 20
17529  22 122 222 322 122 22   -  -   -  -
17530  24 124 224 324 124 24 224 24   -  -
17531  26 126 226 326 126 26   -  -   -  -
17532  28 128 228 328 128 28   -  -   -  -
17533  30 130 230 330 130 30 230 30 330 30
17534  32 132 232 332 132 32   -  -   -  -
17535  34 134 234 334 134 34   -  -   -  -
17536  36 136 236 336 136 36 236 36   -  -
17537  38 138 238 338 138 38   -  -   -  -
17538  40 140 240 340 140 40   -  - 340 40
17539  42 142 242 342 142 42 242 42   -  -
17540  44 144 244 344 144 44   -  -   -  -
17541  46 146 246 346 146 46   -  -   -  -
17542  48 148 248 348 148 48 248 48   -  -
17543  50 150 250 350 150 50   -  - 350 50
17544  52 152 252 352 152 52   -  -   -  -
17545  54 154 254 354 154 54 254 54   -  -
17546  56 156 256 356 156 56   -  -   -  -
17547  58 158 258 358 158 58   -  -   -  -
17548  60 160 260 360 160 60 260 60 360 60
17549  62 162 262 362 162 62   -  -   -  -
17550  64 164 264 364 164 64   -  -   -  -
17551  66 166 266 366 166 66 266 66   -  -
17552  68 168 268 368 168 68   -  -   -  -
17553  70 170 270 370 170 70   -  - 370 70
17554  72 172 272 372 172 72 272 72   -  -
17555  74 174 274 374 174 74   -  -   -  -
17556  76 176 276 376 176 76   -  -   -  -
17557  78 178 278 378 178 78 278 78   -  -
17558  80 180 280 380 180 80   -  - 380 80
17559  82 182 282 382 182 82   -  -   -  -
17560  84 184 284 384 184 84 284 84   -  -
17561  86 186 286 386 186 86   -  -   -  -
17562  88 188 288 388 188 88   -  -   -  -
17563  90 190 290 390 190 90 290 90 390 90
17564  92 192 292 392 192 92   -  -   -  -
17565  94 194 294 394 194 94   -  -   -  -
17566}
17567do_execsql_test joinD-588 {
17568  SELECT t1.*, t2.*, t3.*, t4.*
17569  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17570  FULL JOIN t3 ON t1.c=t3.c
17571  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17572  WHERE t3.y>0
17573  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17574} {
17575   3 103 203 303   -  - 203  3   -  -
17576   6 106 206 306 106  6 206  6   -  -
17577   9 109 209 309   -  - 209  9   -  -
17578  12 112 212 312 112 12 212 12   -  -
17579  15 115 215 315   -  - 215 15 315 15
17580  18 118 218 318 118 18 218 18   -  -
17581  21 121 221 321   -  - 221 21   -  -
17582  24 124 224 324 124 24 224 24   -  -
17583  27 127 227 327   -  - 227 27   -  -
17584  30 130 230 330 130 30 230 30 330 30
17585  33 133 233 333   -  - 233 33   -  -
17586  36 136 236 336 136 36 236 36   -  -
17587  39 139 239 339   -  - 239 39   -  -
17588  42 142 242 342 142 42 242 42   -  -
17589  45 145 245 345   -  - 245 45 345 45
17590  48 148 248 348 148 48 248 48   -  -
17591  51 151 251 351   -  - 251 51   -  -
17592  54 154 254 354 154 54 254 54   -  -
17593  57 157 257 357   -  - 257 57   -  -
17594  60 160 260 360 160 60 260 60 360 60
17595  63 163 263 363   -  - 263 63   -  -
17596  66 166 266 366 166 66 266 66   -  -
17597  69 169 269 369   -  - 269 69   -  -
17598  72 172 272 372 172 72 272 72   -  -
17599  75 175 275 375   -  - 275 75 375 75
17600  78 178 278 378 178 78 278 78   -  -
17601  81 181 281 381   -  - 281 81   -  -
17602  84 184 284 384 184 84 284 84   -  -
17603  87 187 287 387   -  - 287 87   -  -
17604  90 190 290 390 190 90 290 90 390 90
17605  93 193 293 393   -  - 293 93   -  -
17606}
17607do_execsql_test joinD-589 {
17608  SELECT t1.*, t2.*, t3.*, t4.*
17609  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17610  FULL JOIN t3 ON t1.c=t3.c
17611  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17612  WHERE t3.y>0 OR t3.y IS NULL
17613  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17614} {
17615   1 101 201 301   -  -   -  -   -  -
17616   2 102 202 302 102  2   -  -   -  -
17617   3 103 203 303   -  - 203  3   -  -
17618   4 104 204 304 104  4   -  -   -  -
17619   5 105 205 305   -  -   -  - 305  5
17620   6 106 206 306 106  6 206  6   -  -
17621   7 107 207 307   -  -   -  -   -  -
17622   8 108 208 308 108  8   -  -   -  -
17623   9 109 209 309   -  - 209  9   -  -
17624  10 110 210 310 110 10   -  - 310 10
17625  11 111 211 311   -  -   -  -   -  -
17626  12 112 212 312 112 12 212 12   -  -
17627  13 113 213 313   -  -   -  -   -  -
17628  14 114 214 314 114 14   -  -   -  -
17629  15 115 215 315   -  - 215 15 315 15
17630  16 116 216 316 116 16   -  -   -  -
17631  17 117 217 317   -  -   -  -   -  -
17632  18 118 218 318 118 18 218 18   -  -
17633  19 119 219 319   -  -   -  -   -  -
17634  20 120 220 320 120 20   -  - 320 20
17635  21 121 221 321   -  - 221 21   -  -
17636  22 122 222 322 122 22   -  -   -  -
17637  23 123 223 323   -  -   -  -   -  -
17638  24 124 224 324 124 24 224 24   -  -
17639  25 125 225 325   -  -   -  - 325 25
17640  26 126 226 326 126 26   -  -   -  -
17641  27 127 227 327   -  - 227 27   -  -
17642  28 128 228 328 128 28   -  -   -  -
17643  29 129 229 329   -  -   -  -   -  -
17644  30 130 230 330 130 30 230 30 330 30
17645  31 131 231 331   -  -   -  -   -  -
17646  32 132 232 332 132 32   -  -   -  -
17647  33 133 233 333   -  - 233 33   -  -
17648  34 134 234 334 134 34   -  -   -  -
17649  35 135 235 335   -  -   -  - 335 35
17650  36 136 236 336 136 36 236 36   -  -
17651  37 137 237 337   -  -   -  -   -  -
17652  38 138 238 338 138 38   -  -   -  -
17653  39 139 239 339   -  - 239 39   -  -
17654  40 140 240 340 140 40   -  - 340 40
17655  41 141 241 341   -  -   -  -   -  -
17656  42 142 242 342 142 42 242 42   -  -
17657  43 143 243 343   -  -   -  -   -  -
17658  44 144 244 344 144 44   -  -   -  -
17659  45 145 245 345   -  - 245 45 345 45
17660  46 146 246 346 146 46   -  -   -  -
17661  47 147 247 347   -  -   -  -   -  -
17662  48 148 248 348 148 48 248 48   -  -
17663  49 149 249 349   -  -   -  -   -  -
17664  50 150 250 350 150 50   -  - 350 50
17665  51 151 251 351   -  - 251 51   -  -
17666  52 152 252 352 152 52   -  -   -  -
17667  53 153 253 353   -  -   -  -   -  -
17668  54 154 254 354 154 54 254 54   -  -
17669  55 155 255 355   -  -   -  - 355 55
17670  56 156 256 356 156 56   -  -   -  -
17671  57 157 257 357   -  - 257 57   -  -
17672  58 158 258 358 158 58   -  -   -  -
17673  59 159 259 359   -  -   -  -   -  -
17674  60 160 260 360 160 60 260 60 360 60
17675  61 161 261 361   -  -   -  -   -  -
17676  62 162 262 362 162 62   -  -   -  -
17677  63 163 263 363   -  - 263 63   -  -
17678  64 164 264 364 164 64   -  -   -  -
17679  65 165 265 365   -  -   -  - 365 65
17680  66 166 266 366 166 66 266 66   -  -
17681  67 167 267 367   -  -   -  -   -  -
17682  68 168 268 368 168 68   -  -   -  -
17683  69 169 269 369   -  - 269 69   -  -
17684  70 170 270 370 170 70   -  - 370 70
17685  71 171 271 371   -  -   -  -   -  -
17686  72 172 272 372 172 72 272 72   -  -
17687  73 173 273 373   -  -   -  -   -  -
17688  74 174 274 374 174 74   -  -   -  -
17689  75 175 275 375   -  - 275 75 375 75
17690  76 176 276 376 176 76   -  -   -  -
17691  77 177 277 377   -  -   -  -   -  -
17692  78 178 278 378 178 78 278 78   -  -
17693  79 179 279 379   -  -   -  -   -  -
17694  80 180 280 380 180 80   -  - 380 80
17695  81 181 281 381   -  - 281 81   -  -
17696  82 182 282 382 182 82   -  -   -  -
17697  83 183 283 383   -  -   -  -   -  -
17698  84 184 284 384 184 84 284 84   -  -
17699  85 185 285 385   -  -   -  - 385 85
17700  86 186 286 386 186 86   -  -   -  -
17701  87 187 287 387   -  - 287 87   -  -
17702  88 188 288 388 188 88   -  -   -  -
17703  89 189 289 389   -  -   -  -   -  -
17704  90 190 290 390 190 90 290 90 390 90
17705  91 191 291 391   -  -   -  -   -  -
17706  92 192 292 392 192 92   -  -   -  -
17707  93 193 293 393   -  - 293 93   -  -
17708  94 194 294 394 194 94   -  -   -  -
17709  95 195 295 395   -  -   -  - 395 95
17710  96   - 296 396   -  -   -  -   -  -
17711  97 197   - 397   -  -   -  -   -  -
17712  98 198 298   -   -  -   -  -   -  -
17713  99   -   -   -   -  -   -  -   -  -
17714   -   -   -   -   -  -   -  - 300  0
17715}
17716do_execsql_test joinD-590 {
17717  SELECT t1.*, t2.*, t3.*, t4.*
17718  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17719  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17720  FULL JOIN t4 ON t1.d=t4.d
17721  WHERE t4.z>0
17722  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17723} {
17724   5 105 205 305   -  -   -  - 305  5
17725  10 110 210 310 110 10   -  - 310 10
17726  15 115 215 315   -  - 215 15 315 15
17727  20 120 220 320 120 20   -  - 320 20
17728  25 125 225 325   -  -   -  - 325 25
17729  30 130 230 330 130 30 230 30 330 30
17730  35 135 235 335   -  -   -  - 335 35
17731  40 140 240 340 140 40   -  - 340 40
17732  45 145 245 345   -  - 245 45 345 45
17733  50 150 250 350 150 50   -  - 350 50
17734  55 155 255 355   -  -   -  - 355 55
17735  60 160 260 360 160 60 260 60 360 60
17736  65 165 265 365   -  -   -  - 365 65
17737  70 170 270 370 170 70   -  - 370 70
17738  75 175 275 375   -  - 275 75 375 75
17739  80 180 280 380 180 80   -  - 380 80
17740  85 185 285 385   -  -   -  - 385 85
17741  90 190 290 390 190 90 290 90 390 90
17742  95 195 295 395   -  -   -  - 395 95
17743}
17744do_execsql_test joinD-591 {
17745  SELECT t1.*, t2.*, t3.*, t4.*
17746  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17747  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17748  FULL JOIN t4 ON t1.d=t4.d
17749  WHERE t4.z IS NULL OR t4.z>0
17750  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17751} {
17752   1 101 201 301   -  -   -  -   -  -
17753   2 102 202 302 102  2   -  -   -  -
17754   3 103 203 303   -  - 203  3   -  -
17755   4 104 204 304 104  4   -  -   -  -
17756   5 105 205 305   -  -   -  - 305  5
17757   6 106 206 306 106  6 206  6   -  -
17758   7 107 207 307   -  -   -  -   -  -
17759   8 108 208 308 108  8   -  -   -  -
17760   9 109 209 309   -  - 209  9   -  -
17761  10 110 210 310 110 10   -  - 310 10
17762  11 111 211 311   -  -   -  -   -  -
17763  12 112 212 312 112 12 212 12   -  -
17764  13 113 213 313   -  -   -  -   -  -
17765  14 114 214 314 114 14   -  -   -  -
17766  15 115 215 315   -  - 215 15 315 15
17767  16 116 216 316 116 16   -  -   -  -
17768  17 117 217 317   -  -   -  -   -  -
17769  18 118 218 318 118 18 218 18   -  -
17770  19 119 219 319   -  -   -  -   -  -
17771  20 120 220 320 120 20   -  - 320 20
17772  21 121 221 321   -  - 221 21   -  -
17773  22 122 222 322 122 22   -  -   -  -
17774  23 123 223 323   -  -   -  -   -  -
17775  24 124 224 324 124 24 224 24   -  -
17776  25 125 225 325   -  -   -  - 325 25
17777  26 126 226 326 126 26   -  -   -  -
17778  27 127 227 327   -  - 227 27   -  -
17779  28 128 228 328 128 28   -  -   -  -
17780  29 129 229 329   -  -   -  -   -  -
17781  30 130 230 330 130 30 230 30 330 30
17782  31 131 231 331   -  -   -  -   -  -
17783  32 132 232 332 132 32   -  -   -  -
17784  33 133 233 333   -  - 233 33   -  -
17785  34 134 234 334 134 34   -  -   -  -
17786  35 135 235 335   -  -   -  - 335 35
17787  36 136 236 336 136 36 236 36   -  -
17788  37 137 237 337   -  -   -  -   -  -
17789  38 138 238 338 138 38   -  -   -  -
17790  39 139 239 339   -  - 239 39   -  -
17791  40 140 240 340 140 40   -  - 340 40
17792  41 141 241 341   -  -   -  -   -  -
17793  42 142 242 342 142 42 242 42   -  -
17794  43 143 243 343   -  -   -  -   -  -
17795  44 144 244 344 144 44   -  -   -  -
17796  45 145 245 345   -  - 245 45 345 45
17797  46 146 246 346 146 46   -  -   -  -
17798  47 147 247 347   -  -   -  -   -  -
17799  48 148 248 348 148 48 248 48   -  -
17800  49 149 249 349   -  -   -  -   -  -
17801  50 150 250 350 150 50   -  - 350 50
17802  51 151 251 351   -  - 251 51   -  -
17803  52 152 252 352 152 52   -  -   -  -
17804  53 153 253 353   -  -   -  -   -  -
17805  54 154 254 354 154 54 254 54   -  -
17806  55 155 255 355   -  -   -  - 355 55
17807  56 156 256 356 156 56   -  -   -  -
17808  57 157 257 357   -  - 257 57   -  -
17809  58 158 258 358 158 58   -  -   -  -
17810  59 159 259 359   -  -   -  -   -  -
17811  60 160 260 360 160 60 260 60 360 60
17812  61 161 261 361   -  -   -  -   -  -
17813  62 162 262 362 162 62   -  -   -  -
17814  63 163 263 363   -  - 263 63   -  -
17815  64 164 264 364 164 64   -  -   -  -
17816  65 165 265 365   -  -   -  - 365 65
17817  66 166 266 366 166 66 266 66   -  -
17818  67 167 267 367   -  -   -  -   -  -
17819  68 168 268 368 168 68   -  -   -  -
17820  69 169 269 369   -  - 269 69   -  -
17821  70 170 270 370 170 70   -  - 370 70
17822  71 171 271 371   -  -   -  -   -  -
17823  72 172 272 372 172 72 272 72   -  -
17824  73 173 273 373   -  -   -  -   -  -
17825  74 174 274 374 174 74   -  -   -  -
17826  75 175 275 375   -  - 275 75 375 75
17827  76 176 276 376 176 76   -  -   -  -
17828  77 177 277 377   -  -   -  -   -  -
17829  78 178 278 378 178 78 278 78   -  -
17830  79 179 279 379   -  -   -  -   -  -
17831  80 180 280 380 180 80   -  - 380 80
17832  81 181 281 381   -  - 281 81   -  -
17833  82 182 282 382 182 82   -  -   -  -
17834  83 183 283 383   -  -   -  -   -  -
17835  84 184 284 384 184 84 284 84   -  -
17836  85 185 285 385   -  -   -  - 385 85
17837  86 186 286 386 186 86   -  -   -  -
17838  87 187 287 387   -  - 287 87   -  -
17839  88 188 288 388 188 88   -  -   -  -
17840  89 189 289 389   -  -   -  -   -  -
17841  90 190 290 390 190 90 290 90 390 90
17842  91 191 291 391   -  -   -  -   -  -
17843  92 192 292 392 192 92   -  -   -  -
17844  93 193 293 393   -  - 293 93   -  -
17845  94 194 294 394 194 94   -  -   -  -
17846  95 195 295 395   -  -   -  - 395 95
17847  96   - 296 396   -  -   -  -   -  -
17848  97 197   - 397   -  -   -  -   -  -
17849  98 198 298   -   -  -   -  -   -  -
17850  99   -   -   -   -  -   -  -   -  -
17851   -   -   -   -   -  - 200  0   -  -
17852}
17853do_execsql_test joinD-592 {
17854  SELECT t1.*, t2.*, t3.*, t4.*
17855  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17856  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
17857  FULL JOIN t4 ON t1.d=t4.d
17858  WHERE t2.x>0 AND t4.z>0
17859  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17860} {
17861  10 110 210 310 110 10   -  - 310 10
17862  20 120 220 320 120 20   -  - 320 20
17863  30 130 230 330 130 30 230 30 330 30
17864  40 140 240 340 140 40   -  - 340 40
17865  50 150 250 350 150 50   -  - 350 50
17866  60 160 260 360 160 60 260 60 360 60
17867  70 170 270 370 170 70   -  - 370 70
17868  80 180 280 380 180 80   -  - 380 80
17869  90 190 290 390 190 90 290 90 390 90
17870}
17871do_execsql_test joinD-593 {
17872  SELECT t1.*, t2.*, t3.*, t4.*
17873  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
17874  FULL JOIN t3 ON t1.c=t3.c
17875  FULL JOIN t4 ON t1.d=t4.d
17876  WHERE t4.z>0 AND t3.y>0
17877  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17878} {
17879  15 115 215 315   -  - 215 15 315 15
17880  30 130 230 330 130 30 230 30 330 30
17881  45 145 245 345   -  - 245 45 345 45
17882  60 160 260 360 160 60 260 60 360 60
17883  75 175 275 375   -  - 275 75 375 75
17884  90 190 290 390 190 90 290 90 390 90
17885}
17886do_execsql_test joinD-594 {
17887  SELECT t1.*, t2.*, t3.*, t4.*
17888  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17889  FULL JOIN t3 ON t1.c=t3.c
17890  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
17891  WHERE t2.x>0 AND t3.y>0
17892  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17893} {
17894   6 106 206 306 106  6 206  6   -  -
17895  12 112 212 312 112 12 212 12   -  -
17896  18 118 218 318 118 18 218 18   -  -
17897  24 124 224 324 124 24 224 24   -  -
17898  30 130 230 330 130 30 230 30 330 30
17899  36 136 236 336 136 36 236 36   -  -
17900  42 142 242 342 142 42 242 42   -  -
17901  48 148 248 348 148 48 248 48   -  -
17902  54 154 254 354 154 54 254 54   -  -
17903  60 160 260 360 160 60 260 60 360 60
17904  66 166 266 366 166 66 266 66   -  -
17905  72 172 272 372 172 72 272 72   -  -
17906  78 178 278 378 178 78 278 78   -  -
17907  84 184 284 384 184 84 284 84   -  -
17908  90 190 290 390 190 90 290 90 390 90
17909}
17910do_execsql_test joinD-595 {
17911  SELECT t1.*, t2.*, t3.*, t4.*
17912  FROM t1 LEFT JOIN t2 ON t1.b=t2.b
17913  FULL JOIN t3 ON t1.c=t3.c
17914  FULL JOIN t4 ON t1.d=t4.d
17915  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
17916  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17917} {
17918  30 130 230 330 130 30 230 30 330 30
17919  60 160 260 360 160 60 260 60 360 60
17920  90 190 290 390 190 90 290 90 390 90
17921}
17922do_execsql_test joinD-596 {
17923  SELECT t1.*, t2.*, t3.*, t4.*
17924  FROM t1 LEFT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
17925  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
17926  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
17927  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
17928} {
17929   0 100 200 300   -  -   -  -   -  -
17930   1 101 201 301   -  -   -  -   -  -
17931   2 102 202 302 102  2   -  -   -  -
17932   3 103 203 303   -  - 203  3   -  -
17933   4 104 204 304 104  4   -  -   -  -
17934   5 105 205 305   -  -   -  - 305  5
17935   6 106 206 306 106  6 206  6   -  -
17936   7 107 207 307   -  -   -  -   -  -
17937   8 108 208 308 108  8   -  -   -  -
17938   9 109 209 309   -  - 209  9   -  -
17939  10 110 210 310 110 10   -  - 310 10
17940  11 111 211 311   -  -   -  -   -  -
17941  12 112 212 312 112 12 212 12   -  -
17942  13 113 213 313   -  -   -  -   -  -
17943  14 114 214 314 114 14   -  -   -  -
17944  15 115 215 315   -  - 215 15 315 15
17945  16 116 216 316 116 16   -  -   -  -
17946  17 117 217 317   -  -   -  -   -  -
17947  18 118 218 318 118 18 218 18   -  -
17948  19 119 219 319   -  -   -  -   -  -
17949  20 120 220 320 120 20   -  - 320 20
17950  21 121 221 321   -  - 221 21   -  -
17951  22 122 222 322 122 22   -  -   -  -
17952  23 123 223 323   -  -   -  -   -  -
17953  24 124 224 324 124 24 224 24   -  -
17954  25 125 225 325   -  -   -  - 325 25
17955  26 126 226 326 126 26   -  -   -  -
17956  27 127 227 327   -  - 227 27   -  -
17957  28 128 228 328 128 28   -  -   -  -
17958  29 129 229 329   -  -   -  -   -  -
17959  30 130 230 330 130 30 230 30 330 30
17960  31 131 231 331   -  -   -  -   -  -
17961  32 132 232 332 132 32   -  -   -  -
17962  33 133 233 333   -  - 233 33   -  -
17963  34 134 234 334 134 34   -  -   -  -
17964  35 135 235 335   -  -   -  - 335 35
17965  36 136 236 336 136 36 236 36   -  -
17966  37 137 237 337   -  -   -  -   -  -
17967  38 138 238 338 138 38   -  -   -  -
17968  39 139 239 339   -  - 239 39   -  -
17969  40 140 240 340 140 40   -  - 340 40
17970  41 141 241 341   -  -   -  -   -  -
17971  42 142 242 342 142 42 242 42   -  -
17972  43 143 243 343   -  -   -  -   -  -
17973  44 144 244 344 144 44   -  -   -  -
17974  45 145 245 345   -  - 245 45 345 45
17975  46 146 246 346 146 46   -  -   -  -
17976  47 147 247 347   -  -   -  -   -  -
17977  48 148 248 348 148 48 248 48   -  -
17978  49 149 249 349   -  -   -  -   -  -
17979  50 150 250 350 150 50   -  - 350 50
17980  51 151 251 351   -  - 251 51   -  -
17981  52 152 252 352 152 52   -  -   -  -
17982  53 153 253 353   -  -   -  -   -  -
17983  54 154 254 354 154 54 254 54   -  -
17984  55 155 255 355   -  -   -  - 355 55
17985  56 156 256 356 156 56   -  -   -  -
17986  57 157 257 357   -  - 257 57   -  -
17987  58 158 258 358 158 58   -  -   -  -
17988  59 159 259 359   -  -   -  -   -  -
17989  60 160 260 360 160 60 260 60 360 60
17990  61 161 261 361   -  -   -  -   -  -
17991  62 162 262 362 162 62   -  -   -  -
17992  63 163 263 363   -  - 263 63   -  -
17993  64 164 264 364 164 64   -  -   -  -
17994  65 165 265 365   -  -   -  - 365 65
17995  66 166 266 366 166 66 266 66   -  -
17996  67 167 267 367   -  -   -  -   -  -
17997  68 168 268 368 168 68   -  -   -  -
17998  69 169 269 369   -  - 269 69   -  -
17999  70 170 270 370 170 70   -  - 370 70
18000  71 171 271 371   -  -   -  -   -  -
18001  72 172 272 372 172 72 272 72   -  -
18002  73 173 273 373   -  -   -  -   -  -
18003  74 174 274 374 174 74   -  -   -  -
18004  75 175 275 375   -  - 275 75 375 75
18005  76 176 276 376 176 76   -  -   -  -
18006  77 177 277 377   -  -   -  -   -  -
18007  78 178 278 378 178 78 278 78   -  -
18008  79 179 279 379   -  -   -  -   -  -
18009  80 180 280 380 180 80   -  - 380 80
18010  81 181 281 381   -  - 281 81   -  -
18011  82 182 282 382 182 82   -  -   -  -
18012  83 183 283 383   -  -   -  -   -  -
18013  84 184 284 384 184 84 284 84   -  -
18014  85 185 285 385   -  -   -  - 385 85
18015  86 186 286 386 186 86   -  -   -  -
18016  87 187 287 387   -  - 287 87   -  -
18017  88 188 288 388 188 88   -  -   -  -
18018  89 189 289 389   -  -   -  -   -  -
18019  90 190 290 390 190 90 290 90 390 90
18020  91 191 291 391   -  -   -  -   -  -
18021  92 192 292 392 192 92   -  -   -  -
18022  93 193 293 393   -  - 293 93   -  -
18023  94 194 294 394 194 94   -  -   -  -
18024  95 195 295 395   -  -   -  - 395 95
18025  96   - 296 396   -  -   -  -   -  -
18026  97 197   - 397   -  -   -  -   -  -
18027  98 198 298   -   -  -   -  -   -  -
18028  99   -   -   -   -  -   -  -   -  -
18029   -   -   -   -   -  - 200  0   -  -
18030   -   -   -   -   -  -   -  - 300  0
18031}
18032do_execsql_test joinD-597 {
18033  SELECT t1.*, t2.*, t3.*, t4.*
18034  FROM t1 LEFT JOIN t2 ON t2.x>0
18035  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
18036  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
18037  WHERE t1.b IS NOT DISTINCT FROM t2.b
18038  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18039} {
18040   2 102 202 302 102  2   -  -   -  -
18041   4 104 204 304 104  4   -  -   -  -
18042   6 106 206 306 106  6 206  6   -  -
18043   8 108 208 308 108  8   -  -   -  -
18044  10 110 210 310 110 10   -  - 310 10
18045  12 112 212 312 112 12 212 12   -  -
18046  14 114 214 314 114 14   -  -   -  -
18047  16 116 216 316 116 16   -  -   -  -
18048  18 118 218 318 118 18 218 18   -  -
18049  20 120 220 320 120 20   -  - 320 20
18050  22 122 222 322 122 22   -  -   -  -
18051  24 124 224 324 124 24 224 24   -  -
18052  26 126 226 326 126 26   -  -   -  -
18053  28 128 228 328 128 28   -  -   -  -
18054  30 130 230 330 130 30 230 30 330 30
18055  32 132 232 332 132 32   -  -   -  -
18056  34 134 234 334 134 34   -  -   -  -
18057  36 136 236 336 136 36 236 36   -  -
18058  38 138 238 338 138 38   -  -   -  -
18059  40 140 240 340 140 40   -  - 340 40
18060  42 142 242 342 142 42 242 42   -  -
18061  44 144 244 344 144 44   -  -   -  -
18062  46 146 246 346 146 46   -  -   -  -
18063  48 148 248 348 148 48 248 48   -  -
18064  50 150 250 350 150 50   -  - 350 50
18065  52 152 252 352 152 52   -  -   -  -
18066  54 154 254 354 154 54 254 54   -  -
18067  56 156 256 356 156 56   -  -   -  -
18068  58 158 258 358 158 58   -  -   -  -
18069  60 160 260 360 160 60 260 60 360 60
18070  62 162 262 362 162 62   -  -   -  -
18071  64 164 264 364 164 64   -  -   -  -
18072  66 166 266 366 166 66 266 66   -  -
18073  68 168 268 368 168 68   -  -   -  -
18074  70 170 270 370 170 70   -  - 370 70
18075  72 172 272 372 172 72 272 72   -  -
18076  74 174 274 374 174 74   -  -   -  -
18077  76 176 276 376 176 76   -  -   -  -
18078  78 178 278 378 178 78 278 78   -  -
18079  80 180 280 380 180 80   -  - 380 80
18080  82 182 282 382 182 82   -  -   -  -
18081  84 184 284 384 184 84 284 84   -  -
18082  86 186 286 386 186 86   -  -   -  -
18083  88 188 288 388 188 88   -  -   -  -
18084  90 190 290 390 190 90 290 90 390 90
18085  92 192 292 392 192 92   -  -   -  -
18086  94 194 294 394 194 94   -  -   -  -
18087   -   -   -   -   -  - 200  0   -  -
18088   -   -   -   -   -  -   -  - 300  0
18089}
18090do_execsql_test joinD-598 {
18091  SELECT t1.*, t2.*, t3.*, t4.*
18092  FROM t1 LEFT JOIN t2 ON t2.x>0
18093  FULL JOIN t3 ON t3.y>0
18094  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
18095  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
18096  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18097} {
18098   6 106 206 306 106  6 206  6   -  -
18099  12 112 212 312 112 12 212 12   -  -
18100  18 118 218 318 118 18 218 18   -  -
18101  24 124 224 324 124 24 224 24   -  -
18102  30 130 230 330 130 30 230 30 330 30
18103  36 136 236 336 136 36 236 36   -  -
18104  42 142 242 342 142 42 242 42   -  -
18105  48 148 248 348 148 48 248 48   -  -
18106  54 154 254 354 154 54 254 54   -  -
18107  60 160 260 360 160 60 260 60 360 60
18108  66 166 266 366 166 66 266 66   -  -
18109  72 172 272 372 172 72 272 72   -  -
18110  78 178 278 378 178 78 278 78   -  -
18111  84 184 284 384 184 84 284 84   -  -
18112  90 190 290 390 190 90 290 90 390 90
18113}
18114do_execsql_test joinD-599 {
18115  SELECT t1.*, t2.*, t3.*, t4.*
18116  FROM t1 LEFT JOIN t2 ON t2.x>0
18117  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
18118  FULL JOIN t4 ON t4.z>0
18119  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
18120  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18121} {
18122  10 110 210 310 110 10   -  - 310 10
18123  20 120 220 320 120 20   -  - 320 20
18124  30 130 230 330 130 30 230 30 330 30
18125  40 140 240 340 140 40   -  - 340 40
18126  50 150 250 350 150 50   -  - 350 50
18127  60 160 260 360 160 60 260 60 360 60
18128  70 170 270 370 170 70   -  - 370 70
18129  80 180 280 380 180 80   -  - 380 80
18130  90 190 290 390 190 90 290 90 390 90
18131}
18132do_execsql_test joinD-600 {
18133  SELECT t1.*, t2.*, t3.*, t4.*
18134  FROM t1 LEFT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
18135  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
18136  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
18137  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18138} {
18139   0 100 200 300   -  -   -  -   -  -
18140   1 101 201 301   -  -   -  -   -  -
18141   2 102 202 302 102  2   -  -   -  -
18142   3 103 203 303   -  - 203  3   -  -
18143   4 104 204 304 104  4   -  -   -  -
18144   5 105 205 305   -  -   -  - 305  5
18145   6 106 206 306 106  6 206  6   -  -
18146   7 107 207 307   -  -   -  -   -  -
18147   8 108 208 308 108  8   -  -   -  -
18148   9 109 209 309   -  - 209  9   -  -
18149  10 110 210 310 110 10   -  - 310 10
18150  11 111 211 311   -  -   -  -   -  -
18151  12 112 212 312 112 12 212 12   -  -
18152  13 113 213 313   -  -   -  -   -  -
18153  14 114 214 314 114 14   -  -   -  -
18154  15 115 215 315   -  - 215 15 315 15
18155  16 116 216 316 116 16   -  -   -  -
18156  17 117 217 317   -  -   -  -   -  -
18157  18 118 218 318 118 18 218 18   -  -
18158  19 119 219 319   -  -   -  -   -  -
18159  20 120 220 320 120 20   -  - 320 20
18160  21 121 221 321   -  - 221 21   -  -
18161  22 122 222 322 122 22   -  -   -  -
18162  23 123 223 323   -  -   -  -   -  -
18163  24 124 224 324 124 24 224 24   -  -
18164  25 125 225 325   -  -   -  - 325 25
18165  26 126 226 326 126 26   -  -   -  -
18166  27 127 227 327   -  - 227 27   -  -
18167  28 128 228 328 128 28   -  -   -  -
18168  29 129 229 329   -  -   -  -   -  -
18169  30 130 230 330 130 30 230 30 330 30
18170  31 131 231 331   -  -   -  -   -  -
18171  32 132 232 332 132 32   -  -   -  -
18172  33 133 233 333   -  - 233 33   -  -
18173  34 134 234 334 134 34   -  -   -  -
18174  35 135 235 335   -  -   -  - 335 35
18175  36 136 236 336 136 36 236 36   -  -
18176  37 137 237 337   -  -   -  -   -  -
18177  38 138 238 338 138 38   -  -   -  -
18178  39 139 239 339   -  - 239 39   -  -
18179  40 140 240 340 140 40   -  - 340 40
18180  41 141 241 341   -  -   -  -   -  -
18181  42 142 242 342 142 42 242 42   -  -
18182  43 143 243 343   -  -   -  -   -  -
18183  44 144 244 344 144 44   -  -   -  -
18184  45 145 245 345   -  - 245 45 345 45
18185  46 146 246 346 146 46   -  -   -  -
18186  47 147 247 347   -  -   -  -   -  -
18187  48 148 248 348 148 48 248 48   -  -
18188  49 149 249 349   -  -   -  -   -  -
18189  50 150 250 350 150 50   -  - 350 50
18190  51 151 251 351   -  - 251 51   -  -
18191  52 152 252 352 152 52   -  -   -  -
18192  53 153 253 353   -  -   -  -   -  -
18193  54 154 254 354 154 54 254 54   -  -
18194  55 155 255 355   -  -   -  - 355 55
18195  56 156 256 356 156 56   -  -   -  -
18196  57 157 257 357   -  - 257 57   -  -
18197  58 158 258 358 158 58   -  -   -  -
18198  59 159 259 359   -  -   -  -   -  -
18199  60 160 260 360 160 60 260 60 360 60
18200  61 161 261 361   -  -   -  -   -  -
18201  62 162 262 362 162 62   -  -   -  -
18202  63 163 263 363   -  - 263 63   -  -
18203  64 164 264 364 164 64   -  -   -  -
18204  65 165 265 365   -  -   -  - 365 65
18205  66 166 266 366 166 66 266 66   -  -
18206  67 167 267 367   -  -   -  -   -  -
18207  68 168 268 368 168 68   -  -   -  -
18208  69 169 269 369   -  - 269 69   -  -
18209  70 170 270 370 170 70   -  - 370 70
18210  71 171 271 371   -  -   -  -   -  -
18211  72 172 272 372 172 72 272 72   -  -
18212  73 173 273 373   -  -   -  -   -  -
18213  74 174 274 374 174 74   -  -   -  -
18214  75 175 275 375   -  - 275 75 375 75
18215  76 176 276 376 176 76   -  -   -  -
18216  77 177 277 377   -  -   -  -   -  -
18217  78 178 278 378 178 78 278 78   -  -
18218  79 179 279 379   -  -   -  -   -  -
18219  80 180 280 380 180 80   -  - 380 80
18220  81 181 281 381   -  - 281 81   -  -
18221  82 182 282 382 182 82   -  -   -  -
18222  83 183 283 383   -  -   -  -   -  -
18223  84 184 284 384 184 84 284 84   -  -
18224  85 185 285 385   -  -   -  - 385 85
18225  86 186 286 386 186 86   -  -   -  -
18226  87 187 287 387   -  - 287 87   -  -
18227  88 188 288 388 188 88   -  -   -  -
18228  89 189 289 389   -  -   -  -   -  -
18229  90 190 290 390 190 90 290 90 390 90
18230  91 191 291 391   -  -   -  -   -  -
18231  92 192 292 392 192 92   -  -   -  -
18232  93 193 293 393   -  - 293 93   -  -
18233  94 194 294 394 194 94   -  -   -  -
18234  95 195 295 395   -  -   -  - 395 95
18235  96   - 296 396   -  -   -  -   -  -
18236  97 197   - 397   -  -   -  -   -  -
18237  98 198 298   -   -  -   -  -   -  -
18238  99   -   -   -   -  -   -  -   -  -
18239   -   -   -   -   -  - 200  0   -  -
18240   -   -   -   -   -  -   -  - 300  0
18241}
18242do_execsql_test joinD-601 {
18243  SELECT t1.*, t2.*, t3.*, t4.*
18244  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18245  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18246  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18247  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18248} {
18249  30 130 230 330 130 30 230 30 330 30
18250  60 160 260 360 160 60 260 60 360 60
18251  90 190 290 390 190 90 290 90 390 90
18252}
18253do_execsql_test joinD-602 {
18254  SELECT t1.*, t2.*, t3.*, t4.*
18255  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18256  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18257  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18258  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18259} {
18260  30 130 230 330 130 30 230 30 330 30
18261  60 160 260 360 160 60 260 60 360 60
18262  90 190 290 390 190 90 290 90 390 90
18263}
18264do_execsql_test joinD-603 {
18265  SELECT t1.*, t2.*, t3.*, t4.*
18266  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18267  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18268  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18269  WHERE t2.x>0
18270  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18271} {
18272  30 130 230 330 130 30 230 30 330 30
18273  60 160 260 360 160 60 260 60 360 60
18274  90 190 290 390 190 90 290 90 390 90
18275}
18276do_execsql_test joinD-604 {
18277  SELECT t1.*, t2.*, t3.*, t4.*
18278  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18279  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18280  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18281  WHERE (t2.x>0 OR t2.x IS NULL)
18282  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18283} {
18284  30 130 230 330 130 30 230 30 330 30
18285  60 160 260 360 160 60 260 60 360 60
18286  90 190 290 390 190 90 290 90 390 90
18287}
18288do_execsql_test joinD-605 {
18289  SELECT t1.*, t2.*, t3.*, t4.*
18290  FROM t1 RIGHT JOIN t2 ON true
18291  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18292  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18293  WHERE t1.b=t2.b AND t2.x>0
18294  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18295} {
18296  30 130 230 330 130 30 230 30 330 30
18297  60 160 260 360 160 60 260 60 360 60
18298  90 190 290 390 190 90 290 90 390 90
18299}
18300do_execsql_test joinD-606 {
18301  SELECT t1.*, t2.*, t3.*, t4.*
18302  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18303  INNER JOIN t3 ON t1.c=t3.c
18304  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18305  WHERE t3.y>0
18306  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18307} {
18308  30 130 230 330 130 30 230 30 330 30
18309  60 160 260 360 160 60 260 60 360 60
18310  90 190 290 390 190 90 290 90 390 90
18311}
18312do_execsql_test joinD-607 {
18313  SELECT t1.*, t2.*, t3.*, t4.*
18314  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18315  INNER JOIN t3 ON t1.c=t3.c
18316  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18317  WHERE t3.y>0 OR t3.y IS NULL
18318  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18319} {
18320  30 130 230 330 130 30 230 30 330 30
18321  60 160 260 360 160 60 260 60 360 60
18322  90 190 290 390 190 90 290 90 390 90
18323}
18324do_execsql_test joinD-608 {
18325  SELECT t1.*, t2.*, t3.*, t4.*
18326  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18327  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18328  INNER JOIN t4 ON t1.d=t4.d
18329  WHERE t4.z>0
18330  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18331} {
18332  30 130 230 330 130 30 230 30 330 30
18333  60 160 260 360 160 60 260 60 360 60
18334  90 190 290 390 190 90 290 90 390 90
18335}
18336do_execsql_test joinD-609 {
18337  SELECT t1.*, t2.*, t3.*, t4.*
18338  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18339  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18340  INNER JOIN t4 ON t1.d=t4.d
18341  WHERE t4.z IS NULL OR t4.z>0
18342  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18343} {
18344  30 130 230 330 130 30 230 30 330 30
18345  60 160 260 360 160 60 260 60 360 60
18346  90 190 290 390 190 90 290 90 390 90
18347}
18348do_execsql_test joinD-610 {
18349  SELECT t1.*, t2.*, t3.*, t4.*
18350  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18351  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18352  INNER JOIN t4 ON t1.d=t4.d
18353  WHERE t2.x>0 AND t4.z>0
18354  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18355} {
18356  30 130 230 330 130 30 230 30 330 30
18357  60 160 260 360 160 60 260 60 360 60
18358  90 190 290 390 190 90 290 90 390 90
18359}
18360do_execsql_test joinD-611 {
18361  SELECT t1.*, t2.*, t3.*, t4.*
18362  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18363  INNER JOIN t3 ON t1.c=t3.c
18364  INNER JOIN t4 ON t1.d=t4.d
18365  WHERE t4.z>0 AND t3.y>0
18366  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18367} {
18368  30 130 230 330 130 30 230 30 330 30
18369  60 160 260 360 160 60 260 60 360 60
18370  90 190 290 390 190 90 290 90 390 90
18371}
18372do_execsql_test joinD-612 {
18373  SELECT t1.*, t2.*, t3.*, t4.*
18374  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18375  INNER JOIN t3 ON t1.c=t3.c
18376  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18377  WHERE t2.x>0 AND t3.y>0
18378  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18379} {
18380  30 130 230 330 130 30 230 30 330 30
18381  60 160 260 360 160 60 260 60 360 60
18382  90 190 290 390 190 90 290 90 390 90
18383}
18384do_execsql_test joinD-613 {
18385  SELECT t1.*, t2.*, t3.*, t4.*
18386  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18387  INNER JOIN t3 ON t1.c=t3.c
18388  INNER JOIN t4 ON t1.d=t4.d
18389  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
18390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18391} {
18392  30 130 230 330 130 30 230 30 330 30
18393  60 160 260 360 160 60 260 60 360 60
18394  90 190 290 390 190 90 290 90 390 90
18395}
18396do_execsql_test joinD-614 {
18397  SELECT t1.*, t2.*, t3.*, t4.*
18398  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18399  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18400  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18401  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18402} {
18403  30 130 230 330 130 30 230 30 330 30
18404  60 160 260 360 160 60 260 60 360 60
18405  90 190 290 390 190 90 290 90 390 90
18406}
18407do_execsql_test joinD-615 {
18408  SELECT t1.*, t2.*, t3.*, t4.*
18409  FROM t1 RIGHT JOIN t2 ON t2.x>0
18410  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18411  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18412  WHERE t1.b IS NOT DISTINCT FROM t2.b
18413  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18414} {
18415  30 130 230 330 130 30 230 30 330 30
18416  60 160 260 360 160 60 260 60 360 60
18417  90 190 290 390 190 90 290 90 390 90
18418}
18419do_execsql_test joinD-616 {
18420  SELECT t1.*, t2.*, t3.*, t4.*
18421  FROM t1 RIGHT JOIN t2 ON t2.x>0
18422  INNER JOIN t3 ON t3.y>0
18423  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18424  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
18425  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18426} {
18427  30 130 230 330 130 30 230 30 330 30
18428  60 160 260 360 160 60 260 60 360 60
18429  90 190 290 390 190 90 290 90 390 90
18430}
18431do_execsql_test joinD-617 {
18432  SELECT t1.*, t2.*, t3.*, t4.*
18433  FROM t1 RIGHT JOIN t2 ON t2.x>0
18434  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18435  INNER JOIN t4 ON t4.z>0
18436  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
18437  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18438} {
18439  30 130 230 330 130 30 230 30 330 30
18440  60 160 260 360 160 60 260 60 360 60
18441  90 190 290 390 190 90 290 90 390 90
18442}
18443do_execsql_test joinD-618 {
18444  SELECT t1.*, t2.*, t3.*, t4.*
18445  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
18446  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18447  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18448  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18449} {
18450  30 130 230 330 130 30 230 30 330 30
18451  60 160 260 360 160 60 260 60 360 60
18452  90 190 290 390 190 90 290 90 390 90
18453}
18454do_execsql_test joinD-619 {
18455  SELECT t1.*, t2.*, t3.*, t4.*
18456  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18457  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
18458  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
18459  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18460} {
18461  30 130 230 330 130 30 230 30 330 30
18462  60 160 260 360 160 60 260 60 360 60
18463  90 190 290 390 190 90 290 90 390 90
18464}
18465do_execsql_test joinD-620 {
18466  SELECT t1.*, t2.*, t3.*, t4.*
18467  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18468  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18469  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18470  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18471} {
18472   6 106 206 306 106  6 206  6   -  -
18473  12 112 212 312 112 12 212 12   -  -
18474  18 118 218 318 118 18 218 18   -  -
18475  24 124 224 324 124 24 224 24   -  -
18476  30 130 230 330 130 30 230 30 330 30
18477  36 136 236 336 136 36 236 36   -  -
18478  42 142 242 342 142 42 242 42   -  -
18479  48 148 248 348 148 48 248 48   -  -
18480  54 154 254 354 154 54 254 54   -  -
18481  60 160 260 360 160 60 260 60 360 60
18482  66 166 266 366 166 66 266 66   -  -
18483  72 172 272 372 172 72 272 72   -  -
18484  78 178 278 378 178 78 278 78   -  -
18485  84 184 284 384 184 84 284 84   -  -
18486  90 190 290 390 190 90 290 90 390 90
18487}
18488do_execsql_test joinD-621 {
18489  SELECT t1.*, t2.*, t3.*, t4.*
18490  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18491  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18492  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18493  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18494} {
18495   6 106 206 306 106  6 206  6   -  -
18496  12 112 212 312 112 12 212 12   -  -
18497  18 118 218 318 118 18 218 18   -  -
18498  24 124 224 324 124 24 224 24   -  -
18499  30 130 230 330 130 30 230 30 330 30
18500  36 136 236 336 136 36 236 36   -  -
18501  42 142 242 342 142 42 242 42   -  -
18502  48 148 248 348 148 48 248 48   -  -
18503  54 154 254 354 154 54 254 54   -  -
18504  60 160 260 360 160 60 260 60 360 60
18505  66 166 266 366 166 66 266 66   -  -
18506  72 172 272 372 172 72 272 72   -  -
18507  78 178 278 378 178 78 278 78   -  -
18508  84 184 284 384 184 84 284 84   -  -
18509  90 190 290 390 190 90 290 90 390 90
18510}
18511do_execsql_test joinD-622 {
18512  SELECT t1.*, t2.*, t3.*, t4.*
18513  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18514  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18515  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18516  WHERE t2.x>0
18517  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18518} {
18519   6 106 206 306 106  6 206  6   -  -
18520  12 112 212 312 112 12 212 12   -  -
18521  18 118 218 318 118 18 218 18   -  -
18522  24 124 224 324 124 24 224 24   -  -
18523  30 130 230 330 130 30 230 30 330 30
18524  36 136 236 336 136 36 236 36   -  -
18525  42 142 242 342 142 42 242 42   -  -
18526  48 148 248 348 148 48 248 48   -  -
18527  54 154 254 354 154 54 254 54   -  -
18528  60 160 260 360 160 60 260 60 360 60
18529  66 166 266 366 166 66 266 66   -  -
18530  72 172 272 372 172 72 272 72   -  -
18531  78 178 278 378 178 78 278 78   -  -
18532  84 184 284 384 184 84 284 84   -  -
18533  90 190 290 390 190 90 290 90 390 90
18534}
18535do_execsql_test joinD-623 {
18536  SELECT t1.*, t2.*, t3.*, t4.*
18537  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18538  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18539  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18540  WHERE (t2.x>0 OR t2.x IS NULL)
18541  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18542} {
18543   6 106 206 306 106  6 206  6   -  -
18544  12 112 212 312 112 12 212 12   -  -
18545  18 118 218 318 118 18 218 18   -  -
18546  24 124 224 324 124 24 224 24   -  -
18547  30 130 230 330 130 30 230 30 330 30
18548  36 136 236 336 136 36 236 36   -  -
18549  42 142 242 342 142 42 242 42   -  -
18550  48 148 248 348 148 48 248 48   -  -
18551  54 154 254 354 154 54 254 54   -  -
18552  60 160 260 360 160 60 260 60 360 60
18553  66 166 266 366 166 66 266 66   -  -
18554  72 172 272 372 172 72 272 72   -  -
18555  78 178 278 378 178 78 278 78   -  -
18556  84 184 284 384 184 84 284 84   -  -
18557  90 190 290 390 190 90 290 90 390 90
18558}
18559do_execsql_test joinD-624 {
18560  SELECT t1.*, t2.*, t3.*, t4.*
18561  FROM t1 RIGHT JOIN t2 ON true
18562  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18563  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18564  WHERE t1.b=t2.b AND t2.x>0
18565  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18566} {
18567   6 106 206 306 106  6 206  6   -  -
18568  12 112 212 312 112 12 212 12   -  -
18569  18 118 218 318 118 18 218 18   -  -
18570  24 124 224 324 124 24 224 24   -  -
18571  30 130 230 330 130 30 230 30 330 30
18572  36 136 236 336 136 36 236 36   -  -
18573  42 142 242 342 142 42 242 42   -  -
18574  48 148 248 348 148 48 248 48   -  -
18575  54 154 254 354 154 54 254 54   -  -
18576  60 160 260 360 160 60 260 60 360 60
18577  66 166 266 366 166 66 266 66   -  -
18578  72 172 272 372 172 72 272 72   -  -
18579  78 178 278 378 178 78 278 78   -  -
18580  84 184 284 384 184 84 284 84   -  -
18581  90 190 290 390 190 90 290 90 390 90
18582}
18583do_execsql_test joinD-625 {
18584  SELECT t1.*, t2.*, t3.*, t4.*
18585  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18586  INNER JOIN t3 ON t1.c=t3.c
18587  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18588  WHERE t3.y>0
18589  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18590} {
18591   6 106 206 306 106  6 206  6   -  -
18592  12 112 212 312 112 12 212 12   -  -
18593  18 118 218 318 118 18 218 18   -  -
18594  24 124 224 324 124 24 224 24   -  -
18595  30 130 230 330 130 30 230 30 330 30
18596  36 136 236 336 136 36 236 36   -  -
18597  42 142 242 342 142 42 242 42   -  -
18598  48 148 248 348 148 48 248 48   -  -
18599  54 154 254 354 154 54 254 54   -  -
18600  60 160 260 360 160 60 260 60 360 60
18601  66 166 266 366 166 66 266 66   -  -
18602  72 172 272 372 172 72 272 72   -  -
18603  78 178 278 378 178 78 278 78   -  -
18604  84 184 284 384 184 84 284 84   -  -
18605  90 190 290 390 190 90 290 90 390 90
18606}
18607do_execsql_test joinD-626 {
18608  SELECT t1.*, t2.*, t3.*, t4.*
18609  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18610  INNER JOIN t3 ON t1.c=t3.c
18611  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18612  WHERE t3.y>0 OR t3.y IS NULL
18613  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18614} {
18615   6 106 206 306 106  6 206  6   -  -
18616  12 112 212 312 112 12 212 12   -  -
18617  18 118 218 318 118 18 218 18   -  -
18618  24 124 224 324 124 24 224 24   -  -
18619  30 130 230 330 130 30 230 30 330 30
18620  36 136 236 336 136 36 236 36   -  -
18621  42 142 242 342 142 42 242 42   -  -
18622  48 148 248 348 148 48 248 48   -  -
18623  54 154 254 354 154 54 254 54   -  -
18624  60 160 260 360 160 60 260 60 360 60
18625  66 166 266 366 166 66 266 66   -  -
18626  72 172 272 372 172 72 272 72   -  -
18627  78 178 278 378 178 78 278 78   -  -
18628  84 184 284 384 184 84 284 84   -  -
18629  90 190 290 390 190 90 290 90 390 90
18630}
18631do_execsql_test joinD-627 {
18632  SELECT t1.*, t2.*, t3.*, t4.*
18633  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18634  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18635  LEFT JOIN t4 ON t1.d=t4.d
18636  WHERE t4.z>0
18637  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18638} {
18639  30 130 230 330 130 30 230 30 330 30
18640  60 160 260 360 160 60 260 60 360 60
18641  90 190 290 390 190 90 290 90 390 90
18642}
18643do_execsql_test joinD-628 {
18644  SELECT t1.*, t2.*, t3.*, t4.*
18645  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18646  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18647  LEFT JOIN t4 ON t1.d=t4.d
18648  WHERE t4.z IS NULL OR t4.z>0
18649  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18650} {
18651   6 106 206 306 106  6 206  6   -  -
18652  12 112 212 312 112 12 212 12   -  -
18653  18 118 218 318 118 18 218 18   -  -
18654  24 124 224 324 124 24 224 24   -  -
18655  30 130 230 330 130 30 230 30 330 30
18656  36 136 236 336 136 36 236 36   -  -
18657  42 142 242 342 142 42 242 42   -  -
18658  48 148 248 348 148 48 248 48   -  -
18659  54 154 254 354 154 54 254 54   -  -
18660  60 160 260 360 160 60 260 60 360 60
18661  66 166 266 366 166 66 266 66   -  -
18662  72 172 272 372 172 72 272 72   -  -
18663  78 178 278 378 178 78 278 78   -  -
18664  84 184 284 384 184 84 284 84   -  -
18665  90 190 290 390 190 90 290 90 390 90
18666}
18667do_execsql_test joinD-629 {
18668  SELECT t1.*, t2.*, t3.*, t4.*
18669  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18670  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18671  LEFT JOIN t4 ON t1.d=t4.d
18672  WHERE t2.x>0 AND t4.z>0
18673  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18674} {
18675  30 130 230 330 130 30 230 30 330 30
18676  60 160 260 360 160 60 260 60 360 60
18677  90 190 290 390 190 90 290 90 390 90
18678}
18679do_execsql_test joinD-630 {
18680  SELECT t1.*, t2.*, t3.*, t4.*
18681  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18682  INNER JOIN t3 ON t1.c=t3.c
18683  LEFT JOIN t4 ON t1.d=t4.d
18684  WHERE t4.z>0 AND t3.y>0
18685  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18686} {
18687  30 130 230 330 130 30 230 30 330 30
18688  60 160 260 360 160 60 260 60 360 60
18689  90 190 290 390 190 90 290 90 390 90
18690}
18691do_execsql_test joinD-631 {
18692  SELECT t1.*, t2.*, t3.*, t4.*
18693  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18694  INNER JOIN t3 ON t1.c=t3.c
18695  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18696  WHERE t2.x>0 AND t3.y>0
18697  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18698} {
18699   6 106 206 306 106  6 206  6   -  -
18700  12 112 212 312 112 12 212 12   -  -
18701  18 118 218 318 118 18 218 18   -  -
18702  24 124 224 324 124 24 224 24   -  -
18703  30 130 230 330 130 30 230 30 330 30
18704  36 136 236 336 136 36 236 36   -  -
18705  42 142 242 342 142 42 242 42   -  -
18706  48 148 248 348 148 48 248 48   -  -
18707  54 154 254 354 154 54 254 54   -  -
18708  60 160 260 360 160 60 260 60 360 60
18709  66 166 266 366 166 66 266 66   -  -
18710  72 172 272 372 172 72 272 72   -  -
18711  78 178 278 378 178 78 278 78   -  -
18712  84 184 284 384 184 84 284 84   -  -
18713  90 190 290 390 190 90 290 90 390 90
18714}
18715do_execsql_test joinD-632 {
18716  SELECT t1.*, t2.*, t3.*, t4.*
18717  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18718  INNER JOIN t3 ON t1.c=t3.c
18719  LEFT JOIN t4 ON t1.d=t4.d
18720  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
18721  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18722} {
18723  30 130 230 330 130 30 230 30 330 30
18724  60 160 260 360 160 60 260 60 360 60
18725  90 190 290 390 190 90 290 90 390 90
18726}
18727do_execsql_test joinD-633 {
18728  SELECT t1.*, t2.*, t3.*, t4.*
18729  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18730  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18731  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18732  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18733} {
18734   6 106 206 306 106  6 206  6   -  -
18735  12 112 212 312 112 12 212 12   -  -
18736  18 118 218 318 118 18 218 18   -  -
18737  24 124 224 324 124 24 224 24   -  -
18738  30 130 230 330 130 30 230 30 330 30
18739  36 136 236 336 136 36 236 36   -  -
18740  42 142 242 342 142 42 242 42   -  -
18741  48 148 248 348 148 48 248 48   -  -
18742  54 154 254 354 154 54 254 54   -  -
18743  60 160 260 360 160 60 260 60 360 60
18744  66 166 266 366 166 66 266 66   -  -
18745  72 172 272 372 172 72 272 72   -  -
18746  78 178 278 378 178 78 278 78   -  -
18747  84 184 284 384 184 84 284 84   -  -
18748  90 190 290 390 190 90 290 90 390 90
18749}
18750do_execsql_test joinD-634 {
18751  SELECT t1.*, t2.*, t3.*, t4.*
18752  FROM t1 RIGHT JOIN t2 ON t2.x>0
18753  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18754  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18755  WHERE t1.b IS NOT DISTINCT FROM t2.b
18756  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18757} {
18758   6 106 206 306 106  6 206  6   -  -
18759  12 112 212 312 112 12 212 12   -  -
18760  18 118 218 318 118 18 218 18   -  -
18761  24 124 224 324 124 24 224 24   -  -
18762  30 130 230 330 130 30 230 30 330 30
18763  36 136 236 336 136 36 236 36   -  -
18764  42 142 242 342 142 42 242 42   -  -
18765  48 148 248 348 148 48 248 48   -  -
18766  54 154 254 354 154 54 254 54   -  -
18767  60 160 260 360 160 60 260 60 360 60
18768  66 166 266 366 166 66 266 66   -  -
18769  72 172 272 372 172 72 272 72   -  -
18770  78 178 278 378 178 78 278 78   -  -
18771  84 184 284 384 184 84 284 84   -  -
18772  90 190 290 390 190 90 290 90 390 90
18773}
18774do_execsql_test joinD-635 {
18775  SELECT t1.*, t2.*, t3.*, t4.*
18776  FROM t1 RIGHT JOIN t2 ON t2.x>0
18777  INNER JOIN t3 ON t3.y>0
18778  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
18779  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
18780  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18781} {
18782   6 106 206 306 106  6 206  6   -  -
18783  12 112 212 312 112 12 212 12   -  -
18784  18 118 218 318 118 18 218 18   -  -
18785  24 124 224 324 124 24 224 24   -  -
18786  30 130 230 330 130 30 230 30 330 30
18787  36 136 236 336 136 36 236 36   -  -
18788  42 142 242 342 142 42 242 42   -  -
18789  48 148 248 348 148 48 248 48   -  -
18790  54 154 254 354 154 54 254 54   -  -
18791  60 160 260 360 160 60 260 60 360 60
18792  66 166 266 366 166 66 266 66   -  -
18793  72 172 272 372 172 72 272 72   -  -
18794  78 178 278 378 178 78 278 78   -  -
18795  84 184 284 384 184 84 284 84   -  -
18796  90 190 290 390 190 90 290 90 390 90
18797}
18798do_execsql_test joinD-636 {
18799  SELECT t1.*, t2.*, t3.*, t4.*
18800  FROM t1 RIGHT JOIN t2 ON t2.x>0
18801  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
18802  LEFT JOIN t4 ON t4.z>0
18803  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
18804  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18805} {
18806  30 130 230 330 130 30 230 30 330 30
18807  60 160 260 360 160 60 260 60 360 60
18808  90 190 290 390 190 90 290 90 390 90
18809}
18810do_execsql_test joinD-637 {
18811  SELECT t1.*, t2.*, t3.*, t4.*
18812  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
18813  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18814  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18815  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18816} {
18817   6 106 206 306 106  6 206  6   -  -
18818  12 112 212 312 112 12 212 12   -  -
18819  18 118 218 318 118 18 218 18   -  -
18820  24 124 224 324 124 24 224 24   -  -
18821  30 130 230 330 130 30 230 30 330 30
18822  36 136 236 336 136 36 236 36   -  -
18823  42 142 242 342 142 42 242 42   -  -
18824  48 148 248 348 148 48 248 48   -  -
18825  54 154 254 354 154 54 254 54   -  -
18826  60 160 260 360 160 60 260 60 360 60
18827  66 166 266 366 166 66 266 66   -  -
18828  72 172 272 372 172 72 272 72   -  -
18829  78 178 278 378 178 78 278 78   -  -
18830  84 184 284 384 184 84 284 84   -  -
18831  90 190 290 390 190 90 290 90 390 90
18832}
18833do_execsql_test joinD-638 {
18834  SELECT t1.*, t2.*, t3.*, t4.*
18835  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18836  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
18837  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
18838  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18839} {
18840   6 106 206 306 106  6 206  6   -  -
18841  12 112 212 312 112 12 212 12   -  -
18842  18 118 218 318 118 18 218 18   -  -
18843  24 124 224 324 124 24 224 24   -  -
18844  30 130 230 330 130 30 230 30 330 30
18845  36 136 236 336 136 36 236 36   -  -
18846  42 142 242 342 142 42 242 42   -  -
18847  48 148 248 348 148 48 248 48   -  -
18848  54 154 254 354 154 54 254 54   -  -
18849  60 160 260 360 160 60 260 60 360 60
18850  66 166 266 366 166 66 266 66   -  -
18851  72 172 272 372 172 72 272 72   -  -
18852  78 178 278 378 178 78 278 78   -  -
18853  84 184 284 384 184 84 284 84   -  -
18854  90 190 290 390 190 90 290 90 390 90
18855}
18856do_execsql_test joinD-639 {
18857  SELECT t1.*, t2.*, t3.*, t4.*
18858  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18859  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18860  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18861  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18862} {
18863  30 130 230 330 130 30 230 30 330 30
18864  60 160 260 360 160 60 260 60 360 60
18865  90 190 290 390 190 90 290 90 390 90
18866   -   -   -   -   -  -   -  - 300  0
18867   -   -   -   -   -  -   -  - 305  5
18868   -   -   -   -   -  -   -  - 310 10
18869   -   -   -   -   -  -   -  - 315 15
18870   -   -   -   -   -  -   -  - 320 20
18871   -   -   -   -   -  -   -  - 325 25
18872   -   -   -   -   -  -   -  - 335 35
18873   -   -   -   -   -  -   -  - 340 40
18874   -   -   -   -   -  -   -  - 345 45
18875   -   -   -   -   -  -   -  - 350 50
18876   -   -   -   -   -  -   -  - 355 55
18877   -   -   -   -   -  -   -  - 365 65
18878   -   -   -   -   -  -   -  - 370 70
18879   -   -   -   -   -  -   -  - 375 75
18880   -   -   -   -   -  -   -  - 380 80
18881   -   -   -   -   -  -   -  - 385 85
18882   -   -   -   -   -  -   -  - 395 95
18883}
18884do_execsql_test joinD-640 {
18885  SELECT t1.*, t2.*, t3.*, t4.*
18886  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
18887  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18888  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18889  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18890} {
18891  30 130 230 330 130 30 230 30 330 30
18892  60 160 260 360 160 60 260 60 360 60
18893  90 190 290 390 190 90 290 90 390 90
18894   -   -   -   -   -  -   -  - 300  0
18895   -   -   -   -   -  -   -  - 305  5
18896   -   -   -   -   -  -   -  - 310 10
18897   -   -   -   -   -  -   -  - 315 15
18898   -   -   -   -   -  -   -  - 320 20
18899   -   -   -   -   -  -   -  - 325 25
18900   -   -   -   -   -  -   -  - 335 35
18901   -   -   -   -   -  -   -  - 340 40
18902   -   -   -   -   -  -   -  - 345 45
18903   -   -   -   -   -  -   -  - 350 50
18904   -   -   -   -   -  -   -  - 355 55
18905   -   -   -   -   -  -   -  - 365 65
18906   -   -   -   -   -  -   -  - 370 70
18907   -   -   -   -   -  -   -  - 375 75
18908   -   -   -   -   -  -   -  - 380 80
18909   -   -   -   -   -  -   -  - 385 85
18910   -   -   -   -   -  -   -  - 395 95
18911}
18912do_execsql_test joinD-641 {
18913  SELECT t1.*, t2.*, t3.*, t4.*
18914  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18915  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18916  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18917  WHERE t2.x>0
18918  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18919} {
18920  30 130 230 330 130 30 230 30 330 30
18921  60 160 260 360 160 60 260 60 360 60
18922  90 190 290 390 190 90 290 90 390 90
18923}
18924do_execsql_test joinD-642 {
18925  SELECT t1.*, t2.*, t3.*, t4.*
18926  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
18927  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18928  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18929  WHERE (t2.x>0 OR t2.x IS NULL)
18930  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18931} {
18932  30 130 230 330 130 30 230 30 330 30
18933  60 160 260 360 160 60 260 60 360 60
18934  90 190 290 390 190 90 290 90 390 90
18935   -   -   -   -   -  -   -  - 300  0
18936   -   -   -   -   -  -   -  - 305  5
18937   -   -   -   -   -  -   -  - 310 10
18938   -   -   -   -   -  -   -  - 315 15
18939   -   -   -   -   -  -   -  - 320 20
18940   -   -   -   -   -  -   -  - 325 25
18941   -   -   -   -   -  -   -  - 335 35
18942   -   -   -   -   -  -   -  - 340 40
18943   -   -   -   -   -  -   -  - 345 45
18944   -   -   -   -   -  -   -  - 350 50
18945   -   -   -   -   -  -   -  - 355 55
18946   -   -   -   -   -  -   -  - 365 65
18947   -   -   -   -   -  -   -  - 370 70
18948   -   -   -   -   -  -   -  - 375 75
18949   -   -   -   -   -  -   -  - 380 80
18950   -   -   -   -   -  -   -  - 385 85
18951   -   -   -   -   -  -   -  - 395 95
18952}
18953do_execsql_test joinD-643 {
18954  SELECT t1.*, t2.*, t3.*, t4.*
18955  FROM t1 RIGHT JOIN t2 ON true
18956  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
18957  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18958  WHERE t1.b=t2.b AND t2.x>0
18959  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18960} {
18961  30 130 230 330 130 30 230 30 330 30
18962  60 160 260 360 160 60 260 60 360 60
18963  90 190 290 390 190 90 290 90 390 90
18964}
18965do_execsql_test joinD-644 {
18966  SELECT t1.*, t2.*, t3.*, t4.*
18967  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18968  INNER JOIN t3 ON t1.c=t3.c
18969  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18970  WHERE t3.y>0
18971  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18972} {
18973  30 130 230 330 130 30 230 30 330 30
18974  60 160 260 360 160 60 260 60 360 60
18975  90 190 290 390 190 90 290 90 390 90
18976}
18977do_execsql_test joinD-645 {
18978  SELECT t1.*, t2.*, t3.*, t4.*
18979  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
18980  INNER JOIN t3 ON t1.c=t3.c
18981  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
18982  WHERE t3.y>0 OR t3.y IS NULL
18983  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
18984} {
18985  30 130 230 330 130 30 230 30 330 30
18986  60 160 260 360 160 60 260 60 360 60
18987  90 190 290 390 190 90 290 90 390 90
18988   -   -   -   -   -  -   -  - 300  0
18989   -   -   -   -   -  -   -  - 305  5
18990   -   -   -   -   -  -   -  - 310 10
18991   -   -   -   -   -  -   -  - 315 15
18992   -   -   -   -   -  -   -  - 320 20
18993   -   -   -   -   -  -   -  - 325 25
18994   -   -   -   -   -  -   -  - 335 35
18995   -   -   -   -   -  -   -  - 340 40
18996   -   -   -   -   -  -   -  - 345 45
18997   -   -   -   -   -  -   -  - 350 50
18998   -   -   -   -   -  -   -  - 355 55
18999   -   -   -   -   -  -   -  - 365 65
19000   -   -   -   -   -  -   -  - 370 70
19001   -   -   -   -   -  -   -  - 375 75
19002   -   -   -   -   -  -   -  - 380 80
19003   -   -   -   -   -  -   -  - 385 85
19004   -   -   -   -   -  -   -  - 395 95
19005}
19006do_execsql_test joinD-646 {
19007  SELECT t1.*, t2.*, t3.*, t4.*
19008  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19009  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19010  RIGHT JOIN t4 ON t1.d=t4.d
19011  WHERE t4.z>0
19012  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19013} {
19014  30 130 230 330 130 30 230 30 330 30
19015  60 160 260 360 160 60 260 60 360 60
19016  90 190 290 390 190 90 290 90 390 90
19017   -   -   -   -   -  -   -  - 305  5
19018   -   -   -   -   -  -   -  - 310 10
19019   -   -   -   -   -  -   -  - 315 15
19020   -   -   -   -   -  -   -  - 320 20
19021   -   -   -   -   -  -   -  - 325 25
19022   -   -   -   -   -  -   -  - 335 35
19023   -   -   -   -   -  -   -  - 340 40
19024   -   -   -   -   -  -   -  - 345 45
19025   -   -   -   -   -  -   -  - 350 50
19026   -   -   -   -   -  -   -  - 355 55
19027   -   -   -   -   -  -   -  - 365 65
19028   -   -   -   -   -  -   -  - 370 70
19029   -   -   -   -   -  -   -  - 375 75
19030   -   -   -   -   -  -   -  - 380 80
19031   -   -   -   -   -  -   -  - 385 85
19032   -   -   -   -   -  -   -  - 395 95
19033}
19034do_execsql_test joinD-647 {
19035  SELECT t1.*, t2.*, t3.*, t4.*
19036  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19037  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19038  RIGHT JOIN t4 ON t1.d=t4.d
19039  WHERE t4.z IS NULL OR t4.z>0
19040  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19041} {
19042  30 130 230 330 130 30 230 30 330 30
19043  60 160 260 360 160 60 260 60 360 60
19044  90 190 290 390 190 90 290 90 390 90
19045   -   -   -   -   -  -   -  - 305  5
19046   -   -   -   -   -  -   -  - 310 10
19047   -   -   -   -   -  -   -  - 315 15
19048   -   -   -   -   -  -   -  - 320 20
19049   -   -   -   -   -  -   -  - 325 25
19050   -   -   -   -   -  -   -  - 335 35
19051   -   -   -   -   -  -   -  - 340 40
19052   -   -   -   -   -  -   -  - 345 45
19053   -   -   -   -   -  -   -  - 350 50
19054   -   -   -   -   -  -   -  - 355 55
19055   -   -   -   -   -  -   -  - 365 65
19056   -   -   -   -   -  -   -  - 370 70
19057   -   -   -   -   -  -   -  - 375 75
19058   -   -   -   -   -  -   -  - 380 80
19059   -   -   -   -   -  -   -  - 385 85
19060   -   -   -   -   -  -   -  - 395 95
19061}
19062do_execsql_test joinD-648 {
19063  SELECT t1.*, t2.*, t3.*, t4.*
19064  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19065  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19066  RIGHT JOIN t4 ON t1.d=t4.d
19067  WHERE t2.x>0 AND t4.z>0
19068  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19069} {
19070  30 130 230 330 130 30 230 30 330 30
19071  60 160 260 360 160 60 260 60 360 60
19072  90 190 290 390 190 90 290 90 390 90
19073}
19074do_execsql_test joinD-649 {
19075  SELECT t1.*, t2.*, t3.*, t4.*
19076  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19077  INNER JOIN t3 ON t1.c=t3.c
19078  RIGHT JOIN t4 ON t1.d=t4.d
19079  WHERE t4.z>0 AND t3.y>0
19080  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19081} {
19082  30 130 230 330 130 30 230 30 330 30
19083  60 160 260 360 160 60 260 60 360 60
19084  90 190 290 390 190 90 290 90 390 90
19085}
19086do_execsql_test joinD-650 {
19087  SELECT t1.*, t2.*, t3.*, t4.*
19088  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19089  INNER JOIN t3 ON t1.c=t3.c
19090  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
19091  WHERE t2.x>0 AND t3.y>0
19092  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19093} {
19094  30 130 230 330 130 30 230 30 330 30
19095  60 160 260 360 160 60 260 60 360 60
19096  90 190 290 390 190 90 290 90 390 90
19097}
19098do_execsql_test joinD-651 {
19099  SELECT t1.*, t2.*, t3.*, t4.*
19100  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19101  INNER JOIN t3 ON t1.c=t3.c
19102  RIGHT JOIN t4 ON t1.d=t4.d
19103  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
19104  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19105} {
19106  30 130 230 330 130 30 230 30 330 30
19107  60 160 260 360 160 60 260 60 360 60
19108  90 190 290 390 190 90 290 90 390 90
19109}
19110do_execsql_test joinD-652 {
19111  SELECT t1.*, t2.*, t3.*, t4.*
19112  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19113  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19114  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
19115  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19116} {
19117  30 130 230 330 130 30 230 30 330 30
19118  60 160 260 360 160 60 260 60 360 60
19119  90 190 290 390 190 90 290 90 390 90
19120   -   -   -   -   -  -   -  - 300  0
19121   -   -   -   -   -  -   -  - 305  5
19122   -   -   -   -   -  -   -  - 310 10
19123   -   -   -   -   -  -   -  - 315 15
19124   -   -   -   -   -  -   -  - 320 20
19125   -   -   -   -   -  -   -  - 325 25
19126   -   -   -   -   -  -   -  - 335 35
19127   -   -   -   -   -  -   -  - 340 40
19128   -   -   -   -   -  -   -  - 345 45
19129   -   -   -   -   -  -   -  - 350 50
19130   -   -   -   -   -  -   -  - 355 55
19131   -   -   -   -   -  -   -  - 365 65
19132   -   -   -   -   -  -   -  - 370 70
19133   -   -   -   -   -  -   -  - 375 75
19134   -   -   -   -   -  -   -  - 380 80
19135   -   -   -   -   -  -   -  - 385 85
19136   -   -   -   -   -  -   -  - 395 95
19137}
19138do_execsql_test joinD-653 {
19139  SELECT t1.*, t2.*, t3.*, t4.*
19140  FROM t1 RIGHT JOIN t2 ON t2.x>0
19141  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19142  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
19143  WHERE t1.b IS NOT DISTINCT FROM t2.b
19144  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19145} {
19146  30 130 230 330 130 30 230 30 330 30
19147  60 160 260 360 160 60 260 60 360 60
19148  90 190 290 390 190 90 290 90 390 90
19149   -   -   -   -   -  -   -  - 300  0
19150   -   -   -   -   -  -   -  - 305  5
19151   -   -   -   -   -  -   -  - 310 10
19152   -   -   -   -   -  -   -  - 320 20
19153   -   -   -   -   -  -   -  - 325 25
19154   -   -   -   -   -  -   -  - 335 35
19155   -   -   -   -   -  -   -  - 340 40
19156   -   -   -   -   -  -   -  - 350 50
19157   -   -   -   -   -  -   -  - 355 55
19158   -   -   -   -   -  -   -  - 365 65
19159   -   -   -   -   -  -   -  - 370 70
19160   -   -   -   -   -  -   -  - 380 80
19161   -   -   -   -   -  -   -  - 385 85
19162   -   -   -   -   -  -   -  - 395 95
19163}
19164do_execsql_test joinD-654 {
19165  SELECT t1.*, t2.*, t3.*, t4.*
19166  FROM t1 RIGHT JOIN t2 ON t2.x>0
19167  INNER JOIN t3 ON t3.y>0
19168  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
19169  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
19170  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19171} {
19172  30 130 230 330 130 30 230 30 330 30
19173  60 160 260 360 160 60 260 60 360 60
19174  90 190 290 390 190 90 290 90 390 90
19175   -   -   -   -   -  -   -  - 300  0
19176}
19177do_execsql_test joinD-655 {
19178  SELECT t1.*, t2.*, t3.*, t4.*
19179  FROM t1 RIGHT JOIN t2 ON t2.x>0
19180  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19181  RIGHT JOIN t4 ON t4.z>0
19182  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
19183  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19184} {
19185  30 130 230 330 130 30 230 30 330 30
19186  60 160 260 360 160 60 260 60 360 60
19187  90 190 290 390 190 90 290 90 390 90
19188}
19189do_execsql_test joinD-656 {
19190  SELECT t1.*, t2.*, t3.*, t4.*
19191  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
19192  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19193  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
19194  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19195} {
19196  30 130 230 330 130 30 230 30 330 30
19197  60 160 260 360 160 60 260 60 360 60
19198  90 190 290 390 190 90 290 90 390 90
19199   -   -   -   -   -  -   -  - 300  0
19200   -   -   -   -   -  -   -  - 305  5
19201   -   -   -   -   -  -   -  - 310 10
19202   -   -   -   -   -  -   -  - 315 15
19203   -   -   -   -   -  -   -  - 320 20
19204   -   -   -   -   -  -   -  - 325 25
19205   -   -   -   -   -  -   -  - 335 35
19206   -   -   -   -   -  -   -  - 340 40
19207   -   -   -   -   -  -   -  - 345 45
19208   -   -   -   -   -  -   -  - 350 50
19209   -   -   -   -   -  -   -  - 355 55
19210   -   -   -   -   -  -   -  - 365 65
19211   -   -   -   -   -  -   -  - 370 70
19212   -   -   -   -   -  -   -  - 375 75
19213   -   -   -   -   -  -   -  - 380 80
19214   -   -   -   -   -  -   -  - 385 85
19215   -   -   -   -   -  -   -  - 395 95
19216}
19217do_execsql_test joinD-657 {
19218  SELECT t1.*, t2.*, t3.*, t4.*
19219  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19220  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
19221  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
19222  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19223} {
19224  30 130 230 330 130 30 230 30 330 30
19225  60 160 260 360 160 60 260 60 360 60
19226  90 190 290 390 190 90 290 90 390 90
19227   -   -   -   -   -  -   -  - 300  0
19228   -   -   -   -   -  -   -  - 305  5
19229   -   -   -   -   -  -   -  - 310 10
19230   -   -   -   -   -  -   -  - 315 15
19231   -   -   -   -   -  -   -  - 320 20
19232   -   -   -   -   -  -   -  - 325 25
19233   -   -   -   -   -  -   -  - 335 35
19234   -   -   -   -   -  -   -  - 340 40
19235   -   -   -   -   -  -   -  - 345 45
19236   -   -   -   -   -  -   -  - 350 50
19237   -   -   -   -   -  -   -  - 355 55
19238   -   -   -   -   -  -   -  - 365 65
19239   -   -   -   -   -  -   -  - 370 70
19240   -   -   -   -   -  -   -  - 375 75
19241   -   -   -   -   -  -   -  - 380 80
19242   -   -   -   -   -  -   -  - 385 85
19243   -   -   -   -   -  -   -  - 395 95
19244}
19245do_execsql_test joinD-658 {
19246  SELECT t1.*, t2.*, t3.*, t4.*
19247  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19248  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19249  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19250  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19251} {
19252   6 106 206 306 106  6 206  6   -  -
19253  12 112 212 312 112 12 212 12   -  -
19254  18 118 218 318 118 18 218 18   -  -
19255  24 124 224 324 124 24 224 24   -  -
19256  30 130 230 330 130 30 230 30 330 30
19257  36 136 236 336 136 36 236 36   -  -
19258  42 142 242 342 142 42 242 42   -  -
19259  48 148 248 348 148 48 248 48   -  -
19260  54 154 254 354 154 54 254 54   -  -
19261  60 160 260 360 160 60 260 60 360 60
19262  66 166 266 366 166 66 266 66   -  -
19263  72 172 272 372 172 72 272 72   -  -
19264  78 178 278 378 178 78 278 78   -  -
19265  84 184 284 384 184 84 284 84   -  -
19266  90 190 290 390 190 90 290 90 390 90
19267   -   -   -   -   -  -   -  - 300  0
19268   -   -   -   -   -  -   -  - 305  5
19269   -   -   -   -   -  -   -  - 310 10
19270   -   -   -   -   -  -   -  - 315 15
19271   -   -   -   -   -  -   -  - 320 20
19272   -   -   -   -   -  -   -  - 325 25
19273   -   -   -   -   -  -   -  - 335 35
19274   -   -   -   -   -  -   -  - 340 40
19275   -   -   -   -   -  -   -  - 345 45
19276   -   -   -   -   -  -   -  - 350 50
19277   -   -   -   -   -  -   -  - 355 55
19278   -   -   -   -   -  -   -  - 365 65
19279   -   -   -   -   -  -   -  - 370 70
19280   -   -   -   -   -  -   -  - 375 75
19281   -   -   -   -   -  -   -  - 380 80
19282   -   -   -   -   -  -   -  - 385 85
19283   -   -   -   -   -  -   -  - 395 95
19284}
19285do_execsql_test joinD-659 {
19286  SELECT t1.*, t2.*, t3.*, t4.*
19287  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19288  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19289  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19290  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19291} {
19292   6 106 206 306 106  6 206  6   -  -
19293  12 112 212 312 112 12 212 12   -  -
19294  18 118 218 318 118 18 218 18   -  -
19295  24 124 224 324 124 24 224 24   -  -
19296  30 130 230 330 130 30 230 30 330 30
19297  36 136 236 336 136 36 236 36   -  -
19298  42 142 242 342 142 42 242 42   -  -
19299  48 148 248 348 148 48 248 48   -  -
19300  54 154 254 354 154 54 254 54   -  -
19301  60 160 260 360 160 60 260 60 360 60
19302  66 166 266 366 166 66 266 66   -  -
19303  72 172 272 372 172 72 272 72   -  -
19304  78 178 278 378 178 78 278 78   -  -
19305  84 184 284 384 184 84 284 84   -  -
19306  90 190 290 390 190 90 290 90 390 90
19307   -   -   -   -   -  -   -  - 300  0
19308   -   -   -   -   -  -   -  - 305  5
19309   -   -   -   -   -  -   -  - 310 10
19310   -   -   -   -   -  -   -  - 315 15
19311   -   -   -   -   -  -   -  - 320 20
19312   -   -   -   -   -  -   -  - 325 25
19313   -   -   -   -   -  -   -  - 335 35
19314   -   -   -   -   -  -   -  - 340 40
19315   -   -   -   -   -  -   -  - 345 45
19316   -   -   -   -   -  -   -  - 350 50
19317   -   -   -   -   -  -   -  - 355 55
19318   -   -   -   -   -  -   -  - 365 65
19319   -   -   -   -   -  -   -  - 370 70
19320   -   -   -   -   -  -   -  - 375 75
19321   -   -   -   -   -  -   -  - 380 80
19322   -   -   -   -   -  -   -  - 385 85
19323   -   -   -   -   -  -   -  - 395 95
19324}
19325do_execsql_test joinD-660 {
19326  SELECT t1.*, t2.*, t3.*, t4.*
19327  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19328  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19329  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19330  WHERE t2.x>0
19331  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19332} {
19333   6 106 206 306 106  6 206  6   -  -
19334  12 112 212 312 112 12 212 12   -  -
19335  18 118 218 318 118 18 218 18   -  -
19336  24 124 224 324 124 24 224 24   -  -
19337  30 130 230 330 130 30 230 30 330 30
19338  36 136 236 336 136 36 236 36   -  -
19339  42 142 242 342 142 42 242 42   -  -
19340  48 148 248 348 148 48 248 48   -  -
19341  54 154 254 354 154 54 254 54   -  -
19342  60 160 260 360 160 60 260 60 360 60
19343  66 166 266 366 166 66 266 66   -  -
19344  72 172 272 372 172 72 272 72   -  -
19345  78 178 278 378 178 78 278 78   -  -
19346  84 184 284 384 184 84 284 84   -  -
19347  90 190 290 390 190 90 290 90 390 90
19348}
19349do_execsql_test joinD-661 {
19350  SELECT t1.*, t2.*, t3.*, t4.*
19351  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19352  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19353  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19354  WHERE (t2.x>0 OR t2.x IS NULL)
19355  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19356} {
19357   6 106 206 306 106  6 206  6   -  -
19358  12 112 212 312 112 12 212 12   -  -
19359  18 118 218 318 118 18 218 18   -  -
19360  24 124 224 324 124 24 224 24   -  -
19361  30 130 230 330 130 30 230 30 330 30
19362  36 136 236 336 136 36 236 36   -  -
19363  42 142 242 342 142 42 242 42   -  -
19364  48 148 248 348 148 48 248 48   -  -
19365  54 154 254 354 154 54 254 54   -  -
19366  60 160 260 360 160 60 260 60 360 60
19367  66 166 266 366 166 66 266 66   -  -
19368  72 172 272 372 172 72 272 72   -  -
19369  78 178 278 378 178 78 278 78   -  -
19370  84 184 284 384 184 84 284 84   -  -
19371  90 190 290 390 190 90 290 90 390 90
19372   -   -   -   -   -  -   -  - 300  0
19373   -   -   -   -   -  -   -  - 305  5
19374   -   -   -   -   -  -   -  - 310 10
19375   -   -   -   -   -  -   -  - 315 15
19376   -   -   -   -   -  -   -  - 320 20
19377   -   -   -   -   -  -   -  - 325 25
19378   -   -   -   -   -  -   -  - 335 35
19379   -   -   -   -   -  -   -  - 340 40
19380   -   -   -   -   -  -   -  - 345 45
19381   -   -   -   -   -  -   -  - 350 50
19382   -   -   -   -   -  -   -  - 355 55
19383   -   -   -   -   -  -   -  - 365 65
19384   -   -   -   -   -  -   -  - 370 70
19385   -   -   -   -   -  -   -  - 375 75
19386   -   -   -   -   -  -   -  - 380 80
19387   -   -   -   -   -  -   -  - 385 85
19388   -   -   -   -   -  -   -  - 395 95
19389}
19390do_execsql_test joinD-662 {
19391  SELECT t1.*, t2.*, t3.*, t4.*
19392  FROM t1 RIGHT JOIN t2 ON true
19393  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19394  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19395  WHERE t1.b=t2.b AND t2.x>0
19396  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19397} {
19398   6 106 206 306 106  6 206  6   -  -
19399  12 112 212 312 112 12 212 12   -  -
19400  18 118 218 318 118 18 218 18   -  -
19401  24 124 224 324 124 24 224 24   -  -
19402  30 130 230 330 130 30 230 30 330 30
19403  36 136 236 336 136 36 236 36   -  -
19404  42 142 242 342 142 42 242 42   -  -
19405  48 148 248 348 148 48 248 48   -  -
19406  54 154 254 354 154 54 254 54   -  -
19407  60 160 260 360 160 60 260 60 360 60
19408  66 166 266 366 166 66 266 66   -  -
19409  72 172 272 372 172 72 272 72   -  -
19410  78 178 278 378 178 78 278 78   -  -
19411  84 184 284 384 184 84 284 84   -  -
19412  90 190 290 390 190 90 290 90 390 90
19413}
19414do_execsql_test joinD-663 {
19415  SELECT t1.*, t2.*, t3.*, t4.*
19416  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19417  INNER JOIN t3 ON t1.c=t3.c
19418  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19419  WHERE t3.y>0
19420  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19421} {
19422   6 106 206 306 106  6 206  6   -  -
19423  12 112 212 312 112 12 212 12   -  -
19424  18 118 218 318 118 18 218 18   -  -
19425  24 124 224 324 124 24 224 24   -  -
19426  30 130 230 330 130 30 230 30 330 30
19427  36 136 236 336 136 36 236 36   -  -
19428  42 142 242 342 142 42 242 42   -  -
19429  48 148 248 348 148 48 248 48   -  -
19430  54 154 254 354 154 54 254 54   -  -
19431  60 160 260 360 160 60 260 60 360 60
19432  66 166 266 366 166 66 266 66   -  -
19433  72 172 272 372 172 72 272 72   -  -
19434  78 178 278 378 178 78 278 78   -  -
19435  84 184 284 384 184 84 284 84   -  -
19436  90 190 290 390 190 90 290 90 390 90
19437}
19438do_execsql_test joinD-664 {
19439  SELECT t1.*, t2.*, t3.*, t4.*
19440  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19441  INNER JOIN t3 ON t1.c=t3.c
19442  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19443  WHERE t3.y>0 OR t3.y IS NULL
19444  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19445} {
19446   6 106 206 306 106  6 206  6   -  -
19447  12 112 212 312 112 12 212 12   -  -
19448  18 118 218 318 118 18 218 18   -  -
19449  24 124 224 324 124 24 224 24   -  -
19450  30 130 230 330 130 30 230 30 330 30
19451  36 136 236 336 136 36 236 36   -  -
19452  42 142 242 342 142 42 242 42   -  -
19453  48 148 248 348 148 48 248 48   -  -
19454  54 154 254 354 154 54 254 54   -  -
19455  60 160 260 360 160 60 260 60 360 60
19456  66 166 266 366 166 66 266 66   -  -
19457  72 172 272 372 172 72 272 72   -  -
19458  78 178 278 378 178 78 278 78   -  -
19459  84 184 284 384 184 84 284 84   -  -
19460  90 190 290 390 190 90 290 90 390 90
19461   -   -   -   -   -  -   -  - 300  0
19462   -   -   -   -   -  -   -  - 305  5
19463   -   -   -   -   -  -   -  - 310 10
19464   -   -   -   -   -  -   -  - 315 15
19465   -   -   -   -   -  -   -  - 320 20
19466   -   -   -   -   -  -   -  - 325 25
19467   -   -   -   -   -  -   -  - 335 35
19468   -   -   -   -   -  -   -  - 340 40
19469   -   -   -   -   -  -   -  - 345 45
19470   -   -   -   -   -  -   -  - 350 50
19471   -   -   -   -   -  -   -  - 355 55
19472   -   -   -   -   -  -   -  - 365 65
19473   -   -   -   -   -  -   -  - 370 70
19474   -   -   -   -   -  -   -  - 375 75
19475   -   -   -   -   -  -   -  - 380 80
19476   -   -   -   -   -  -   -  - 385 85
19477   -   -   -   -   -  -   -  - 395 95
19478}
19479do_execsql_test joinD-665 {
19480  SELECT t1.*, t2.*, t3.*, t4.*
19481  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19482  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19483  FULL JOIN t4 ON t1.d=t4.d
19484  WHERE t4.z>0
19485  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19486} {
19487  30 130 230 330 130 30 230 30 330 30
19488  60 160 260 360 160 60 260 60 360 60
19489  90 190 290 390 190 90 290 90 390 90
19490   -   -   -   -   -  -   -  - 305  5
19491   -   -   -   -   -  -   -  - 310 10
19492   -   -   -   -   -  -   -  - 315 15
19493   -   -   -   -   -  -   -  - 320 20
19494   -   -   -   -   -  -   -  - 325 25
19495   -   -   -   -   -  -   -  - 335 35
19496   -   -   -   -   -  -   -  - 340 40
19497   -   -   -   -   -  -   -  - 345 45
19498   -   -   -   -   -  -   -  - 350 50
19499   -   -   -   -   -  -   -  - 355 55
19500   -   -   -   -   -  -   -  - 365 65
19501   -   -   -   -   -  -   -  - 370 70
19502   -   -   -   -   -  -   -  - 375 75
19503   -   -   -   -   -  -   -  - 380 80
19504   -   -   -   -   -  -   -  - 385 85
19505   -   -   -   -   -  -   -  - 395 95
19506}
19507do_execsql_test joinD-666 {
19508  SELECT t1.*, t2.*, t3.*, t4.*
19509  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19510  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19511  FULL JOIN t4 ON t1.d=t4.d
19512  WHERE t4.z IS NULL OR t4.z>0
19513  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19514} {
19515   6 106 206 306 106  6 206  6   -  -
19516  12 112 212 312 112 12 212 12   -  -
19517  18 118 218 318 118 18 218 18   -  -
19518  24 124 224 324 124 24 224 24   -  -
19519  30 130 230 330 130 30 230 30 330 30
19520  36 136 236 336 136 36 236 36   -  -
19521  42 142 242 342 142 42 242 42   -  -
19522  48 148 248 348 148 48 248 48   -  -
19523  54 154 254 354 154 54 254 54   -  -
19524  60 160 260 360 160 60 260 60 360 60
19525  66 166 266 366 166 66 266 66   -  -
19526  72 172 272 372 172 72 272 72   -  -
19527  78 178 278 378 178 78 278 78   -  -
19528  84 184 284 384 184 84 284 84   -  -
19529  90 190 290 390 190 90 290 90 390 90
19530   -   -   -   -   -  -   -  - 305  5
19531   -   -   -   -   -  -   -  - 310 10
19532   -   -   -   -   -  -   -  - 315 15
19533   -   -   -   -   -  -   -  - 320 20
19534   -   -   -   -   -  -   -  - 325 25
19535   -   -   -   -   -  -   -  - 335 35
19536   -   -   -   -   -  -   -  - 340 40
19537   -   -   -   -   -  -   -  - 345 45
19538   -   -   -   -   -  -   -  - 350 50
19539   -   -   -   -   -  -   -  - 355 55
19540   -   -   -   -   -  -   -  - 365 65
19541   -   -   -   -   -  -   -  - 370 70
19542   -   -   -   -   -  -   -  - 375 75
19543   -   -   -   -   -  -   -  - 380 80
19544   -   -   -   -   -  -   -  - 385 85
19545   -   -   -   -   -  -   -  - 395 95
19546}
19547do_execsql_test joinD-667 {
19548  SELECT t1.*, t2.*, t3.*, t4.*
19549  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19550  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19551  FULL JOIN t4 ON t1.d=t4.d
19552  WHERE t2.x>0 AND t4.z>0
19553  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19554} {
19555  30 130 230 330 130 30 230 30 330 30
19556  60 160 260 360 160 60 260 60 360 60
19557  90 190 290 390 190 90 290 90 390 90
19558}
19559do_execsql_test joinD-668 {
19560  SELECT t1.*, t2.*, t3.*, t4.*
19561  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19562  INNER JOIN t3 ON t1.c=t3.c
19563  FULL JOIN t4 ON t1.d=t4.d
19564  WHERE t4.z>0 AND t3.y>0
19565  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19566} {
19567  30 130 230 330 130 30 230 30 330 30
19568  60 160 260 360 160 60 260 60 360 60
19569  90 190 290 390 190 90 290 90 390 90
19570}
19571do_execsql_test joinD-669 {
19572  SELECT t1.*, t2.*, t3.*, t4.*
19573  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19574  INNER JOIN t3 ON t1.c=t3.c
19575  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19576  WHERE t2.x>0 AND t3.y>0
19577  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19578} {
19579   6 106 206 306 106  6 206  6   -  -
19580  12 112 212 312 112 12 212 12   -  -
19581  18 118 218 318 118 18 218 18   -  -
19582  24 124 224 324 124 24 224 24   -  -
19583  30 130 230 330 130 30 230 30 330 30
19584  36 136 236 336 136 36 236 36   -  -
19585  42 142 242 342 142 42 242 42   -  -
19586  48 148 248 348 148 48 248 48   -  -
19587  54 154 254 354 154 54 254 54   -  -
19588  60 160 260 360 160 60 260 60 360 60
19589  66 166 266 366 166 66 266 66   -  -
19590  72 172 272 372 172 72 272 72   -  -
19591  78 178 278 378 178 78 278 78   -  -
19592  84 184 284 384 184 84 284 84   -  -
19593  90 190 290 390 190 90 290 90 390 90
19594}
19595do_execsql_test joinD-670 {
19596  SELECT t1.*, t2.*, t3.*, t4.*
19597  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19598  INNER JOIN t3 ON t1.c=t3.c
19599  FULL JOIN t4 ON t1.d=t4.d
19600  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
19601  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19602} {
19603  30 130 230 330 130 30 230 30 330 30
19604  60 160 260 360 160 60 260 60 360 60
19605  90 190 290 390 190 90 290 90 390 90
19606}
19607do_execsql_test joinD-671 {
19608  SELECT t1.*, t2.*, t3.*, t4.*
19609  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19610  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19611  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
19612  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19613} {
19614   6 106 206 306 106  6 206  6   -  -
19615  12 112 212 312 112 12 212 12   -  -
19616  18 118 218 318 118 18 218 18   -  -
19617  24 124 224 324 124 24 224 24   -  -
19618  30 130 230 330 130 30 230 30 330 30
19619  36 136 236 336 136 36 236 36   -  -
19620  42 142 242 342 142 42 242 42   -  -
19621  48 148 248 348 148 48 248 48   -  -
19622  54 154 254 354 154 54 254 54   -  -
19623  60 160 260 360 160 60 260 60 360 60
19624  66 166 266 366 166 66 266 66   -  -
19625  72 172 272 372 172 72 272 72   -  -
19626  78 178 278 378 178 78 278 78   -  -
19627  84 184 284 384 184 84 284 84   -  -
19628  90 190 290 390 190 90 290 90 390 90
19629   -   -   -   -   -  -   -  - 300  0
19630   -   -   -   -   -  -   -  - 305  5
19631   -   -   -   -   -  -   -  - 310 10
19632   -   -   -   -   -  -   -  - 315 15
19633   -   -   -   -   -  -   -  - 320 20
19634   -   -   -   -   -  -   -  - 325 25
19635   -   -   -   -   -  -   -  - 335 35
19636   -   -   -   -   -  -   -  - 340 40
19637   -   -   -   -   -  -   -  - 345 45
19638   -   -   -   -   -  -   -  - 350 50
19639   -   -   -   -   -  -   -  - 355 55
19640   -   -   -   -   -  -   -  - 365 65
19641   -   -   -   -   -  -   -  - 370 70
19642   -   -   -   -   -  -   -  - 375 75
19643   -   -   -   -   -  -   -  - 380 80
19644   -   -   -   -   -  -   -  - 385 85
19645   -   -   -   -   -  -   -  - 395 95
19646}
19647do_execsql_test joinD-672 {
19648  SELECT t1.*, t2.*, t3.*, t4.*
19649  FROM t1 RIGHT JOIN t2 ON t2.x>0
19650  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19651  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
19652  WHERE t1.b IS NOT DISTINCT FROM t2.b
19653  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19654} {
19655   6 106 206 306 106  6 206  6   -  -
19656  12 112 212 312 112 12 212 12   -  -
19657  18 118 218 318 118 18 218 18   -  -
19658  24 124 224 324 124 24 224 24   -  -
19659  30 130 230 330 130 30 230 30 330 30
19660  36 136 236 336 136 36 236 36   -  -
19661  42 142 242 342 142 42 242 42   -  -
19662  48 148 248 348 148 48 248 48   -  -
19663  54 154 254 354 154 54 254 54   -  -
19664  60 160 260 360 160 60 260 60 360 60
19665  66 166 266 366 166 66 266 66   -  -
19666  72 172 272 372 172 72 272 72   -  -
19667  78 178 278 378 178 78 278 78   -  -
19668  84 184 284 384 184 84 284 84   -  -
19669  90 190 290 390 190 90 290 90 390 90
19670   -   -   -   -   -  -   -  - 300  0
19671   -   -   -   -   -  -   -  - 305  5
19672   -   -   -   -   -  -   -  - 310 10
19673   -   -   -   -   -  -   -  - 320 20
19674   -   -   -   -   -  -   -  - 325 25
19675   -   -   -   -   -  -   -  - 335 35
19676   -   -   -   -   -  -   -  - 340 40
19677   -   -   -   -   -  -   -  - 350 50
19678   -   -   -   -   -  -   -  - 355 55
19679   -   -   -   -   -  -   -  - 365 65
19680   -   -   -   -   -  -   -  - 370 70
19681   -   -   -   -   -  -   -  - 380 80
19682   -   -   -   -   -  -   -  - 385 85
19683   -   -   -   -   -  -   -  - 395 95
19684}
19685do_execsql_test joinD-673 {
19686  SELECT t1.*, t2.*, t3.*, t4.*
19687  FROM t1 RIGHT JOIN t2 ON t2.x>0
19688  INNER JOIN t3 ON t3.y>0
19689  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
19690  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
19691  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19692} {
19693   6 106 206 306 106  6 206  6   -  -
19694  12 112 212 312 112 12 212 12   -  -
19695  18 118 218 318 118 18 218 18   -  -
19696  24 124 224 324 124 24 224 24   -  -
19697  30 130 230 330 130 30 230 30 330 30
19698  36 136 236 336 136 36 236 36   -  -
19699  42 142 242 342 142 42 242 42   -  -
19700  48 148 248 348 148 48 248 48   -  -
19701  54 154 254 354 154 54 254 54   -  -
19702  60 160 260 360 160 60 260 60 360 60
19703  66 166 266 366 166 66 266 66   -  -
19704  72 172 272 372 172 72 272 72   -  -
19705  78 178 278 378 178 78 278 78   -  -
19706  84 184 284 384 184 84 284 84   -  -
19707  90 190 290 390 190 90 290 90 390 90
19708   -   -   -   -   -  -   -  - 300  0
19709}
19710do_execsql_test joinD-674 {
19711  SELECT t1.*, t2.*, t3.*, t4.*
19712  FROM t1 RIGHT JOIN t2 ON t2.x>0
19713  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
19714  FULL JOIN t4 ON t4.z>0
19715  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
19716  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19717} {
19718  30 130 230 330 130 30 230 30 330 30
19719  60 160 260 360 160 60 260 60 360 60
19720  90 190 290 390 190 90 290 90 390 90
19721}
19722do_execsql_test joinD-675 {
19723  SELECT t1.*, t2.*, t3.*, t4.*
19724  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
19725  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
19726  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19727  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19728} {
19729   6 106 206 306 106  6 206  6   -  -
19730  12 112 212 312 112 12 212 12   -  -
19731  18 118 218 318 118 18 218 18   -  -
19732  24 124 224 324 124 24 224 24   -  -
19733  30 130 230 330 130 30 230 30 330 30
19734  36 136 236 336 136 36 236 36   -  -
19735  42 142 242 342 142 42 242 42   -  -
19736  48 148 248 348 148 48 248 48   -  -
19737  54 154 254 354 154 54 254 54   -  -
19738  60 160 260 360 160 60 260 60 360 60
19739  66 166 266 366 166 66 266 66   -  -
19740  72 172 272 372 172 72 272 72   -  -
19741  78 178 278 378 178 78 278 78   -  -
19742  84 184 284 384 184 84 284 84   -  -
19743  90 190 290 390 190 90 290 90 390 90
19744   -   -   -   -   -  -   -  - 300  0
19745   -   -   -   -   -  -   -  - 305  5
19746   -   -   -   -   -  -   -  - 310 10
19747   -   -   -   -   -  -   -  - 315 15
19748   -   -   -   -   -  -   -  - 320 20
19749   -   -   -   -   -  -   -  - 325 25
19750   -   -   -   -   -  -   -  - 335 35
19751   -   -   -   -   -  -   -  - 340 40
19752   -   -   -   -   -  -   -  - 345 45
19753   -   -   -   -   -  -   -  - 350 50
19754   -   -   -   -   -  -   -  - 355 55
19755   -   -   -   -   -  -   -  - 365 65
19756   -   -   -   -   -  -   -  - 370 70
19757   -   -   -   -   -  -   -  - 375 75
19758   -   -   -   -   -  -   -  - 380 80
19759   -   -   -   -   -  -   -  - 385 85
19760   -   -   -   -   -  -   -  - 395 95
19761}
19762do_execsql_test joinD-676 {
19763  SELECT t1.*, t2.*, t3.*, t4.*
19764  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19765  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
19766  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
19767  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19768} {
19769   6 106 206 306 106  6 206  6   -  -
19770  12 112 212 312 112 12 212 12   -  -
19771  18 118 218 318 118 18 218 18   -  -
19772  24 124 224 324 124 24 224 24   -  -
19773  30 130 230 330 130 30 230 30 330 30
19774  36 136 236 336 136 36 236 36   -  -
19775  42 142 242 342 142 42 242 42   -  -
19776  48 148 248 348 148 48 248 48   -  -
19777  54 154 254 354 154 54 254 54   -  -
19778  60 160 260 360 160 60 260 60 360 60
19779  66 166 266 366 166 66 266 66   -  -
19780  72 172 272 372 172 72 272 72   -  -
19781  78 178 278 378 178 78 278 78   -  -
19782  84 184 284 384 184 84 284 84   -  -
19783  90 190 290 390 190 90 290 90 390 90
19784   -   -   -   -   -  -   -  - 300  0
19785   -   -   -   -   -  -   -  - 305  5
19786   -   -   -   -   -  -   -  - 310 10
19787   -   -   -   -   -  -   -  - 315 15
19788   -   -   -   -   -  -   -  - 320 20
19789   -   -   -   -   -  -   -  - 325 25
19790   -   -   -   -   -  -   -  - 335 35
19791   -   -   -   -   -  -   -  - 340 40
19792   -   -   -   -   -  -   -  - 345 45
19793   -   -   -   -   -  -   -  - 350 50
19794   -   -   -   -   -  -   -  - 355 55
19795   -   -   -   -   -  -   -  - 365 65
19796   -   -   -   -   -  -   -  - 370 70
19797   -   -   -   -   -  -   -  - 375 75
19798   -   -   -   -   -  -   -  - 380 80
19799   -   -   -   -   -  -   -  - 385 85
19800   -   -   -   -   -  -   -  - 395 95
19801}
19802do_execsql_test joinD-677 {
19803  SELECT t1.*, t2.*, t3.*, t4.*
19804  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19805  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19806  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19807  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19808} {
19809  10 110 210 310 110 10   -  - 310 10
19810  20 120 220 320 120 20   -  - 320 20
19811  30 130 230 330 130 30 230 30 330 30
19812  40 140 240 340 140 40   -  - 340 40
19813  50 150 250 350 150 50   -  - 350 50
19814  60 160 260 360 160 60 260 60 360 60
19815  70 170 270 370 170 70   -  - 370 70
19816  80 180 280 380 180 80   -  - 380 80
19817  90 190 290 390 190 90 290 90 390 90
19818}
19819do_execsql_test joinD-678 {
19820  SELECT t1.*, t2.*, t3.*, t4.*
19821  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
19822  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19823  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19824  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19825} {
19826  10 110 210 310 110 10   -  - 310 10
19827  20 120 220 320 120 20   -  - 320 20
19828  30 130 230 330 130 30 230 30 330 30
19829  40 140 240 340 140 40   -  - 340 40
19830  50 150 250 350 150 50   -  - 350 50
19831  60 160 260 360 160 60 260 60 360 60
19832  70 170 270 370 170 70   -  - 370 70
19833  80 180 280 380 180 80   -  - 380 80
19834  90 190 290 390 190 90 290 90 390 90
19835}
19836do_execsql_test joinD-679 {
19837  SELECT t1.*, t2.*, t3.*, t4.*
19838  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19839  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19840  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19841  WHERE t2.x>0
19842  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19843} {
19844  10 110 210 310 110 10   -  - 310 10
19845  20 120 220 320 120 20   -  - 320 20
19846  30 130 230 330 130 30 230 30 330 30
19847  40 140 240 340 140 40   -  - 340 40
19848  50 150 250 350 150 50   -  - 350 50
19849  60 160 260 360 160 60 260 60 360 60
19850  70 170 270 370 170 70   -  - 370 70
19851  80 180 280 380 180 80   -  - 380 80
19852  90 190 290 390 190 90 290 90 390 90
19853}
19854do_execsql_test joinD-680 {
19855  SELECT t1.*, t2.*, t3.*, t4.*
19856  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19857  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19858  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19859  WHERE (t2.x>0 OR t2.x IS NULL)
19860  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19861} {
19862  10 110 210 310 110 10   -  - 310 10
19863  20 120 220 320 120 20   -  - 320 20
19864  30 130 230 330 130 30 230 30 330 30
19865  40 140 240 340 140 40   -  - 340 40
19866  50 150 250 350 150 50   -  - 350 50
19867  60 160 260 360 160 60 260 60 360 60
19868  70 170 270 370 170 70   -  - 370 70
19869  80 180 280 380 180 80   -  - 380 80
19870  90 190 290 390 190 90 290 90 390 90
19871}
19872do_execsql_test joinD-681 {
19873  SELECT t1.*, t2.*, t3.*, t4.*
19874  FROM t1 RIGHT JOIN t2 ON true
19875  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19876  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19877  WHERE t1.b=t2.b AND t2.x>0
19878  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19879} {
19880  10 110 210 310 110 10   -  - 310 10
19881  20 120 220 320 120 20   -  - 320 20
19882  30 130 230 330 130 30 230 30 330 30
19883  40 140 240 340 140 40   -  - 340 40
19884  50 150 250 350 150 50   -  - 350 50
19885  60 160 260 360 160 60 260 60 360 60
19886  70 170 270 370 170 70   -  - 370 70
19887  80 180 280 380 180 80   -  - 380 80
19888  90 190 290 390 190 90 290 90 390 90
19889}
19890do_execsql_test joinD-682 {
19891  SELECT t1.*, t2.*, t3.*, t4.*
19892  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19893  LEFT JOIN t3 ON t1.c=t3.c
19894  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19895  WHERE t3.y>0
19896  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19897} {
19898  30 130 230 330 130 30 230 30 330 30
19899  60 160 260 360 160 60 260 60 360 60
19900  90 190 290 390 190 90 290 90 390 90
19901}
19902do_execsql_test joinD-683 {
19903  SELECT t1.*, t2.*, t3.*, t4.*
19904  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19905  LEFT JOIN t3 ON t1.c=t3.c
19906  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19907  WHERE t3.y>0 OR t3.y IS NULL
19908  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19909} {
19910  10 110 210 310 110 10   -  - 310 10
19911  20 120 220 320 120 20   -  - 320 20
19912  30 130 230 330 130 30 230 30 330 30
19913  40 140 240 340 140 40   -  - 340 40
19914  50 150 250 350 150 50   -  - 350 50
19915  60 160 260 360 160 60 260 60 360 60
19916  70 170 270 370 170 70   -  - 370 70
19917  80 180 280 380 180 80   -  - 380 80
19918  90 190 290 390 190 90 290 90 390 90
19919}
19920do_execsql_test joinD-684 {
19921  SELECT t1.*, t2.*, t3.*, t4.*
19922  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19923  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19924  INNER JOIN t4 ON t1.d=t4.d
19925  WHERE t4.z>0
19926  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19927} {
19928  10 110 210 310 110 10   -  - 310 10
19929  20 120 220 320 120 20   -  - 320 20
19930  30 130 230 330 130 30 230 30 330 30
19931  40 140 240 340 140 40   -  - 340 40
19932  50 150 250 350 150 50   -  - 350 50
19933  60 160 260 360 160 60 260 60 360 60
19934  70 170 270 370 170 70   -  - 370 70
19935  80 180 280 380 180 80   -  - 380 80
19936  90 190 290 390 190 90 290 90 390 90
19937}
19938do_execsql_test joinD-685 {
19939  SELECT t1.*, t2.*, t3.*, t4.*
19940  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19941  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19942  INNER JOIN t4 ON t1.d=t4.d
19943  WHERE t4.z IS NULL OR t4.z>0
19944  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19945} {
19946  10 110 210 310 110 10   -  - 310 10
19947  20 120 220 320 120 20   -  - 320 20
19948  30 130 230 330 130 30 230 30 330 30
19949  40 140 240 340 140 40   -  - 340 40
19950  50 150 250 350 150 50   -  - 350 50
19951  60 160 260 360 160 60 260 60 360 60
19952  70 170 270 370 170 70   -  - 370 70
19953  80 180 280 380 180 80   -  - 380 80
19954  90 190 290 390 190 90 290 90 390 90
19955}
19956do_execsql_test joinD-686 {
19957  SELECT t1.*, t2.*, t3.*, t4.*
19958  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19959  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
19960  INNER JOIN t4 ON t1.d=t4.d
19961  WHERE t2.x>0 AND t4.z>0
19962  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19963} {
19964  10 110 210 310 110 10   -  - 310 10
19965  20 120 220 320 120 20   -  - 320 20
19966  30 130 230 330 130 30 230 30 330 30
19967  40 140 240 340 140 40   -  - 340 40
19968  50 150 250 350 150 50   -  - 350 50
19969  60 160 260 360 160 60 260 60 360 60
19970  70 170 270 370 170 70   -  - 370 70
19971  80 180 280 380 180 80   -  - 380 80
19972  90 190 290 390 190 90 290 90 390 90
19973}
19974do_execsql_test joinD-687 {
19975  SELECT t1.*, t2.*, t3.*, t4.*
19976  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
19977  LEFT JOIN t3 ON t1.c=t3.c
19978  INNER JOIN t4 ON t1.d=t4.d
19979  WHERE t4.z>0 AND t3.y>0
19980  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19981} {
19982  30 130 230 330 130 30 230 30 330 30
19983  60 160 260 360 160 60 260 60 360 60
19984  90 190 290 390 190 90 290 90 390 90
19985}
19986do_execsql_test joinD-688 {
19987  SELECT t1.*, t2.*, t3.*, t4.*
19988  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
19989  LEFT JOIN t3 ON t1.c=t3.c
19990  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
19991  WHERE t2.x>0 AND t3.y>0
19992  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
19993} {
19994  30 130 230 330 130 30 230 30 330 30
19995  60 160 260 360 160 60 260 60 360 60
19996  90 190 290 390 190 90 290 90 390 90
19997}
19998do_execsql_test joinD-689 {
19999  SELECT t1.*, t2.*, t3.*, t4.*
20000  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20001  LEFT JOIN t3 ON t1.c=t3.c
20002  INNER JOIN t4 ON t1.d=t4.d
20003  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
20004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20005} {
20006  30 130 230 330 130 30 230 30 330 30
20007  60 160 260 360 160 60 260 60 360 60
20008  90 190 290 390 190 90 290 90 390 90
20009}
20010do_execsql_test joinD-690 {
20011  SELECT t1.*, t2.*, t3.*, t4.*
20012  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20013  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20014  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20015  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20016} {
20017  10 110 210 310 110 10   -  - 310 10
20018  20 120 220 320 120 20   -  - 320 20
20019  30 130 230 330 130 30 230 30 330 30
20020  40 140 240 340 140 40   -  - 340 40
20021  50 150 250 350 150 50   -  - 350 50
20022  60 160 260 360 160 60 260 60 360 60
20023  70 170 270 370 170 70   -  - 370 70
20024  80 180 280 380 180 80   -  - 380 80
20025  90 190 290 390 190 90 290 90 390 90
20026}
20027do_execsql_test joinD-691 {
20028  SELECT t1.*, t2.*, t3.*, t4.*
20029  FROM t1 RIGHT JOIN t2 ON t2.x>0
20030  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20031  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20032  WHERE t1.b IS NOT DISTINCT FROM t2.b
20033  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20034} {
20035  10 110 210 310 110 10   -  - 310 10
20036  20 120 220 320 120 20   -  - 320 20
20037  30 130 230 330 130 30 230 30 330 30
20038  40 140 240 340 140 40   -  - 340 40
20039  50 150 250 350 150 50   -  - 350 50
20040  60 160 260 360 160 60 260 60 360 60
20041  70 170 270 370 170 70   -  - 370 70
20042  80 180 280 380 180 80   -  - 380 80
20043  90 190 290 390 190 90 290 90 390 90
20044}
20045do_execsql_test joinD-692 {
20046  SELECT t1.*, t2.*, t3.*, t4.*
20047  FROM t1 RIGHT JOIN t2 ON t2.x>0
20048  LEFT JOIN t3 ON t3.y>0
20049  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20050  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
20051  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20052} {
20053  30 130 230 330 130 30 230 30 330 30
20054  60 160 260 360 160 60 260 60 360 60
20055  90 190 290 390 190 90 290 90 390 90
20056}
20057do_execsql_test joinD-693 {
20058  SELECT t1.*, t2.*, t3.*, t4.*
20059  FROM t1 RIGHT JOIN t2 ON t2.x>0
20060  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20061  INNER JOIN t4 ON t4.z>0
20062  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
20063  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20064} {
20065  10 110 210 310 110 10   -  - 310 10
20066  20 120 220 320 120 20   -  - 320 20
20067  30 130 230 330 130 30 230 30 330 30
20068  40 140 240 340 140 40   -  - 340 40
20069  50 150 250 350 150 50   -  - 350 50
20070  60 160 260 360 160 60 260 60 360 60
20071  70 170 270 370 170 70   -  - 370 70
20072  80 180 280 380 180 80   -  - 380 80
20073  90 190 290 390 190 90 290 90 390 90
20074}
20075do_execsql_test joinD-694 {
20076  SELECT t1.*, t2.*, t3.*, t4.*
20077  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
20078  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20079  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
20080  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20081} {
20082  10 110 210 310 110 10   -  - 310 10
20083  20 120 220 320 120 20   -  - 320 20
20084  30 130 230 330 130 30 230 30 330 30
20085  40 140 240 340 140 40   -  - 340 40
20086  50 150 250 350 150 50   -  - 350 50
20087  60 160 260 360 160 60 260 60 360 60
20088  70 170 270 370 170 70   -  - 370 70
20089  80 180 280 380 180 80   -  - 380 80
20090  90 190 290 390 190 90 290 90 390 90
20091}
20092do_execsql_test joinD-695 {
20093  SELECT t1.*, t2.*, t3.*, t4.*
20094  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20095  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
20096  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
20097  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20098} {
20099  10 110 210 310 110 10   -  - 310 10
20100  20 120 220 320 120 20   -  - 320 20
20101  30 130 230 330 130 30 230 30 330 30
20102  40 140 240 340 140 40   -  - 340 40
20103  50 150 250 350 150 50   -  - 350 50
20104  60 160 260 360 160 60 260 60 360 60
20105  70 170 270 370 170 70   -  - 370 70
20106  80 180 280 380 180 80   -  - 380 80
20107  90 190 290 390 190 90 290 90 390 90
20108}
20109do_execsql_test joinD-696 {
20110  SELECT t1.*, t2.*, t3.*, t4.*
20111  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20112  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20113  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20114  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20115} {
20116   2 102 202 302 102  2   -  -   -  -
20117   4 104 204 304 104  4   -  -   -  -
20118   6 106 206 306 106  6 206  6   -  -
20119   8 108 208 308 108  8   -  -   -  -
20120  10 110 210 310 110 10   -  - 310 10
20121  12 112 212 312 112 12 212 12   -  -
20122  14 114 214 314 114 14   -  -   -  -
20123  16 116 216 316 116 16   -  -   -  -
20124  18 118 218 318 118 18 218 18   -  -
20125  20 120 220 320 120 20   -  - 320 20
20126  22 122 222 322 122 22   -  -   -  -
20127  24 124 224 324 124 24 224 24   -  -
20128  26 126 226 326 126 26   -  -   -  -
20129  28 128 228 328 128 28   -  -   -  -
20130  30 130 230 330 130 30 230 30 330 30
20131  32 132 232 332 132 32   -  -   -  -
20132  34 134 234 334 134 34   -  -   -  -
20133  36 136 236 336 136 36 236 36   -  -
20134  38 138 238 338 138 38   -  -   -  -
20135  40 140 240 340 140 40   -  - 340 40
20136  42 142 242 342 142 42 242 42   -  -
20137  44 144 244 344 144 44   -  -   -  -
20138  46 146 246 346 146 46   -  -   -  -
20139  48 148 248 348 148 48 248 48   -  -
20140  50 150 250 350 150 50   -  - 350 50
20141  52 152 252 352 152 52   -  -   -  -
20142  54 154 254 354 154 54 254 54   -  -
20143  56 156 256 356 156 56   -  -   -  -
20144  58 158 258 358 158 58   -  -   -  -
20145  60 160 260 360 160 60 260 60 360 60
20146  62 162 262 362 162 62   -  -   -  -
20147  64 164 264 364 164 64   -  -   -  -
20148  66 166 266 366 166 66 266 66   -  -
20149  68 168 268 368 168 68   -  -   -  -
20150  70 170 270 370 170 70   -  - 370 70
20151  72 172 272 372 172 72 272 72   -  -
20152  74 174 274 374 174 74   -  -   -  -
20153  76 176 276 376 176 76   -  -   -  -
20154  78 178 278 378 178 78 278 78   -  -
20155  80 180 280 380 180 80   -  - 380 80
20156  82 182 282 382 182 82   -  -   -  -
20157  84 184 284 384 184 84 284 84   -  -
20158  86 186 286 386 186 86   -  -   -  -
20159  88 188 288 388 188 88   -  -   -  -
20160  90 190 290 390 190 90 290 90 390 90
20161  92 192 292 392 192 92   -  -   -  -
20162  94 194 294 394 194 94   -  -   -  -
20163   -   -   -   - 100  0   -  -   -  -
20164}
20165do_execsql_test joinD-697 {
20166  SELECT t1.*, t2.*, t3.*, t4.*
20167  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20168  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20169  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20170  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20171} {
20172   2 102 202 302 102  2   -  -   -  -
20173   4 104 204 304 104  4   -  -   -  -
20174   6 106 206 306 106  6 206  6   -  -
20175   8 108 208 308 108  8   -  -   -  -
20176  10 110 210 310 110 10   -  - 310 10
20177  12 112 212 312 112 12 212 12   -  -
20178  14 114 214 314 114 14   -  -   -  -
20179  16 116 216 316 116 16   -  -   -  -
20180  18 118 218 318 118 18 218 18   -  -
20181  20 120 220 320 120 20   -  - 320 20
20182  22 122 222 322 122 22   -  -   -  -
20183  24 124 224 324 124 24 224 24   -  -
20184  26 126 226 326 126 26   -  -   -  -
20185  28 128 228 328 128 28   -  -   -  -
20186  30 130 230 330 130 30 230 30 330 30
20187  32 132 232 332 132 32   -  -   -  -
20188  34 134 234 334 134 34   -  -   -  -
20189  36 136 236 336 136 36 236 36   -  -
20190  38 138 238 338 138 38   -  -   -  -
20191  40 140 240 340 140 40   -  - 340 40
20192  42 142 242 342 142 42 242 42   -  -
20193  44 144 244 344 144 44   -  -   -  -
20194  46 146 246 346 146 46   -  -   -  -
20195  48 148 248 348 148 48 248 48   -  -
20196  50 150 250 350 150 50   -  - 350 50
20197  52 152 252 352 152 52   -  -   -  -
20198  54 154 254 354 154 54 254 54   -  -
20199  56 156 256 356 156 56   -  -   -  -
20200  58 158 258 358 158 58   -  -   -  -
20201  60 160 260 360 160 60 260 60 360 60
20202  62 162 262 362 162 62   -  -   -  -
20203  64 164 264 364 164 64   -  -   -  -
20204  66 166 266 366 166 66 266 66   -  -
20205  68 168 268 368 168 68   -  -   -  -
20206  70 170 270 370 170 70   -  - 370 70
20207  72 172 272 372 172 72 272 72   -  -
20208  74 174 274 374 174 74   -  -   -  -
20209  76 176 276 376 176 76   -  -   -  -
20210  78 178 278 378 178 78 278 78   -  -
20211  80 180 280 380 180 80   -  - 380 80
20212  82 182 282 382 182 82   -  -   -  -
20213  84 184 284 384 184 84 284 84   -  -
20214  86 186 286 386 186 86   -  -   -  -
20215  88 188 288 388 188 88   -  -   -  -
20216  90 190 290 390 190 90 290 90 390 90
20217  92 192 292 392 192 92   -  -   -  -
20218  94 194 294 394 194 94   -  -   -  -
20219   -   -   -   - 100  0   -  -   -  -
20220}
20221do_execsql_test joinD-698 {
20222  SELECT t1.*, t2.*, t3.*, t4.*
20223  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20224  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20225  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20226  WHERE t2.x>0
20227  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20228} {
20229   2 102 202 302 102  2   -  -   -  -
20230   4 104 204 304 104  4   -  -   -  -
20231   6 106 206 306 106  6 206  6   -  -
20232   8 108 208 308 108  8   -  -   -  -
20233  10 110 210 310 110 10   -  - 310 10
20234  12 112 212 312 112 12 212 12   -  -
20235  14 114 214 314 114 14   -  -   -  -
20236  16 116 216 316 116 16   -  -   -  -
20237  18 118 218 318 118 18 218 18   -  -
20238  20 120 220 320 120 20   -  - 320 20
20239  22 122 222 322 122 22   -  -   -  -
20240  24 124 224 324 124 24 224 24   -  -
20241  26 126 226 326 126 26   -  -   -  -
20242  28 128 228 328 128 28   -  -   -  -
20243  30 130 230 330 130 30 230 30 330 30
20244  32 132 232 332 132 32   -  -   -  -
20245  34 134 234 334 134 34   -  -   -  -
20246  36 136 236 336 136 36 236 36   -  -
20247  38 138 238 338 138 38   -  -   -  -
20248  40 140 240 340 140 40   -  - 340 40
20249  42 142 242 342 142 42 242 42   -  -
20250  44 144 244 344 144 44   -  -   -  -
20251  46 146 246 346 146 46   -  -   -  -
20252  48 148 248 348 148 48 248 48   -  -
20253  50 150 250 350 150 50   -  - 350 50
20254  52 152 252 352 152 52   -  -   -  -
20255  54 154 254 354 154 54 254 54   -  -
20256  56 156 256 356 156 56   -  -   -  -
20257  58 158 258 358 158 58   -  -   -  -
20258  60 160 260 360 160 60 260 60 360 60
20259  62 162 262 362 162 62   -  -   -  -
20260  64 164 264 364 164 64   -  -   -  -
20261  66 166 266 366 166 66 266 66   -  -
20262  68 168 268 368 168 68   -  -   -  -
20263  70 170 270 370 170 70   -  - 370 70
20264  72 172 272 372 172 72 272 72   -  -
20265  74 174 274 374 174 74   -  -   -  -
20266  76 176 276 376 176 76   -  -   -  -
20267  78 178 278 378 178 78 278 78   -  -
20268  80 180 280 380 180 80   -  - 380 80
20269  82 182 282 382 182 82   -  -   -  -
20270  84 184 284 384 184 84 284 84   -  -
20271  86 186 286 386 186 86   -  -   -  -
20272  88 188 288 388 188 88   -  -   -  -
20273  90 190 290 390 190 90 290 90 390 90
20274  92 192 292 392 192 92   -  -   -  -
20275  94 194 294 394 194 94   -  -   -  -
20276}
20277do_execsql_test joinD-699 {
20278  SELECT t1.*, t2.*, t3.*, t4.*
20279  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20280  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20281  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20282  WHERE (t2.x>0 OR t2.x IS NULL)
20283  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20284} {
20285   2 102 202 302 102  2   -  -   -  -
20286   4 104 204 304 104  4   -  -   -  -
20287   6 106 206 306 106  6 206  6   -  -
20288   8 108 208 308 108  8   -  -   -  -
20289  10 110 210 310 110 10   -  - 310 10
20290  12 112 212 312 112 12 212 12   -  -
20291  14 114 214 314 114 14   -  -   -  -
20292  16 116 216 316 116 16   -  -   -  -
20293  18 118 218 318 118 18 218 18   -  -
20294  20 120 220 320 120 20   -  - 320 20
20295  22 122 222 322 122 22   -  -   -  -
20296  24 124 224 324 124 24 224 24   -  -
20297  26 126 226 326 126 26   -  -   -  -
20298  28 128 228 328 128 28   -  -   -  -
20299  30 130 230 330 130 30 230 30 330 30
20300  32 132 232 332 132 32   -  -   -  -
20301  34 134 234 334 134 34   -  -   -  -
20302  36 136 236 336 136 36 236 36   -  -
20303  38 138 238 338 138 38   -  -   -  -
20304  40 140 240 340 140 40   -  - 340 40
20305  42 142 242 342 142 42 242 42   -  -
20306  44 144 244 344 144 44   -  -   -  -
20307  46 146 246 346 146 46   -  -   -  -
20308  48 148 248 348 148 48 248 48   -  -
20309  50 150 250 350 150 50   -  - 350 50
20310  52 152 252 352 152 52   -  -   -  -
20311  54 154 254 354 154 54 254 54   -  -
20312  56 156 256 356 156 56   -  -   -  -
20313  58 158 258 358 158 58   -  -   -  -
20314  60 160 260 360 160 60 260 60 360 60
20315  62 162 262 362 162 62   -  -   -  -
20316  64 164 264 364 164 64   -  -   -  -
20317  66 166 266 366 166 66 266 66   -  -
20318  68 168 268 368 168 68   -  -   -  -
20319  70 170 270 370 170 70   -  - 370 70
20320  72 172 272 372 172 72 272 72   -  -
20321  74 174 274 374 174 74   -  -   -  -
20322  76 176 276 376 176 76   -  -   -  -
20323  78 178 278 378 178 78 278 78   -  -
20324  80 180 280 380 180 80   -  - 380 80
20325  82 182 282 382 182 82   -  -   -  -
20326  84 184 284 384 184 84 284 84   -  -
20327  86 186 286 386 186 86   -  -   -  -
20328  88 188 288 388 188 88   -  -   -  -
20329  90 190 290 390 190 90 290 90 390 90
20330  92 192 292 392 192 92   -  -   -  -
20331  94 194 294 394 194 94   -  -   -  -
20332}
20333do_execsql_test joinD-700 {
20334  SELECT t1.*, t2.*, t3.*, t4.*
20335  FROM t1 RIGHT JOIN t2 ON true
20336  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20337  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20338  WHERE t1.b=t2.b AND t2.x>0
20339  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20340} {
20341   2 102 202 302 102  2   -  -   -  -
20342   4 104 204 304 104  4   -  -   -  -
20343   6 106 206 306 106  6 206  6   -  -
20344   8 108 208 308 108  8   -  -   -  -
20345  10 110 210 310 110 10   -  - 310 10
20346  12 112 212 312 112 12 212 12   -  -
20347  14 114 214 314 114 14   -  -   -  -
20348  16 116 216 316 116 16   -  -   -  -
20349  18 118 218 318 118 18 218 18   -  -
20350  20 120 220 320 120 20   -  - 320 20
20351  22 122 222 322 122 22   -  -   -  -
20352  24 124 224 324 124 24 224 24   -  -
20353  26 126 226 326 126 26   -  -   -  -
20354  28 128 228 328 128 28   -  -   -  -
20355  30 130 230 330 130 30 230 30 330 30
20356  32 132 232 332 132 32   -  -   -  -
20357  34 134 234 334 134 34   -  -   -  -
20358  36 136 236 336 136 36 236 36   -  -
20359  38 138 238 338 138 38   -  -   -  -
20360  40 140 240 340 140 40   -  - 340 40
20361  42 142 242 342 142 42 242 42   -  -
20362  44 144 244 344 144 44   -  -   -  -
20363  46 146 246 346 146 46   -  -   -  -
20364  48 148 248 348 148 48 248 48   -  -
20365  50 150 250 350 150 50   -  - 350 50
20366  52 152 252 352 152 52   -  -   -  -
20367  54 154 254 354 154 54 254 54   -  -
20368  56 156 256 356 156 56   -  -   -  -
20369  58 158 258 358 158 58   -  -   -  -
20370  60 160 260 360 160 60 260 60 360 60
20371  62 162 262 362 162 62   -  -   -  -
20372  64 164 264 364 164 64   -  -   -  -
20373  66 166 266 366 166 66 266 66   -  -
20374  68 168 268 368 168 68   -  -   -  -
20375  70 170 270 370 170 70   -  - 370 70
20376  72 172 272 372 172 72 272 72   -  -
20377  74 174 274 374 174 74   -  -   -  -
20378  76 176 276 376 176 76   -  -   -  -
20379  78 178 278 378 178 78 278 78   -  -
20380  80 180 280 380 180 80   -  - 380 80
20381  82 182 282 382 182 82   -  -   -  -
20382  84 184 284 384 184 84 284 84   -  -
20383  86 186 286 386 186 86   -  -   -  -
20384  88 188 288 388 188 88   -  -   -  -
20385  90 190 290 390 190 90 290 90 390 90
20386  92 192 292 392 192 92   -  -   -  -
20387  94 194 294 394 194 94   -  -   -  -
20388}
20389do_execsql_test joinD-701 {
20390  SELECT t1.*, t2.*, t3.*, t4.*
20391  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20392  LEFT JOIN t3 ON t1.c=t3.c
20393  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20394  WHERE t3.y>0
20395  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20396} {
20397   6 106 206 306 106  6 206  6   -  -
20398  12 112 212 312 112 12 212 12   -  -
20399  18 118 218 318 118 18 218 18   -  -
20400  24 124 224 324 124 24 224 24   -  -
20401  30 130 230 330 130 30 230 30 330 30
20402  36 136 236 336 136 36 236 36   -  -
20403  42 142 242 342 142 42 242 42   -  -
20404  48 148 248 348 148 48 248 48   -  -
20405  54 154 254 354 154 54 254 54   -  -
20406  60 160 260 360 160 60 260 60 360 60
20407  66 166 266 366 166 66 266 66   -  -
20408  72 172 272 372 172 72 272 72   -  -
20409  78 178 278 378 178 78 278 78   -  -
20410  84 184 284 384 184 84 284 84   -  -
20411  90 190 290 390 190 90 290 90 390 90
20412}
20413do_execsql_test joinD-702 {
20414  SELECT t1.*, t2.*, t3.*, t4.*
20415  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20416  LEFT JOIN t3 ON t1.c=t3.c
20417  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20418  WHERE t3.y>0 OR t3.y IS NULL
20419  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20420} {
20421   2 102 202 302 102  2   -  -   -  -
20422   4 104 204 304 104  4   -  -   -  -
20423   6 106 206 306 106  6 206  6   -  -
20424   8 108 208 308 108  8   -  -   -  -
20425  10 110 210 310 110 10   -  - 310 10
20426  12 112 212 312 112 12 212 12   -  -
20427  14 114 214 314 114 14   -  -   -  -
20428  16 116 216 316 116 16   -  -   -  -
20429  18 118 218 318 118 18 218 18   -  -
20430  20 120 220 320 120 20   -  - 320 20
20431  22 122 222 322 122 22   -  -   -  -
20432  24 124 224 324 124 24 224 24   -  -
20433  26 126 226 326 126 26   -  -   -  -
20434  28 128 228 328 128 28   -  -   -  -
20435  30 130 230 330 130 30 230 30 330 30
20436  32 132 232 332 132 32   -  -   -  -
20437  34 134 234 334 134 34   -  -   -  -
20438  36 136 236 336 136 36 236 36   -  -
20439  38 138 238 338 138 38   -  -   -  -
20440  40 140 240 340 140 40   -  - 340 40
20441  42 142 242 342 142 42 242 42   -  -
20442  44 144 244 344 144 44   -  -   -  -
20443  46 146 246 346 146 46   -  -   -  -
20444  48 148 248 348 148 48 248 48   -  -
20445  50 150 250 350 150 50   -  - 350 50
20446  52 152 252 352 152 52   -  -   -  -
20447  54 154 254 354 154 54 254 54   -  -
20448  56 156 256 356 156 56   -  -   -  -
20449  58 158 258 358 158 58   -  -   -  -
20450  60 160 260 360 160 60 260 60 360 60
20451  62 162 262 362 162 62   -  -   -  -
20452  64 164 264 364 164 64   -  -   -  -
20453  66 166 266 366 166 66 266 66   -  -
20454  68 168 268 368 168 68   -  -   -  -
20455  70 170 270 370 170 70   -  - 370 70
20456  72 172 272 372 172 72 272 72   -  -
20457  74 174 274 374 174 74   -  -   -  -
20458  76 176 276 376 176 76   -  -   -  -
20459  78 178 278 378 178 78 278 78   -  -
20460  80 180 280 380 180 80   -  - 380 80
20461  82 182 282 382 182 82   -  -   -  -
20462  84 184 284 384 184 84 284 84   -  -
20463  86 186 286 386 186 86   -  -   -  -
20464  88 188 288 388 188 88   -  -   -  -
20465  90 190 290 390 190 90 290 90 390 90
20466  92 192 292 392 192 92   -  -   -  -
20467  94 194 294 394 194 94   -  -   -  -
20468   -   -   -   - 100  0   -  -   -  -
20469}
20470do_execsql_test joinD-703 {
20471  SELECT t1.*, t2.*, t3.*, t4.*
20472  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20473  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20474  LEFT JOIN t4 ON t1.d=t4.d
20475  WHERE t4.z>0
20476  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20477} {
20478  10 110 210 310 110 10   -  - 310 10
20479  20 120 220 320 120 20   -  - 320 20
20480  30 130 230 330 130 30 230 30 330 30
20481  40 140 240 340 140 40   -  - 340 40
20482  50 150 250 350 150 50   -  - 350 50
20483  60 160 260 360 160 60 260 60 360 60
20484  70 170 270 370 170 70   -  - 370 70
20485  80 180 280 380 180 80   -  - 380 80
20486  90 190 290 390 190 90 290 90 390 90
20487}
20488do_execsql_test joinD-704 {
20489  SELECT t1.*, t2.*, t3.*, t4.*
20490  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20491  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20492  LEFT JOIN t4 ON t1.d=t4.d
20493  WHERE t4.z IS NULL OR t4.z>0
20494  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20495} {
20496   2 102 202 302 102  2   -  -   -  -
20497   4 104 204 304 104  4   -  -   -  -
20498   6 106 206 306 106  6 206  6   -  -
20499   8 108 208 308 108  8   -  -   -  -
20500  10 110 210 310 110 10   -  - 310 10
20501  12 112 212 312 112 12 212 12   -  -
20502  14 114 214 314 114 14   -  -   -  -
20503  16 116 216 316 116 16   -  -   -  -
20504  18 118 218 318 118 18 218 18   -  -
20505  20 120 220 320 120 20   -  - 320 20
20506  22 122 222 322 122 22   -  -   -  -
20507  24 124 224 324 124 24 224 24   -  -
20508  26 126 226 326 126 26   -  -   -  -
20509  28 128 228 328 128 28   -  -   -  -
20510  30 130 230 330 130 30 230 30 330 30
20511  32 132 232 332 132 32   -  -   -  -
20512  34 134 234 334 134 34   -  -   -  -
20513  36 136 236 336 136 36 236 36   -  -
20514  38 138 238 338 138 38   -  -   -  -
20515  40 140 240 340 140 40   -  - 340 40
20516  42 142 242 342 142 42 242 42   -  -
20517  44 144 244 344 144 44   -  -   -  -
20518  46 146 246 346 146 46   -  -   -  -
20519  48 148 248 348 148 48 248 48   -  -
20520  50 150 250 350 150 50   -  - 350 50
20521  52 152 252 352 152 52   -  -   -  -
20522  54 154 254 354 154 54 254 54   -  -
20523  56 156 256 356 156 56   -  -   -  -
20524  58 158 258 358 158 58   -  -   -  -
20525  60 160 260 360 160 60 260 60 360 60
20526  62 162 262 362 162 62   -  -   -  -
20527  64 164 264 364 164 64   -  -   -  -
20528  66 166 266 366 166 66 266 66   -  -
20529  68 168 268 368 168 68   -  -   -  -
20530  70 170 270 370 170 70   -  - 370 70
20531  72 172 272 372 172 72 272 72   -  -
20532  74 174 274 374 174 74   -  -   -  -
20533  76 176 276 376 176 76   -  -   -  -
20534  78 178 278 378 178 78 278 78   -  -
20535  80 180 280 380 180 80   -  - 380 80
20536  82 182 282 382 182 82   -  -   -  -
20537  84 184 284 384 184 84 284 84   -  -
20538  86 186 286 386 186 86   -  -   -  -
20539  88 188 288 388 188 88   -  -   -  -
20540  90 190 290 390 190 90 290 90 390 90
20541  92 192 292 392 192 92   -  -   -  -
20542  94 194 294 394 194 94   -  -   -  -
20543   -   -   -   - 100  0   -  -   -  -
20544}
20545do_execsql_test joinD-705 {
20546  SELECT t1.*, t2.*, t3.*, t4.*
20547  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20548  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20549  LEFT JOIN t4 ON t1.d=t4.d
20550  WHERE t2.x>0 AND t4.z>0
20551  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20552} {
20553  10 110 210 310 110 10   -  - 310 10
20554  20 120 220 320 120 20   -  - 320 20
20555  30 130 230 330 130 30 230 30 330 30
20556  40 140 240 340 140 40   -  - 340 40
20557  50 150 250 350 150 50   -  - 350 50
20558  60 160 260 360 160 60 260 60 360 60
20559  70 170 270 370 170 70   -  - 370 70
20560  80 180 280 380 180 80   -  - 380 80
20561  90 190 290 390 190 90 290 90 390 90
20562}
20563do_execsql_test joinD-706 {
20564  SELECT t1.*, t2.*, t3.*, t4.*
20565  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20566  LEFT JOIN t3 ON t1.c=t3.c
20567  LEFT JOIN t4 ON t1.d=t4.d
20568  WHERE t4.z>0 AND t3.y>0
20569  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20570} {
20571  30 130 230 330 130 30 230 30 330 30
20572  60 160 260 360 160 60 260 60 360 60
20573  90 190 290 390 190 90 290 90 390 90
20574}
20575do_execsql_test joinD-707 {
20576  SELECT t1.*, t2.*, t3.*, t4.*
20577  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20578  LEFT JOIN t3 ON t1.c=t3.c
20579  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20580  WHERE t2.x>0 AND t3.y>0
20581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20582} {
20583   6 106 206 306 106  6 206  6   -  -
20584  12 112 212 312 112 12 212 12   -  -
20585  18 118 218 318 118 18 218 18   -  -
20586  24 124 224 324 124 24 224 24   -  -
20587  30 130 230 330 130 30 230 30 330 30
20588  36 136 236 336 136 36 236 36   -  -
20589  42 142 242 342 142 42 242 42   -  -
20590  48 148 248 348 148 48 248 48   -  -
20591  54 154 254 354 154 54 254 54   -  -
20592  60 160 260 360 160 60 260 60 360 60
20593  66 166 266 366 166 66 266 66   -  -
20594  72 172 272 372 172 72 272 72   -  -
20595  78 178 278 378 178 78 278 78   -  -
20596  84 184 284 384 184 84 284 84   -  -
20597  90 190 290 390 190 90 290 90 390 90
20598}
20599do_execsql_test joinD-708 {
20600  SELECT t1.*, t2.*, t3.*, t4.*
20601  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20602  LEFT JOIN t3 ON t1.c=t3.c
20603  LEFT JOIN t4 ON t1.d=t4.d
20604  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
20605  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20606} {
20607  30 130 230 330 130 30 230 30 330 30
20608  60 160 260 360 160 60 260 60 360 60
20609  90 190 290 390 190 90 290 90 390 90
20610}
20611do_execsql_test joinD-709 {
20612  SELECT t1.*, t2.*, t3.*, t4.*
20613  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20614  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20615  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20616  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20617} {
20618   2 102 202 302 102  2   -  -   -  -
20619   4 104 204 304 104  4   -  -   -  -
20620   6 106 206 306 106  6 206  6   -  -
20621   8 108 208 308 108  8   -  -   -  -
20622  10 110 210 310 110 10   -  - 310 10
20623  12 112 212 312 112 12 212 12   -  -
20624  14 114 214 314 114 14   -  -   -  -
20625  16 116 216 316 116 16   -  -   -  -
20626  18 118 218 318 118 18 218 18   -  -
20627  20 120 220 320 120 20   -  - 320 20
20628  22 122 222 322 122 22   -  -   -  -
20629  24 124 224 324 124 24 224 24   -  -
20630  26 126 226 326 126 26   -  -   -  -
20631  28 128 228 328 128 28   -  -   -  -
20632  30 130 230 330 130 30 230 30 330 30
20633  32 132 232 332 132 32   -  -   -  -
20634  34 134 234 334 134 34   -  -   -  -
20635  36 136 236 336 136 36 236 36   -  -
20636  38 138 238 338 138 38   -  -   -  -
20637  40 140 240 340 140 40   -  - 340 40
20638  42 142 242 342 142 42 242 42   -  -
20639  44 144 244 344 144 44   -  -   -  -
20640  46 146 246 346 146 46   -  -   -  -
20641  48 148 248 348 148 48 248 48   -  -
20642  50 150 250 350 150 50   -  - 350 50
20643  52 152 252 352 152 52   -  -   -  -
20644  54 154 254 354 154 54 254 54   -  -
20645  56 156 256 356 156 56   -  -   -  -
20646  58 158 258 358 158 58   -  -   -  -
20647  60 160 260 360 160 60 260 60 360 60
20648  62 162 262 362 162 62   -  -   -  -
20649  64 164 264 364 164 64   -  -   -  -
20650  66 166 266 366 166 66 266 66   -  -
20651  68 168 268 368 168 68   -  -   -  -
20652  70 170 270 370 170 70   -  - 370 70
20653  72 172 272 372 172 72 272 72   -  -
20654  74 174 274 374 174 74   -  -   -  -
20655  76 176 276 376 176 76   -  -   -  -
20656  78 178 278 378 178 78 278 78   -  -
20657  80 180 280 380 180 80   -  - 380 80
20658  82 182 282 382 182 82   -  -   -  -
20659  84 184 284 384 184 84 284 84   -  -
20660  86 186 286 386 186 86   -  -   -  -
20661  88 188 288 388 188 88   -  -   -  -
20662  90 190 290 390 190 90 290 90 390 90
20663  92 192 292 392 192 92   -  -   -  -
20664  94 194 294 394 194 94   -  -   -  -
20665   -   -   -   - 100  0   -  -   -  -
20666}
20667do_execsql_test joinD-710 {
20668  SELECT t1.*, t2.*, t3.*, t4.*
20669  FROM t1 RIGHT JOIN t2 ON t2.x>0
20670  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20671  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20672  WHERE t1.b IS NOT DISTINCT FROM t2.b
20673  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20674} {
20675   2 102 202 302 102  2   -  -   -  -
20676   4 104 204 304 104  4   -  -   -  -
20677   6 106 206 306 106  6 206  6   -  -
20678   8 108 208 308 108  8   -  -   -  -
20679  10 110 210 310 110 10   -  - 310 10
20680  12 112 212 312 112 12 212 12   -  -
20681  14 114 214 314 114 14   -  -   -  -
20682  16 116 216 316 116 16   -  -   -  -
20683  18 118 218 318 118 18 218 18   -  -
20684  20 120 220 320 120 20   -  - 320 20
20685  22 122 222 322 122 22   -  -   -  -
20686  24 124 224 324 124 24 224 24   -  -
20687  26 126 226 326 126 26   -  -   -  -
20688  28 128 228 328 128 28   -  -   -  -
20689  30 130 230 330 130 30 230 30 330 30
20690  32 132 232 332 132 32   -  -   -  -
20691  34 134 234 334 134 34   -  -   -  -
20692  36 136 236 336 136 36 236 36   -  -
20693  38 138 238 338 138 38   -  -   -  -
20694  40 140 240 340 140 40   -  - 340 40
20695  42 142 242 342 142 42 242 42   -  -
20696  44 144 244 344 144 44   -  -   -  -
20697  46 146 246 346 146 46   -  -   -  -
20698  48 148 248 348 148 48 248 48   -  -
20699  50 150 250 350 150 50   -  - 350 50
20700  52 152 252 352 152 52   -  -   -  -
20701  54 154 254 354 154 54 254 54   -  -
20702  56 156 256 356 156 56   -  -   -  -
20703  58 158 258 358 158 58   -  -   -  -
20704  60 160 260 360 160 60 260 60 360 60
20705  62 162 262 362 162 62   -  -   -  -
20706  64 164 264 364 164 64   -  -   -  -
20707  66 166 266 366 166 66 266 66   -  -
20708  68 168 268 368 168 68   -  -   -  -
20709  70 170 270 370 170 70   -  - 370 70
20710  72 172 272 372 172 72 272 72   -  -
20711  74 174 274 374 174 74   -  -   -  -
20712  76 176 276 376 176 76   -  -   -  -
20713  78 178 278 378 178 78 278 78   -  -
20714  80 180 280 380 180 80   -  - 380 80
20715  82 182 282 382 182 82   -  -   -  -
20716  84 184 284 384 184 84 284 84   -  -
20717  86 186 286 386 186 86   -  -   -  -
20718  88 188 288 388 188 88   -  -   -  -
20719  90 190 290 390 190 90 290 90 390 90
20720  92 192 292 392 192 92   -  -   -  -
20721  94 194 294 394 194 94   -  -   -  -
20722}
20723do_execsql_test joinD-711 {
20724  SELECT t1.*, t2.*, t3.*, t4.*
20725  FROM t1 RIGHT JOIN t2 ON t2.x>0
20726  LEFT JOIN t3 ON t3.y>0
20727  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
20728  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
20729  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20730} {
20731   6 106 206 306 106  6 206  6   -  -
20732  12 112 212 312 112 12 212 12   -  -
20733  18 118 218 318 118 18 218 18   -  -
20734  24 124 224 324 124 24 224 24   -  -
20735  30 130 230 330 130 30 230 30 330 30
20736  36 136 236 336 136 36 236 36   -  -
20737  42 142 242 342 142 42 242 42   -  -
20738  48 148 248 348 148 48 248 48   -  -
20739  54 154 254 354 154 54 254 54   -  -
20740  60 160 260 360 160 60 260 60 360 60
20741  66 166 266 366 166 66 266 66   -  -
20742  72 172 272 372 172 72 272 72   -  -
20743  78 178 278 378 178 78 278 78   -  -
20744  84 184 284 384 184 84 284 84   -  -
20745  90 190 290 390 190 90 290 90 390 90
20746}
20747do_execsql_test joinD-712 {
20748  SELECT t1.*, t2.*, t3.*, t4.*
20749  FROM t1 RIGHT JOIN t2 ON t2.x>0
20750  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
20751  LEFT JOIN t4 ON t4.z>0
20752  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
20753  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20754} {
20755  10 110 210 310 110 10   -  - 310 10
20756  20 120 220 320 120 20   -  - 320 20
20757  30 130 230 330 130 30 230 30 330 30
20758  40 140 240 340 140 40   -  - 340 40
20759  50 150 250 350 150 50   -  - 350 50
20760  60 160 260 360 160 60 260 60 360 60
20761  70 170 270 370 170 70   -  - 370 70
20762  80 180 280 380 180 80   -  - 380 80
20763  90 190 290 390 190 90 290 90 390 90
20764}
20765do_execsql_test joinD-713 {
20766  SELECT t1.*, t2.*, t3.*, t4.*
20767  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
20768  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20769  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20770  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20771} {
20772   2 102 202 302 102  2   -  -   -  -
20773   4 104 204 304 104  4   -  -   -  -
20774   6 106 206 306 106  6 206  6   -  -
20775   8 108 208 308 108  8   -  -   -  -
20776  10 110 210 310 110 10   -  - 310 10
20777  12 112 212 312 112 12 212 12   -  -
20778  14 114 214 314 114 14   -  -   -  -
20779  16 116 216 316 116 16   -  -   -  -
20780  18 118 218 318 118 18 218 18   -  -
20781  20 120 220 320 120 20   -  - 320 20
20782  22 122 222 322 122 22   -  -   -  -
20783  24 124 224 324 124 24 224 24   -  -
20784  26 126 226 326 126 26   -  -   -  -
20785  28 128 228 328 128 28   -  -   -  -
20786  30 130 230 330 130 30 230 30 330 30
20787  32 132 232 332 132 32   -  -   -  -
20788  34 134 234 334 134 34   -  -   -  -
20789  36 136 236 336 136 36 236 36   -  -
20790  38 138 238 338 138 38   -  -   -  -
20791  40 140 240 340 140 40   -  - 340 40
20792  42 142 242 342 142 42 242 42   -  -
20793  44 144 244 344 144 44   -  -   -  -
20794  46 146 246 346 146 46   -  -   -  -
20795  48 148 248 348 148 48 248 48   -  -
20796  50 150 250 350 150 50   -  - 350 50
20797  52 152 252 352 152 52   -  -   -  -
20798  54 154 254 354 154 54 254 54   -  -
20799  56 156 256 356 156 56   -  -   -  -
20800  58 158 258 358 158 58   -  -   -  -
20801  60 160 260 360 160 60 260 60 360 60
20802  62 162 262 362 162 62   -  -   -  -
20803  64 164 264 364 164 64   -  -   -  -
20804  66 166 266 366 166 66 266 66   -  -
20805  68 168 268 368 168 68   -  -   -  -
20806  70 170 270 370 170 70   -  - 370 70
20807  72 172 272 372 172 72 272 72   -  -
20808  74 174 274 374 174 74   -  -   -  -
20809  76 176 276 376 176 76   -  -   -  -
20810  78 178 278 378 178 78 278 78   -  -
20811  80 180 280 380 180 80   -  - 380 80
20812  82 182 282 382 182 82   -  -   -  -
20813  84 184 284 384 184 84 284 84   -  -
20814  86 186 286 386 186 86   -  -   -  -
20815  88 188 288 388 188 88   -  -   -  -
20816  90 190 290 390 190 90 290 90 390 90
20817  92 192 292 392 192 92   -  -   -  -
20818  94 194 294 394 194 94   -  -   -  -
20819   -   -   -   - 100  0   -  -   -  -
20820}
20821do_execsql_test joinD-714 {
20822  SELECT t1.*, t2.*, t3.*, t4.*
20823  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20824  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
20825  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
20826  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20827} {
20828   2 102 202 302 102  2   -  -   -  -
20829   4 104 204 304 104  4   -  -   -  -
20830   6 106 206 306 106  6 206  6   -  -
20831   8 108 208 308 108  8   -  -   -  -
20832  10 110 210 310 110 10   -  - 310 10
20833  12 112 212 312 112 12 212 12   -  -
20834  14 114 214 314 114 14   -  -   -  -
20835  16 116 216 316 116 16   -  -   -  -
20836  18 118 218 318 118 18 218 18   -  -
20837  20 120 220 320 120 20   -  - 320 20
20838  22 122 222 322 122 22   -  -   -  -
20839  24 124 224 324 124 24 224 24   -  -
20840  26 126 226 326 126 26   -  -   -  -
20841  28 128 228 328 128 28   -  -   -  -
20842  30 130 230 330 130 30 230 30 330 30
20843  32 132 232 332 132 32   -  -   -  -
20844  34 134 234 334 134 34   -  -   -  -
20845  36 136 236 336 136 36 236 36   -  -
20846  38 138 238 338 138 38   -  -   -  -
20847  40 140 240 340 140 40   -  - 340 40
20848  42 142 242 342 142 42 242 42   -  -
20849  44 144 244 344 144 44   -  -   -  -
20850  46 146 246 346 146 46   -  -   -  -
20851  48 148 248 348 148 48 248 48   -  -
20852  50 150 250 350 150 50   -  - 350 50
20853  52 152 252 352 152 52   -  -   -  -
20854  54 154 254 354 154 54 254 54   -  -
20855  56 156 256 356 156 56   -  -   -  -
20856  58 158 258 358 158 58   -  -   -  -
20857  60 160 260 360 160 60 260 60 360 60
20858  62 162 262 362 162 62   -  -   -  -
20859  64 164 264 364 164 64   -  -   -  -
20860  66 166 266 366 166 66 266 66   -  -
20861  68 168 268 368 168 68   -  -   -  -
20862  70 170 270 370 170 70   -  - 370 70
20863  72 172 272 372 172 72 272 72   -  -
20864  74 174 274 374 174 74   -  -   -  -
20865  76 176 276 376 176 76   -  -   -  -
20866  78 178 278 378 178 78 278 78   -  -
20867  80 180 280 380 180 80   -  - 380 80
20868  82 182 282 382 182 82   -  -   -  -
20869  84 184 284 384 184 84 284 84   -  -
20870  86 186 286 386 186 86   -  -   -  -
20871  88 188 288 388 188 88   -  -   -  -
20872  90 190 290 390 190 90 290 90 390 90
20873  92 192 292 392 192 92   -  -   -  -
20874  94 194 294 394 194 94   -  -   -  -
20875   -   -   -   - 100  0   -  -   -  -
20876}
20877do_execsql_test joinD-715 {
20878  SELECT t1.*, t2.*, t3.*, t4.*
20879  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
20880  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20881  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20882  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20883} {
20884  10 110 210 310 110 10   -  - 310 10
20885  20 120 220 320 120 20   -  - 320 20
20886  30 130 230 330 130 30 230 30 330 30
20887  40 140 240 340 140 40   -  - 340 40
20888  50 150 250 350 150 50   -  - 350 50
20889  60 160 260 360 160 60 260 60 360 60
20890  70 170 270 370 170 70   -  - 370 70
20891  80 180 280 380 180 80   -  - 380 80
20892  90 190 290 390 190 90 290 90 390 90
20893   -   -   -   -   -  -   -  - 300  0
20894   -   -   -   -   -  -   -  - 305  5
20895   -   -   -   -   -  -   -  - 315 15
20896   -   -   -   -   -  -   -  - 325 25
20897   -   -   -   -   -  -   -  - 335 35
20898   -   -   -   -   -  -   -  - 345 45
20899   -   -   -   -   -  -   -  - 355 55
20900   -   -   -   -   -  -   -  - 365 65
20901   -   -   -   -   -  -   -  - 375 75
20902   -   -   -   -   -  -   -  - 385 85
20903   -   -   -   -   -  -   -  - 395 95
20904}
20905do_execsql_test joinD-716 {
20906  SELECT t1.*, t2.*, t3.*, t4.*
20907  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
20908  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20909  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20910  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20911} {
20912  10 110 210 310 110 10   -  - 310 10
20913  20 120 220 320 120 20   -  - 320 20
20914  30 130 230 330 130 30 230 30 330 30
20915  40 140 240 340 140 40   -  - 340 40
20916  50 150 250 350 150 50   -  - 350 50
20917  60 160 260 360 160 60 260 60 360 60
20918  70 170 270 370 170 70   -  - 370 70
20919  80 180 280 380 180 80   -  - 380 80
20920  90 190 290 390 190 90 290 90 390 90
20921   -   -   -   -   -  -   -  - 300  0
20922   -   -   -   -   -  -   -  - 305  5
20923   -   -   -   -   -  -   -  - 315 15
20924   -   -   -   -   -  -   -  - 325 25
20925   -   -   -   -   -  -   -  - 335 35
20926   -   -   -   -   -  -   -  - 345 45
20927   -   -   -   -   -  -   -  - 355 55
20928   -   -   -   -   -  -   -  - 365 65
20929   -   -   -   -   -  -   -  - 375 75
20930   -   -   -   -   -  -   -  - 385 85
20931   -   -   -   -   -  -   -  - 395 95
20932}
20933do_execsql_test joinD-717 {
20934  SELECT t1.*, t2.*, t3.*, t4.*
20935  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20936  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20937  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20938  WHERE t2.x>0
20939  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20940} {
20941  10 110 210 310 110 10   -  - 310 10
20942  20 120 220 320 120 20   -  - 320 20
20943  30 130 230 330 130 30 230 30 330 30
20944  40 140 240 340 140 40   -  - 340 40
20945  50 150 250 350 150 50   -  - 350 50
20946  60 160 260 360 160 60 260 60 360 60
20947  70 170 270 370 170 70   -  - 370 70
20948  80 180 280 380 180 80   -  - 380 80
20949  90 190 290 390 190 90 290 90 390 90
20950}
20951do_execsql_test joinD-718 {
20952  SELECT t1.*, t2.*, t3.*, t4.*
20953  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
20954  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20955  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20956  WHERE (t2.x>0 OR t2.x IS NULL)
20957  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20958} {
20959  10 110 210 310 110 10   -  - 310 10
20960  20 120 220 320 120 20   -  - 320 20
20961  30 130 230 330 130 30 230 30 330 30
20962  40 140 240 340 140 40   -  - 340 40
20963  50 150 250 350 150 50   -  - 350 50
20964  60 160 260 360 160 60 260 60 360 60
20965  70 170 270 370 170 70   -  - 370 70
20966  80 180 280 380 180 80   -  - 380 80
20967  90 190 290 390 190 90 290 90 390 90
20968   -   -   -   -   -  -   -  - 300  0
20969   -   -   -   -   -  -   -  - 305  5
20970   -   -   -   -   -  -   -  - 315 15
20971   -   -   -   -   -  -   -  - 325 25
20972   -   -   -   -   -  -   -  - 335 35
20973   -   -   -   -   -  -   -  - 345 45
20974   -   -   -   -   -  -   -  - 355 55
20975   -   -   -   -   -  -   -  - 365 65
20976   -   -   -   -   -  -   -  - 375 75
20977   -   -   -   -   -  -   -  - 385 85
20978   -   -   -   -   -  -   -  - 395 95
20979}
20980do_execsql_test joinD-719 {
20981  SELECT t1.*, t2.*, t3.*, t4.*
20982  FROM t1 RIGHT JOIN t2 ON true
20983  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
20984  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
20985  WHERE t1.b=t2.b AND t2.x>0
20986  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
20987} {
20988  10 110 210 310 110 10   -  - 310 10
20989  20 120 220 320 120 20   -  - 320 20
20990  30 130 230 330 130 30 230 30 330 30
20991  40 140 240 340 140 40   -  - 340 40
20992  50 150 250 350 150 50   -  - 350 50
20993  60 160 260 360 160 60 260 60 360 60
20994  70 170 270 370 170 70   -  - 370 70
20995  80 180 280 380 180 80   -  - 380 80
20996  90 190 290 390 190 90 290 90 390 90
20997}
20998do_execsql_test joinD-720 {
20999  SELECT t1.*, t2.*, t3.*, t4.*
21000  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21001  LEFT JOIN t3 ON t1.c=t3.c
21002  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21003  WHERE t3.y>0
21004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21005} {
21006  30 130 230 330 130 30 230 30 330 30
21007  60 160 260 360 160 60 260 60 360 60
21008  90 190 290 390 190 90 290 90 390 90
21009}
21010do_execsql_test joinD-721 {
21011  SELECT t1.*, t2.*, t3.*, t4.*
21012  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21013  LEFT JOIN t3 ON t1.c=t3.c
21014  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21015  WHERE t3.y>0 OR t3.y IS NULL
21016  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21017} {
21018  10 110 210 310 110 10   -  - 310 10
21019  20 120 220 320 120 20   -  - 320 20
21020  30 130 230 330 130 30 230 30 330 30
21021  40 140 240 340 140 40   -  - 340 40
21022  50 150 250 350 150 50   -  - 350 50
21023  60 160 260 360 160 60 260 60 360 60
21024  70 170 270 370 170 70   -  - 370 70
21025  80 180 280 380 180 80   -  - 380 80
21026  90 190 290 390 190 90 290 90 390 90
21027   -   -   -   -   -  -   -  - 300  0
21028   -   -   -   -   -  -   -  - 305  5
21029   -   -   -   -   -  -   -  - 315 15
21030   -   -   -   -   -  -   -  - 325 25
21031   -   -   -   -   -  -   -  - 335 35
21032   -   -   -   -   -  -   -  - 345 45
21033   -   -   -   -   -  -   -  - 355 55
21034   -   -   -   -   -  -   -  - 365 65
21035   -   -   -   -   -  -   -  - 375 75
21036   -   -   -   -   -  -   -  - 385 85
21037   -   -   -   -   -  -   -  - 395 95
21038}
21039do_execsql_test joinD-722 {
21040  SELECT t1.*, t2.*, t3.*, t4.*
21041  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21042  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21043  RIGHT JOIN t4 ON t1.d=t4.d
21044  WHERE t4.z>0
21045  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21046} {
21047  10 110 210 310 110 10   -  - 310 10
21048  20 120 220 320 120 20   -  - 320 20
21049  30 130 230 330 130 30 230 30 330 30
21050  40 140 240 340 140 40   -  - 340 40
21051  50 150 250 350 150 50   -  - 350 50
21052  60 160 260 360 160 60 260 60 360 60
21053  70 170 270 370 170 70   -  - 370 70
21054  80 180 280 380 180 80   -  - 380 80
21055  90 190 290 390 190 90 290 90 390 90
21056   -   -   -   -   -  -   -  - 305  5
21057   -   -   -   -   -  -   -  - 315 15
21058   -   -   -   -   -  -   -  - 325 25
21059   -   -   -   -   -  -   -  - 335 35
21060   -   -   -   -   -  -   -  - 345 45
21061   -   -   -   -   -  -   -  - 355 55
21062   -   -   -   -   -  -   -  - 365 65
21063   -   -   -   -   -  -   -  - 375 75
21064   -   -   -   -   -  -   -  - 385 85
21065   -   -   -   -   -  -   -  - 395 95
21066}
21067do_execsql_test joinD-723 {
21068  SELECT t1.*, t2.*, t3.*, t4.*
21069  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21070  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21071  RIGHT JOIN t4 ON t1.d=t4.d
21072  WHERE t4.z IS NULL OR t4.z>0
21073  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21074} {
21075  10 110 210 310 110 10   -  - 310 10
21076  20 120 220 320 120 20   -  - 320 20
21077  30 130 230 330 130 30 230 30 330 30
21078  40 140 240 340 140 40   -  - 340 40
21079  50 150 250 350 150 50   -  - 350 50
21080  60 160 260 360 160 60 260 60 360 60
21081  70 170 270 370 170 70   -  - 370 70
21082  80 180 280 380 180 80   -  - 380 80
21083  90 190 290 390 190 90 290 90 390 90
21084   -   -   -   -   -  -   -  - 305  5
21085   -   -   -   -   -  -   -  - 315 15
21086   -   -   -   -   -  -   -  - 325 25
21087   -   -   -   -   -  -   -  - 335 35
21088   -   -   -   -   -  -   -  - 345 45
21089   -   -   -   -   -  -   -  - 355 55
21090   -   -   -   -   -  -   -  - 365 65
21091   -   -   -   -   -  -   -  - 375 75
21092   -   -   -   -   -  -   -  - 385 85
21093   -   -   -   -   -  -   -  - 395 95
21094}
21095do_execsql_test joinD-724 {
21096  SELECT t1.*, t2.*, t3.*, t4.*
21097  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21098  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21099  RIGHT JOIN t4 ON t1.d=t4.d
21100  WHERE t2.x>0 AND t4.z>0
21101  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21102} {
21103  10 110 210 310 110 10   -  - 310 10
21104  20 120 220 320 120 20   -  - 320 20
21105  30 130 230 330 130 30 230 30 330 30
21106  40 140 240 340 140 40   -  - 340 40
21107  50 150 250 350 150 50   -  - 350 50
21108  60 160 260 360 160 60 260 60 360 60
21109  70 170 270 370 170 70   -  - 370 70
21110  80 180 280 380 180 80   -  - 380 80
21111  90 190 290 390 190 90 290 90 390 90
21112}
21113do_execsql_test joinD-725 {
21114  SELECT t1.*, t2.*, t3.*, t4.*
21115  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21116  LEFT JOIN t3 ON t1.c=t3.c
21117  RIGHT JOIN t4 ON t1.d=t4.d
21118  WHERE t4.z>0 AND t3.y>0
21119  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21120} {
21121  30 130 230 330 130 30 230 30 330 30
21122  60 160 260 360 160 60 260 60 360 60
21123  90 190 290 390 190 90 290 90 390 90
21124}
21125do_execsql_test joinD-726 {
21126  SELECT t1.*, t2.*, t3.*, t4.*
21127  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21128  LEFT JOIN t3 ON t1.c=t3.c
21129  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21130  WHERE t2.x>0 AND t3.y>0
21131  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21132} {
21133  30 130 230 330 130 30 230 30 330 30
21134  60 160 260 360 160 60 260 60 360 60
21135  90 190 290 390 190 90 290 90 390 90
21136}
21137do_execsql_test joinD-727 {
21138  SELECT t1.*, t2.*, t3.*, t4.*
21139  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21140  LEFT JOIN t3 ON t1.c=t3.c
21141  RIGHT JOIN t4 ON t1.d=t4.d
21142  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
21143  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21144} {
21145  30 130 230 330 130 30 230 30 330 30
21146  60 160 260 360 160 60 260 60 360 60
21147  90 190 290 390 190 90 290 90 390 90
21148}
21149do_execsql_test joinD-728 {
21150  SELECT t1.*, t2.*, t3.*, t4.*
21151  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
21152  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21153  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
21154  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21155} {
21156  10 110 210 310 110 10   -  - 310 10
21157  20 120 220 320 120 20   -  - 320 20
21158  30 130 230 330 130 30 230 30 330 30
21159  40 140 240 340 140 40   -  - 340 40
21160  50 150 250 350 150 50   -  - 350 50
21161  60 160 260 360 160 60 260 60 360 60
21162  70 170 270 370 170 70   -  - 370 70
21163  80 180 280 380 180 80   -  - 380 80
21164  90 190 290 390 190 90 290 90 390 90
21165   -   -   -   -   -  -   -  - 300  0
21166   -   -   -   -   -  -   -  - 305  5
21167   -   -   -   -   -  -   -  - 315 15
21168   -   -   -   -   -  -   -  - 325 25
21169   -   -   -   -   -  -   -  - 335 35
21170   -   -   -   -   -  -   -  - 345 45
21171   -   -   -   -   -  -   -  - 355 55
21172   -   -   -   -   -  -   -  - 365 65
21173   -   -   -   -   -  -   -  - 375 75
21174   -   -   -   -   -  -   -  - 385 85
21175   -   -   -   -   -  -   -  - 395 95
21176}
21177do_execsql_test joinD-729 {
21178  SELECT t1.*, t2.*, t3.*, t4.*
21179  FROM t1 RIGHT JOIN t2 ON t2.x>0
21180  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21181  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
21182  WHERE t1.b IS NOT DISTINCT FROM t2.b
21183  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21184} {
21185  10 110 210 310 110 10   -  - 310 10
21186  20 120 220 320 120 20   -  - 320 20
21187  30 130 230 330 130 30 230 30 330 30
21188  40 140 240 340 140 40   -  - 340 40
21189  50 150 250 350 150 50   -  - 350 50
21190  60 160 260 360 160 60 260 60 360 60
21191  70 170 270 370 170 70   -  - 370 70
21192  80 180 280 380 180 80   -  - 380 80
21193  90 190 290 390 190 90 290 90 390 90
21194   -   -   -   -   -  -   -  - 300  0
21195}
21196do_execsql_test joinD-730 {
21197  SELECT t1.*, t2.*, t3.*, t4.*
21198  FROM t1 RIGHT JOIN t2 ON t2.x>0
21199  LEFT JOIN t3 ON t3.y>0
21200  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
21201  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
21202  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21203} {
21204  30 130 230 330 130 30 230 30 330 30
21205  60 160 260 360 160 60 260 60 360 60
21206  90 190 290 390 190 90 290 90 390 90
21207   -   -   -   -   -  -   -  - 300  0
21208}
21209do_execsql_test joinD-731 {
21210  SELECT t1.*, t2.*, t3.*, t4.*
21211  FROM t1 RIGHT JOIN t2 ON t2.x>0
21212  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21213  RIGHT JOIN t4 ON t4.z>0
21214  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
21215  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21216} {
21217  10 110 210 310 110 10   -  - 310 10
21218  20 120 220 320 120 20   -  - 320 20
21219  30 130 230 330 130 30 230 30 330 30
21220  40 140 240 340 140 40   -  - 340 40
21221  50 150 250 350 150 50   -  - 350 50
21222  60 160 260 360 160 60 260 60 360 60
21223  70 170 270 370 170 70   -  - 370 70
21224  80 180 280 380 180 80   -  - 380 80
21225  90 190 290 390 190 90 290 90 390 90
21226}
21227do_execsql_test joinD-732 {
21228  SELECT t1.*, t2.*, t3.*, t4.*
21229  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
21230  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21231  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21232  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21233} {
21234  10 110 210 310 110 10   -  - 310 10
21235  20 120 220 320 120 20   -  - 320 20
21236  30 130 230 330 130 30 230 30 330 30
21237  40 140 240 340 140 40   -  - 340 40
21238  50 150 250 350 150 50   -  - 350 50
21239  60 160 260 360 160 60 260 60 360 60
21240  70 170 270 370 170 70   -  - 370 70
21241  80 180 280 380 180 80   -  - 380 80
21242  90 190 290 390 190 90 290 90 390 90
21243   -   -   -   -   -  -   -  - 300  0
21244   -   -   -   -   -  -   -  - 305  5
21245   -   -   -   -   -  -   -  - 315 15
21246   -   -   -   -   -  -   -  - 325 25
21247   -   -   -   -   -  -   -  - 335 35
21248   -   -   -   -   -  -   -  - 345 45
21249   -   -   -   -   -  -   -  - 355 55
21250   -   -   -   -   -  -   -  - 365 65
21251   -   -   -   -   -  -   -  - 375 75
21252   -   -   -   -   -  -   -  - 385 85
21253   -   -   -   -   -  -   -  - 395 95
21254}
21255do_execsql_test joinD-733 {
21256  SELECT t1.*, t2.*, t3.*, t4.*
21257  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21258  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
21259  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
21260  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21261} {
21262  10 110 210 310 110 10   -  - 310 10
21263  20 120 220 320 120 20   -  - 320 20
21264  30 130 230 330 130 30 230 30 330 30
21265  40 140 240 340 140 40   -  - 340 40
21266  50 150 250 350 150 50   -  - 350 50
21267  60 160 260 360 160 60 260 60 360 60
21268  70 170 270 370 170 70   -  - 370 70
21269  80 180 280 380 180 80   -  - 380 80
21270  90 190 290 390 190 90 290 90 390 90
21271   -   -   -   -   -  -   -  - 300  0
21272   -   -   -   -   -  -   -  - 305  5
21273   -   -   -   -   -  -   -  - 315 15
21274   -   -   -   -   -  -   -  - 325 25
21275   -   -   -   -   -  -   -  - 335 35
21276   -   -   -   -   -  -   -  - 345 45
21277   -   -   -   -   -  -   -  - 355 55
21278   -   -   -   -   -  -   -  - 365 65
21279   -   -   -   -   -  -   -  - 375 75
21280   -   -   -   -   -  -   -  - 385 85
21281   -   -   -   -   -  -   -  - 395 95
21282}
21283do_execsql_test joinD-734 {
21284  SELECT t1.*, t2.*, t3.*, t4.*
21285  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21286  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21287  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21288  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21289} {
21290   2 102 202 302 102  2   -  -   -  -
21291   4 104 204 304 104  4   -  -   -  -
21292   6 106 206 306 106  6 206  6   -  -
21293   8 108 208 308 108  8   -  -   -  -
21294  10 110 210 310 110 10   -  - 310 10
21295  12 112 212 312 112 12 212 12   -  -
21296  14 114 214 314 114 14   -  -   -  -
21297  16 116 216 316 116 16   -  -   -  -
21298  18 118 218 318 118 18 218 18   -  -
21299  20 120 220 320 120 20   -  - 320 20
21300  22 122 222 322 122 22   -  -   -  -
21301  24 124 224 324 124 24 224 24   -  -
21302  26 126 226 326 126 26   -  -   -  -
21303  28 128 228 328 128 28   -  -   -  -
21304  30 130 230 330 130 30 230 30 330 30
21305  32 132 232 332 132 32   -  -   -  -
21306  34 134 234 334 134 34   -  -   -  -
21307  36 136 236 336 136 36 236 36   -  -
21308  38 138 238 338 138 38   -  -   -  -
21309  40 140 240 340 140 40   -  - 340 40
21310  42 142 242 342 142 42 242 42   -  -
21311  44 144 244 344 144 44   -  -   -  -
21312  46 146 246 346 146 46   -  -   -  -
21313  48 148 248 348 148 48 248 48   -  -
21314  50 150 250 350 150 50   -  - 350 50
21315  52 152 252 352 152 52   -  -   -  -
21316  54 154 254 354 154 54 254 54   -  -
21317  56 156 256 356 156 56   -  -   -  -
21318  58 158 258 358 158 58   -  -   -  -
21319  60 160 260 360 160 60 260 60 360 60
21320  62 162 262 362 162 62   -  -   -  -
21321  64 164 264 364 164 64   -  -   -  -
21322  66 166 266 366 166 66 266 66   -  -
21323  68 168 268 368 168 68   -  -   -  -
21324  70 170 270 370 170 70   -  - 370 70
21325  72 172 272 372 172 72 272 72   -  -
21326  74 174 274 374 174 74   -  -   -  -
21327  76 176 276 376 176 76   -  -   -  -
21328  78 178 278 378 178 78 278 78   -  -
21329  80 180 280 380 180 80   -  - 380 80
21330  82 182 282 382 182 82   -  -   -  -
21331  84 184 284 384 184 84 284 84   -  -
21332  86 186 286 386 186 86   -  -   -  -
21333  88 188 288 388 188 88   -  -   -  -
21334  90 190 290 390 190 90 290 90 390 90
21335  92 192 292 392 192 92   -  -   -  -
21336  94 194 294 394 194 94   -  -   -  -
21337   -   -   -   - 100  0   -  -   -  -
21338   -   -   -   -   -  -   -  - 300  0
21339   -   -   -   -   -  -   -  - 305  5
21340   -   -   -   -   -  -   -  - 315 15
21341   -   -   -   -   -  -   -  - 325 25
21342   -   -   -   -   -  -   -  - 335 35
21343   -   -   -   -   -  -   -  - 345 45
21344   -   -   -   -   -  -   -  - 355 55
21345   -   -   -   -   -  -   -  - 365 65
21346   -   -   -   -   -  -   -  - 375 75
21347   -   -   -   -   -  -   -  - 385 85
21348   -   -   -   -   -  -   -  - 395 95
21349}
21350do_execsql_test joinD-735 {
21351  SELECT t1.*, t2.*, t3.*, t4.*
21352  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
21353  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21354  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21355  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21356} {
21357   2 102 202 302 102  2   -  -   -  -
21358   4 104 204 304 104  4   -  -   -  -
21359   6 106 206 306 106  6 206  6   -  -
21360   8 108 208 308 108  8   -  -   -  -
21361  10 110 210 310 110 10   -  - 310 10
21362  12 112 212 312 112 12 212 12   -  -
21363  14 114 214 314 114 14   -  -   -  -
21364  16 116 216 316 116 16   -  -   -  -
21365  18 118 218 318 118 18 218 18   -  -
21366  20 120 220 320 120 20   -  - 320 20
21367  22 122 222 322 122 22   -  -   -  -
21368  24 124 224 324 124 24 224 24   -  -
21369  26 126 226 326 126 26   -  -   -  -
21370  28 128 228 328 128 28   -  -   -  -
21371  30 130 230 330 130 30 230 30 330 30
21372  32 132 232 332 132 32   -  -   -  -
21373  34 134 234 334 134 34   -  -   -  -
21374  36 136 236 336 136 36 236 36   -  -
21375  38 138 238 338 138 38   -  -   -  -
21376  40 140 240 340 140 40   -  - 340 40
21377  42 142 242 342 142 42 242 42   -  -
21378  44 144 244 344 144 44   -  -   -  -
21379  46 146 246 346 146 46   -  -   -  -
21380  48 148 248 348 148 48 248 48   -  -
21381  50 150 250 350 150 50   -  - 350 50
21382  52 152 252 352 152 52   -  -   -  -
21383  54 154 254 354 154 54 254 54   -  -
21384  56 156 256 356 156 56   -  -   -  -
21385  58 158 258 358 158 58   -  -   -  -
21386  60 160 260 360 160 60 260 60 360 60
21387  62 162 262 362 162 62   -  -   -  -
21388  64 164 264 364 164 64   -  -   -  -
21389  66 166 266 366 166 66 266 66   -  -
21390  68 168 268 368 168 68   -  -   -  -
21391  70 170 270 370 170 70   -  - 370 70
21392  72 172 272 372 172 72 272 72   -  -
21393  74 174 274 374 174 74   -  -   -  -
21394  76 176 276 376 176 76   -  -   -  -
21395  78 178 278 378 178 78 278 78   -  -
21396  80 180 280 380 180 80   -  - 380 80
21397  82 182 282 382 182 82   -  -   -  -
21398  84 184 284 384 184 84 284 84   -  -
21399  86 186 286 386 186 86   -  -   -  -
21400  88 188 288 388 188 88   -  -   -  -
21401  90 190 290 390 190 90 290 90 390 90
21402  92 192 292 392 192 92   -  -   -  -
21403  94 194 294 394 194 94   -  -   -  -
21404   -   -   -   - 100  0   -  -   -  -
21405   -   -   -   -   -  -   -  - 300  0
21406   -   -   -   -   -  -   -  - 305  5
21407   -   -   -   -   -  -   -  - 315 15
21408   -   -   -   -   -  -   -  - 325 25
21409   -   -   -   -   -  -   -  - 335 35
21410   -   -   -   -   -  -   -  - 345 45
21411   -   -   -   -   -  -   -  - 355 55
21412   -   -   -   -   -  -   -  - 365 65
21413   -   -   -   -   -  -   -  - 375 75
21414   -   -   -   -   -  -   -  - 385 85
21415   -   -   -   -   -  -   -  - 395 95
21416}
21417do_execsql_test joinD-736 {
21418  SELECT t1.*, t2.*, t3.*, t4.*
21419  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21420  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21421  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21422  WHERE t2.x>0
21423  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21424} {
21425   2 102 202 302 102  2   -  -   -  -
21426   4 104 204 304 104  4   -  -   -  -
21427   6 106 206 306 106  6 206  6   -  -
21428   8 108 208 308 108  8   -  -   -  -
21429  10 110 210 310 110 10   -  - 310 10
21430  12 112 212 312 112 12 212 12   -  -
21431  14 114 214 314 114 14   -  -   -  -
21432  16 116 216 316 116 16   -  -   -  -
21433  18 118 218 318 118 18 218 18   -  -
21434  20 120 220 320 120 20   -  - 320 20
21435  22 122 222 322 122 22   -  -   -  -
21436  24 124 224 324 124 24 224 24   -  -
21437  26 126 226 326 126 26   -  -   -  -
21438  28 128 228 328 128 28   -  -   -  -
21439  30 130 230 330 130 30 230 30 330 30
21440  32 132 232 332 132 32   -  -   -  -
21441  34 134 234 334 134 34   -  -   -  -
21442  36 136 236 336 136 36 236 36   -  -
21443  38 138 238 338 138 38   -  -   -  -
21444  40 140 240 340 140 40   -  - 340 40
21445  42 142 242 342 142 42 242 42   -  -
21446  44 144 244 344 144 44   -  -   -  -
21447  46 146 246 346 146 46   -  -   -  -
21448  48 148 248 348 148 48 248 48   -  -
21449  50 150 250 350 150 50   -  - 350 50
21450  52 152 252 352 152 52   -  -   -  -
21451  54 154 254 354 154 54 254 54   -  -
21452  56 156 256 356 156 56   -  -   -  -
21453  58 158 258 358 158 58   -  -   -  -
21454  60 160 260 360 160 60 260 60 360 60
21455  62 162 262 362 162 62   -  -   -  -
21456  64 164 264 364 164 64   -  -   -  -
21457  66 166 266 366 166 66 266 66   -  -
21458  68 168 268 368 168 68   -  -   -  -
21459  70 170 270 370 170 70   -  - 370 70
21460  72 172 272 372 172 72 272 72   -  -
21461  74 174 274 374 174 74   -  -   -  -
21462  76 176 276 376 176 76   -  -   -  -
21463  78 178 278 378 178 78 278 78   -  -
21464  80 180 280 380 180 80   -  - 380 80
21465  82 182 282 382 182 82   -  -   -  -
21466  84 184 284 384 184 84 284 84   -  -
21467  86 186 286 386 186 86   -  -   -  -
21468  88 188 288 388 188 88   -  -   -  -
21469  90 190 290 390 190 90 290 90 390 90
21470  92 192 292 392 192 92   -  -   -  -
21471  94 194 294 394 194 94   -  -   -  -
21472}
21473do_execsql_test joinD-737 {
21474  SELECT t1.*, t2.*, t3.*, t4.*
21475  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21476  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21477  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21478  WHERE (t2.x>0 OR t2.x IS NULL)
21479  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21480} {
21481   2 102 202 302 102  2   -  -   -  -
21482   4 104 204 304 104  4   -  -   -  -
21483   6 106 206 306 106  6 206  6   -  -
21484   8 108 208 308 108  8   -  -   -  -
21485  10 110 210 310 110 10   -  - 310 10
21486  12 112 212 312 112 12 212 12   -  -
21487  14 114 214 314 114 14   -  -   -  -
21488  16 116 216 316 116 16   -  -   -  -
21489  18 118 218 318 118 18 218 18   -  -
21490  20 120 220 320 120 20   -  - 320 20
21491  22 122 222 322 122 22   -  -   -  -
21492  24 124 224 324 124 24 224 24   -  -
21493  26 126 226 326 126 26   -  -   -  -
21494  28 128 228 328 128 28   -  -   -  -
21495  30 130 230 330 130 30 230 30 330 30
21496  32 132 232 332 132 32   -  -   -  -
21497  34 134 234 334 134 34   -  -   -  -
21498  36 136 236 336 136 36 236 36   -  -
21499  38 138 238 338 138 38   -  -   -  -
21500  40 140 240 340 140 40   -  - 340 40
21501  42 142 242 342 142 42 242 42   -  -
21502  44 144 244 344 144 44   -  -   -  -
21503  46 146 246 346 146 46   -  -   -  -
21504  48 148 248 348 148 48 248 48   -  -
21505  50 150 250 350 150 50   -  - 350 50
21506  52 152 252 352 152 52   -  -   -  -
21507  54 154 254 354 154 54 254 54   -  -
21508  56 156 256 356 156 56   -  -   -  -
21509  58 158 258 358 158 58   -  -   -  -
21510  60 160 260 360 160 60 260 60 360 60
21511  62 162 262 362 162 62   -  -   -  -
21512  64 164 264 364 164 64   -  -   -  -
21513  66 166 266 366 166 66 266 66   -  -
21514  68 168 268 368 168 68   -  -   -  -
21515  70 170 270 370 170 70   -  - 370 70
21516  72 172 272 372 172 72 272 72   -  -
21517  74 174 274 374 174 74   -  -   -  -
21518  76 176 276 376 176 76   -  -   -  -
21519  78 178 278 378 178 78 278 78   -  -
21520  80 180 280 380 180 80   -  - 380 80
21521  82 182 282 382 182 82   -  -   -  -
21522  84 184 284 384 184 84 284 84   -  -
21523  86 186 286 386 186 86   -  -   -  -
21524  88 188 288 388 188 88   -  -   -  -
21525  90 190 290 390 190 90 290 90 390 90
21526  92 192 292 392 192 92   -  -   -  -
21527  94 194 294 394 194 94   -  -   -  -
21528   -   -   -   -   -  -   -  - 300  0
21529   -   -   -   -   -  -   -  - 305  5
21530   -   -   -   -   -  -   -  - 315 15
21531   -   -   -   -   -  -   -  - 325 25
21532   -   -   -   -   -  -   -  - 335 35
21533   -   -   -   -   -  -   -  - 345 45
21534   -   -   -   -   -  -   -  - 355 55
21535   -   -   -   -   -  -   -  - 365 65
21536   -   -   -   -   -  -   -  - 375 75
21537   -   -   -   -   -  -   -  - 385 85
21538   -   -   -   -   -  -   -  - 395 95
21539}
21540do_execsql_test joinD-738 {
21541  SELECT t1.*, t2.*, t3.*, t4.*
21542  FROM t1 RIGHT JOIN t2 ON true
21543  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21544  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21545  WHERE t1.b=t2.b AND t2.x>0
21546  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21547} {
21548   2 102 202 302 102  2   -  -   -  -
21549   4 104 204 304 104  4   -  -   -  -
21550   6 106 206 306 106  6 206  6   -  -
21551   8 108 208 308 108  8   -  -   -  -
21552  10 110 210 310 110 10   -  - 310 10
21553  12 112 212 312 112 12 212 12   -  -
21554  14 114 214 314 114 14   -  -   -  -
21555  16 116 216 316 116 16   -  -   -  -
21556  18 118 218 318 118 18 218 18   -  -
21557  20 120 220 320 120 20   -  - 320 20
21558  22 122 222 322 122 22   -  -   -  -
21559  24 124 224 324 124 24 224 24   -  -
21560  26 126 226 326 126 26   -  -   -  -
21561  28 128 228 328 128 28   -  -   -  -
21562  30 130 230 330 130 30 230 30 330 30
21563  32 132 232 332 132 32   -  -   -  -
21564  34 134 234 334 134 34   -  -   -  -
21565  36 136 236 336 136 36 236 36   -  -
21566  38 138 238 338 138 38   -  -   -  -
21567  40 140 240 340 140 40   -  - 340 40
21568  42 142 242 342 142 42 242 42   -  -
21569  44 144 244 344 144 44   -  -   -  -
21570  46 146 246 346 146 46   -  -   -  -
21571  48 148 248 348 148 48 248 48   -  -
21572  50 150 250 350 150 50   -  - 350 50
21573  52 152 252 352 152 52   -  -   -  -
21574  54 154 254 354 154 54 254 54   -  -
21575  56 156 256 356 156 56   -  -   -  -
21576  58 158 258 358 158 58   -  -   -  -
21577  60 160 260 360 160 60 260 60 360 60
21578  62 162 262 362 162 62   -  -   -  -
21579  64 164 264 364 164 64   -  -   -  -
21580  66 166 266 366 166 66 266 66   -  -
21581  68 168 268 368 168 68   -  -   -  -
21582  70 170 270 370 170 70   -  - 370 70
21583  72 172 272 372 172 72 272 72   -  -
21584  74 174 274 374 174 74   -  -   -  -
21585  76 176 276 376 176 76   -  -   -  -
21586  78 178 278 378 178 78 278 78   -  -
21587  80 180 280 380 180 80   -  - 380 80
21588  82 182 282 382 182 82   -  -   -  -
21589  84 184 284 384 184 84 284 84   -  -
21590  86 186 286 386 186 86   -  -   -  -
21591  88 188 288 388 188 88   -  -   -  -
21592  90 190 290 390 190 90 290 90 390 90
21593  92 192 292 392 192 92   -  -   -  -
21594  94 194 294 394 194 94   -  -   -  -
21595}
21596do_execsql_test joinD-739 {
21597  SELECT t1.*, t2.*, t3.*, t4.*
21598  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21599  LEFT JOIN t3 ON t1.c=t3.c
21600  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21601  WHERE t3.y>0
21602  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21603} {
21604   6 106 206 306 106  6 206  6   -  -
21605  12 112 212 312 112 12 212 12   -  -
21606  18 118 218 318 118 18 218 18   -  -
21607  24 124 224 324 124 24 224 24   -  -
21608  30 130 230 330 130 30 230 30 330 30
21609  36 136 236 336 136 36 236 36   -  -
21610  42 142 242 342 142 42 242 42   -  -
21611  48 148 248 348 148 48 248 48   -  -
21612  54 154 254 354 154 54 254 54   -  -
21613  60 160 260 360 160 60 260 60 360 60
21614  66 166 266 366 166 66 266 66   -  -
21615  72 172 272 372 172 72 272 72   -  -
21616  78 178 278 378 178 78 278 78   -  -
21617  84 184 284 384 184 84 284 84   -  -
21618  90 190 290 390 190 90 290 90 390 90
21619}
21620do_execsql_test joinD-740 {
21621  SELECT t1.*, t2.*, t3.*, t4.*
21622  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21623  LEFT JOIN t3 ON t1.c=t3.c
21624  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21625  WHERE t3.y>0 OR t3.y IS NULL
21626  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21627} {
21628   2 102 202 302 102  2   -  -   -  -
21629   4 104 204 304 104  4   -  -   -  -
21630   6 106 206 306 106  6 206  6   -  -
21631   8 108 208 308 108  8   -  -   -  -
21632  10 110 210 310 110 10   -  - 310 10
21633  12 112 212 312 112 12 212 12   -  -
21634  14 114 214 314 114 14   -  -   -  -
21635  16 116 216 316 116 16   -  -   -  -
21636  18 118 218 318 118 18 218 18   -  -
21637  20 120 220 320 120 20   -  - 320 20
21638  22 122 222 322 122 22   -  -   -  -
21639  24 124 224 324 124 24 224 24   -  -
21640  26 126 226 326 126 26   -  -   -  -
21641  28 128 228 328 128 28   -  -   -  -
21642  30 130 230 330 130 30 230 30 330 30
21643  32 132 232 332 132 32   -  -   -  -
21644  34 134 234 334 134 34   -  -   -  -
21645  36 136 236 336 136 36 236 36   -  -
21646  38 138 238 338 138 38   -  -   -  -
21647  40 140 240 340 140 40   -  - 340 40
21648  42 142 242 342 142 42 242 42   -  -
21649  44 144 244 344 144 44   -  -   -  -
21650  46 146 246 346 146 46   -  -   -  -
21651  48 148 248 348 148 48 248 48   -  -
21652  50 150 250 350 150 50   -  - 350 50
21653  52 152 252 352 152 52   -  -   -  -
21654  54 154 254 354 154 54 254 54   -  -
21655  56 156 256 356 156 56   -  -   -  -
21656  58 158 258 358 158 58   -  -   -  -
21657  60 160 260 360 160 60 260 60 360 60
21658  62 162 262 362 162 62   -  -   -  -
21659  64 164 264 364 164 64   -  -   -  -
21660  66 166 266 366 166 66 266 66   -  -
21661  68 168 268 368 168 68   -  -   -  -
21662  70 170 270 370 170 70   -  - 370 70
21663  72 172 272 372 172 72 272 72   -  -
21664  74 174 274 374 174 74   -  -   -  -
21665  76 176 276 376 176 76   -  -   -  -
21666  78 178 278 378 178 78 278 78   -  -
21667  80 180 280 380 180 80   -  - 380 80
21668  82 182 282 382 182 82   -  -   -  -
21669  84 184 284 384 184 84 284 84   -  -
21670  86 186 286 386 186 86   -  -   -  -
21671  88 188 288 388 188 88   -  -   -  -
21672  90 190 290 390 190 90 290 90 390 90
21673  92 192 292 392 192 92   -  -   -  -
21674  94 194 294 394 194 94   -  -   -  -
21675   -   -   -   - 100  0   -  -   -  -
21676   -   -   -   -   -  -   -  - 300  0
21677   -   -   -   -   -  -   -  - 305  5
21678   -   -   -   -   -  -   -  - 315 15
21679   -   -   -   -   -  -   -  - 325 25
21680   -   -   -   -   -  -   -  - 335 35
21681   -   -   -   -   -  -   -  - 345 45
21682   -   -   -   -   -  -   -  - 355 55
21683   -   -   -   -   -  -   -  - 365 65
21684   -   -   -   -   -  -   -  - 375 75
21685   -   -   -   -   -  -   -  - 385 85
21686   -   -   -   -   -  -   -  - 395 95
21687}
21688do_execsql_test joinD-741 {
21689  SELECT t1.*, t2.*, t3.*, t4.*
21690  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21691  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21692  FULL JOIN t4 ON t1.d=t4.d
21693  WHERE t4.z>0
21694  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21695} {
21696  10 110 210 310 110 10   -  - 310 10
21697  20 120 220 320 120 20   -  - 320 20
21698  30 130 230 330 130 30 230 30 330 30
21699  40 140 240 340 140 40   -  - 340 40
21700  50 150 250 350 150 50   -  - 350 50
21701  60 160 260 360 160 60 260 60 360 60
21702  70 170 270 370 170 70   -  - 370 70
21703  80 180 280 380 180 80   -  - 380 80
21704  90 190 290 390 190 90 290 90 390 90
21705   -   -   -   -   -  -   -  - 305  5
21706   -   -   -   -   -  -   -  - 315 15
21707   -   -   -   -   -  -   -  - 325 25
21708   -   -   -   -   -  -   -  - 335 35
21709   -   -   -   -   -  -   -  - 345 45
21710   -   -   -   -   -  -   -  - 355 55
21711   -   -   -   -   -  -   -  - 365 65
21712   -   -   -   -   -  -   -  - 375 75
21713   -   -   -   -   -  -   -  - 385 85
21714   -   -   -   -   -  -   -  - 395 95
21715}
21716do_execsql_test joinD-742 {
21717  SELECT t1.*, t2.*, t3.*, t4.*
21718  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21719  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21720  FULL JOIN t4 ON t1.d=t4.d
21721  WHERE t4.z IS NULL OR t4.z>0
21722  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21723} {
21724   2 102 202 302 102  2   -  -   -  -
21725   4 104 204 304 104  4   -  -   -  -
21726   6 106 206 306 106  6 206  6   -  -
21727   8 108 208 308 108  8   -  -   -  -
21728  10 110 210 310 110 10   -  - 310 10
21729  12 112 212 312 112 12 212 12   -  -
21730  14 114 214 314 114 14   -  -   -  -
21731  16 116 216 316 116 16   -  -   -  -
21732  18 118 218 318 118 18 218 18   -  -
21733  20 120 220 320 120 20   -  - 320 20
21734  22 122 222 322 122 22   -  -   -  -
21735  24 124 224 324 124 24 224 24   -  -
21736  26 126 226 326 126 26   -  -   -  -
21737  28 128 228 328 128 28   -  -   -  -
21738  30 130 230 330 130 30 230 30 330 30
21739  32 132 232 332 132 32   -  -   -  -
21740  34 134 234 334 134 34   -  -   -  -
21741  36 136 236 336 136 36 236 36   -  -
21742  38 138 238 338 138 38   -  -   -  -
21743  40 140 240 340 140 40   -  - 340 40
21744  42 142 242 342 142 42 242 42   -  -
21745  44 144 244 344 144 44   -  -   -  -
21746  46 146 246 346 146 46   -  -   -  -
21747  48 148 248 348 148 48 248 48   -  -
21748  50 150 250 350 150 50   -  - 350 50
21749  52 152 252 352 152 52   -  -   -  -
21750  54 154 254 354 154 54 254 54   -  -
21751  56 156 256 356 156 56   -  -   -  -
21752  58 158 258 358 158 58   -  -   -  -
21753  60 160 260 360 160 60 260 60 360 60
21754  62 162 262 362 162 62   -  -   -  -
21755  64 164 264 364 164 64   -  -   -  -
21756  66 166 266 366 166 66 266 66   -  -
21757  68 168 268 368 168 68   -  -   -  -
21758  70 170 270 370 170 70   -  - 370 70
21759  72 172 272 372 172 72 272 72   -  -
21760  74 174 274 374 174 74   -  -   -  -
21761  76 176 276 376 176 76   -  -   -  -
21762  78 178 278 378 178 78 278 78   -  -
21763  80 180 280 380 180 80   -  - 380 80
21764  82 182 282 382 182 82   -  -   -  -
21765  84 184 284 384 184 84 284 84   -  -
21766  86 186 286 386 186 86   -  -   -  -
21767  88 188 288 388 188 88   -  -   -  -
21768  90 190 290 390 190 90 290 90 390 90
21769  92 192 292 392 192 92   -  -   -  -
21770  94 194 294 394 194 94   -  -   -  -
21771   -   -   -   - 100  0   -  -   -  -
21772   -   -   -   -   -  -   -  - 305  5
21773   -   -   -   -   -  -   -  - 315 15
21774   -   -   -   -   -  -   -  - 325 25
21775   -   -   -   -   -  -   -  - 335 35
21776   -   -   -   -   -  -   -  - 345 45
21777   -   -   -   -   -  -   -  - 355 55
21778   -   -   -   -   -  -   -  - 365 65
21779   -   -   -   -   -  -   -  - 375 75
21780   -   -   -   -   -  -   -  - 385 85
21781   -   -   -   -   -  -   -  - 395 95
21782}
21783do_execsql_test joinD-743 {
21784  SELECT t1.*, t2.*, t3.*, t4.*
21785  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21786  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
21787  FULL JOIN t4 ON t1.d=t4.d
21788  WHERE t2.x>0 AND t4.z>0
21789  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21790} {
21791  10 110 210 310 110 10   -  - 310 10
21792  20 120 220 320 120 20   -  - 320 20
21793  30 130 230 330 130 30 230 30 330 30
21794  40 140 240 340 140 40   -  - 340 40
21795  50 150 250 350 150 50   -  - 350 50
21796  60 160 260 360 160 60 260 60 360 60
21797  70 170 270 370 170 70   -  - 370 70
21798  80 180 280 380 180 80   -  - 380 80
21799  90 190 290 390 190 90 290 90 390 90
21800}
21801do_execsql_test joinD-744 {
21802  SELECT t1.*, t2.*, t3.*, t4.*
21803  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
21804  LEFT JOIN t3 ON t1.c=t3.c
21805  FULL JOIN t4 ON t1.d=t4.d
21806  WHERE t4.z>0 AND t3.y>0
21807  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21808} {
21809  30 130 230 330 130 30 230 30 330 30
21810  60 160 260 360 160 60 260 60 360 60
21811  90 190 290 390 190 90 290 90 390 90
21812}
21813do_execsql_test joinD-745 {
21814  SELECT t1.*, t2.*, t3.*, t4.*
21815  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21816  LEFT JOIN t3 ON t1.c=t3.c
21817  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
21818  WHERE t2.x>0 AND t3.y>0
21819  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21820} {
21821   6 106 206 306 106  6 206  6   -  -
21822  12 112 212 312 112 12 212 12   -  -
21823  18 118 218 318 118 18 218 18   -  -
21824  24 124 224 324 124 24 224 24   -  -
21825  30 130 230 330 130 30 230 30 330 30
21826  36 136 236 336 136 36 236 36   -  -
21827  42 142 242 342 142 42 242 42   -  -
21828  48 148 248 348 148 48 248 48   -  -
21829  54 154 254 354 154 54 254 54   -  -
21830  60 160 260 360 160 60 260 60 360 60
21831  66 166 266 366 166 66 266 66   -  -
21832  72 172 272 372 172 72 272 72   -  -
21833  78 178 278 378 178 78 278 78   -  -
21834  84 184 284 384 184 84 284 84   -  -
21835  90 190 290 390 190 90 290 90 390 90
21836}
21837do_execsql_test joinD-746 {
21838  SELECT t1.*, t2.*, t3.*, t4.*
21839  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
21840  LEFT JOIN t3 ON t1.c=t3.c
21841  FULL JOIN t4 ON t1.d=t4.d
21842  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
21843  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21844} {
21845  30 130 230 330 130 30 230 30 330 30
21846  60 160 260 360 160 60 260 60 360 60
21847  90 190 290 390 190 90 290 90 390 90
21848}
21849do_execsql_test joinD-747 {
21850  SELECT t1.*, t2.*, t3.*, t4.*
21851  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
21852  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21853  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
21854  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21855} {
21856   2 102 202 302 102  2   -  -   -  -
21857   4 104 204 304 104  4   -  -   -  -
21858   6 106 206 306 106  6 206  6   -  -
21859   8 108 208 308 108  8   -  -   -  -
21860  10 110 210 310 110 10   -  - 310 10
21861  12 112 212 312 112 12 212 12   -  -
21862  14 114 214 314 114 14   -  -   -  -
21863  16 116 216 316 116 16   -  -   -  -
21864  18 118 218 318 118 18 218 18   -  -
21865  20 120 220 320 120 20   -  - 320 20
21866  22 122 222 322 122 22   -  -   -  -
21867  24 124 224 324 124 24 224 24   -  -
21868  26 126 226 326 126 26   -  -   -  -
21869  28 128 228 328 128 28   -  -   -  -
21870  30 130 230 330 130 30 230 30 330 30
21871  32 132 232 332 132 32   -  -   -  -
21872  34 134 234 334 134 34   -  -   -  -
21873  36 136 236 336 136 36 236 36   -  -
21874  38 138 238 338 138 38   -  -   -  -
21875  40 140 240 340 140 40   -  - 340 40
21876  42 142 242 342 142 42 242 42   -  -
21877  44 144 244 344 144 44   -  -   -  -
21878  46 146 246 346 146 46   -  -   -  -
21879  48 148 248 348 148 48 248 48   -  -
21880  50 150 250 350 150 50   -  - 350 50
21881  52 152 252 352 152 52   -  -   -  -
21882  54 154 254 354 154 54 254 54   -  -
21883  56 156 256 356 156 56   -  -   -  -
21884  58 158 258 358 158 58   -  -   -  -
21885  60 160 260 360 160 60 260 60 360 60
21886  62 162 262 362 162 62   -  -   -  -
21887  64 164 264 364 164 64   -  -   -  -
21888  66 166 266 366 166 66 266 66   -  -
21889  68 168 268 368 168 68   -  -   -  -
21890  70 170 270 370 170 70   -  - 370 70
21891  72 172 272 372 172 72 272 72   -  -
21892  74 174 274 374 174 74   -  -   -  -
21893  76 176 276 376 176 76   -  -   -  -
21894  78 178 278 378 178 78 278 78   -  -
21895  80 180 280 380 180 80   -  - 380 80
21896  82 182 282 382 182 82   -  -   -  -
21897  84 184 284 384 184 84 284 84   -  -
21898  86 186 286 386 186 86   -  -   -  -
21899  88 188 288 388 188 88   -  -   -  -
21900  90 190 290 390 190 90 290 90 390 90
21901  92 192 292 392 192 92   -  -   -  -
21902  94 194 294 394 194 94   -  -   -  -
21903   -   -   -   - 100  0   -  -   -  -
21904   -   -   -   -   -  -   -  - 300  0
21905   -   -   -   -   -  -   -  - 305  5
21906   -   -   -   -   -  -   -  - 315 15
21907   -   -   -   -   -  -   -  - 325 25
21908   -   -   -   -   -  -   -  - 335 35
21909   -   -   -   -   -  -   -  - 345 45
21910   -   -   -   -   -  -   -  - 355 55
21911   -   -   -   -   -  -   -  - 365 65
21912   -   -   -   -   -  -   -  - 375 75
21913   -   -   -   -   -  -   -  - 385 85
21914   -   -   -   -   -  -   -  - 395 95
21915}
21916do_execsql_test joinD-748 {
21917  SELECT t1.*, t2.*, t3.*, t4.*
21918  FROM t1 RIGHT JOIN t2 ON t2.x>0
21919  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
21920  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
21921  WHERE t1.b IS NOT DISTINCT FROM t2.b
21922  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21923} {
21924   2 102 202 302 102  2   -  -   -  -
21925   4 104 204 304 104  4   -  -   -  -
21926   6 106 206 306 106  6 206  6   -  -
21927   8 108 208 308 108  8   -  -   -  -
21928  10 110 210 310 110 10   -  - 310 10
21929  12 112 212 312 112 12 212 12   -  -
21930  14 114 214 314 114 14   -  -   -  -
21931  16 116 216 316 116 16   -  -   -  -
21932  18 118 218 318 118 18 218 18   -  -
21933  20 120 220 320 120 20   -  - 320 20
21934  22 122 222 322 122 22   -  -   -  -
21935  24 124 224 324 124 24 224 24   -  -
21936  26 126 226 326 126 26   -  -   -  -
21937  28 128 228 328 128 28   -  -   -  -
21938  30 130 230 330 130 30 230 30 330 30
21939  32 132 232 332 132 32   -  -   -  -
21940  34 134 234 334 134 34   -  -   -  -
21941  36 136 236 336 136 36 236 36   -  -
21942  38 138 238 338 138 38   -  -   -  -
21943  40 140 240 340 140 40   -  - 340 40
21944  42 142 242 342 142 42 242 42   -  -
21945  44 144 244 344 144 44   -  -   -  -
21946  46 146 246 346 146 46   -  -   -  -
21947  48 148 248 348 148 48 248 48   -  -
21948  50 150 250 350 150 50   -  - 350 50
21949  52 152 252 352 152 52   -  -   -  -
21950  54 154 254 354 154 54 254 54   -  -
21951  56 156 256 356 156 56   -  -   -  -
21952  58 158 258 358 158 58   -  -   -  -
21953  60 160 260 360 160 60 260 60 360 60
21954  62 162 262 362 162 62   -  -   -  -
21955  64 164 264 364 164 64   -  -   -  -
21956  66 166 266 366 166 66 266 66   -  -
21957  68 168 268 368 168 68   -  -   -  -
21958  70 170 270 370 170 70   -  - 370 70
21959  72 172 272 372 172 72 272 72   -  -
21960  74 174 274 374 174 74   -  -   -  -
21961  76 176 276 376 176 76   -  -   -  -
21962  78 178 278 378 178 78 278 78   -  -
21963  80 180 280 380 180 80   -  - 380 80
21964  82 182 282 382 182 82   -  -   -  -
21965  84 184 284 384 184 84 284 84   -  -
21966  86 186 286 386 186 86   -  -   -  -
21967  88 188 288 388 188 88   -  -   -  -
21968  90 190 290 390 190 90 290 90 390 90
21969  92 192 292 392 192 92   -  -   -  -
21970  94 194 294 394 194 94   -  -   -  -
21971   -   -   -   -   -  -   -  - 300  0
21972}
21973do_execsql_test joinD-749 {
21974  SELECT t1.*, t2.*, t3.*, t4.*
21975  FROM t1 RIGHT JOIN t2 ON t2.x>0
21976  LEFT JOIN t3 ON t3.y>0
21977  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
21978  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
21979  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
21980} {
21981   6 106 206 306 106  6 206  6   -  -
21982  12 112 212 312 112 12 212 12   -  -
21983  18 118 218 318 118 18 218 18   -  -
21984  24 124 224 324 124 24 224 24   -  -
21985  30 130 230 330 130 30 230 30 330 30
21986  36 136 236 336 136 36 236 36   -  -
21987  42 142 242 342 142 42 242 42   -  -
21988  48 148 248 348 148 48 248 48   -  -
21989  54 154 254 354 154 54 254 54   -  -
21990  60 160 260 360 160 60 260 60 360 60
21991  66 166 266 366 166 66 266 66   -  -
21992  72 172 272 372 172 72 272 72   -  -
21993  78 178 278 378 178 78 278 78   -  -
21994  84 184 284 384 184 84 284 84   -  -
21995  90 190 290 390 190 90 290 90 390 90
21996   -   -   -   -   -  -   -  - 300  0
21997}
21998do_execsql_test joinD-750 {
21999  SELECT t1.*, t2.*, t3.*, t4.*
22000  FROM t1 RIGHT JOIN t2 ON t2.x>0
22001  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22002  FULL JOIN t4 ON t4.z>0
22003  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
22004  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22005} {
22006  10 110 210 310 110 10   -  - 310 10
22007  20 120 220 320 120 20   -  - 320 20
22008  30 130 230 330 130 30 230 30 330 30
22009  40 140 240 340 140 40   -  - 340 40
22010  50 150 250 350 150 50   -  - 350 50
22011  60 160 260 360 160 60 260 60 360 60
22012  70 170 270 370 170 70   -  - 370 70
22013  80 180 280 380 180 80   -  - 380 80
22014  90 190 290 390 190 90 290 90 390 90
22015}
22016do_execsql_test joinD-751 {
22017  SELECT t1.*, t2.*, t3.*, t4.*
22018  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
22019  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
22020  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
22021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22022} {
22023   2 102 202 302 102  2   -  -   -  -
22024   4 104 204 304 104  4   -  -   -  -
22025   6 106 206 306 106  6 206  6   -  -
22026   8 108 208 308 108  8   -  -   -  -
22027  10 110 210 310 110 10   -  - 310 10
22028  12 112 212 312 112 12 212 12   -  -
22029  14 114 214 314 114 14   -  -   -  -
22030  16 116 216 316 116 16   -  -   -  -
22031  18 118 218 318 118 18 218 18   -  -
22032  20 120 220 320 120 20   -  - 320 20
22033  22 122 222 322 122 22   -  -   -  -
22034  24 124 224 324 124 24 224 24   -  -
22035  26 126 226 326 126 26   -  -   -  -
22036  28 128 228 328 128 28   -  -   -  -
22037  30 130 230 330 130 30 230 30 330 30
22038  32 132 232 332 132 32   -  -   -  -
22039  34 134 234 334 134 34   -  -   -  -
22040  36 136 236 336 136 36 236 36   -  -
22041  38 138 238 338 138 38   -  -   -  -
22042  40 140 240 340 140 40   -  - 340 40
22043  42 142 242 342 142 42 242 42   -  -
22044  44 144 244 344 144 44   -  -   -  -
22045  46 146 246 346 146 46   -  -   -  -
22046  48 148 248 348 148 48 248 48   -  -
22047  50 150 250 350 150 50   -  - 350 50
22048  52 152 252 352 152 52   -  -   -  -
22049  54 154 254 354 154 54 254 54   -  -
22050  56 156 256 356 156 56   -  -   -  -
22051  58 158 258 358 158 58   -  -   -  -
22052  60 160 260 360 160 60 260 60 360 60
22053  62 162 262 362 162 62   -  -   -  -
22054  64 164 264 364 164 64   -  -   -  -
22055  66 166 266 366 166 66 266 66   -  -
22056  68 168 268 368 168 68   -  -   -  -
22057  70 170 270 370 170 70   -  - 370 70
22058  72 172 272 372 172 72 272 72   -  -
22059  74 174 274 374 174 74   -  -   -  -
22060  76 176 276 376 176 76   -  -   -  -
22061  78 178 278 378 178 78 278 78   -  -
22062  80 180 280 380 180 80   -  - 380 80
22063  82 182 282 382 182 82   -  -   -  -
22064  84 184 284 384 184 84 284 84   -  -
22065  86 186 286 386 186 86   -  -   -  -
22066  88 188 288 388 188 88   -  -   -  -
22067  90 190 290 390 190 90 290 90 390 90
22068  92 192 292 392 192 92   -  -   -  -
22069  94 194 294 394 194 94   -  -   -  -
22070   -   -   -   - 100  0   -  -   -  -
22071   -   -   -   -   -  -   -  - 300  0
22072   -   -   -   -   -  -   -  - 305  5
22073   -   -   -   -   -  -   -  - 315 15
22074   -   -   -   -   -  -   -  - 325 25
22075   -   -   -   -   -  -   -  - 335 35
22076   -   -   -   -   -  -   -  - 345 45
22077   -   -   -   -   -  -   -  - 355 55
22078   -   -   -   -   -  -   -  - 365 65
22079   -   -   -   -   -  -   -  - 375 75
22080   -   -   -   -   -  -   -  - 385 85
22081   -   -   -   -   -  -   -  - 395 95
22082}
22083do_execsql_test joinD-752 {
22084  SELECT t1.*, t2.*, t3.*, t4.*
22085  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22086  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
22087  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
22088  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22089} {
22090   2 102 202 302 102  2   -  -   -  -
22091   4 104 204 304 104  4   -  -   -  -
22092   6 106 206 306 106  6 206  6   -  -
22093   8 108 208 308 108  8   -  -   -  -
22094  10 110 210 310 110 10   -  - 310 10
22095  12 112 212 312 112 12 212 12   -  -
22096  14 114 214 314 114 14   -  -   -  -
22097  16 116 216 316 116 16   -  -   -  -
22098  18 118 218 318 118 18 218 18   -  -
22099  20 120 220 320 120 20   -  - 320 20
22100  22 122 222 322 122 22   -  -   -  -
22101  24 124 224 324 124 24 224 24   -  -
22102  26 126 226 326 126 26   -  -   -  -
22103  28 128 228 328 128 28   -  -   -  -
22104  30 130 230 330 130 30 230 30 330 30
22105  32 132 232 332 132 32   -  -   -  -
22106  34 134 234 334 134 34   -  -   -  -
22107  36 136 236 336 136 36 236 36   -  -
22108  38 138 238 338 138 38   -  -   -  -
22109  40 140 240 340 140 40   -  - 340 40
22110  42 142 242 342 142 42 242 42   -  -
22111  44 144 244 344 144 44   -  -   -  -
22112  46 146 246 346 146 46   -  -   -  -
22113  48 148 248 348 148 48 248 48   -  -
22114  50 150 250 350 150 50   -  - 350 50
22115  52 152 252 352 152 52   -  -   -  -
22116  54 154 254 354 154 54 254 54   -  -
22117  56 156 256 356 156 56   -  -   -  -
22118  58 158 258 358 158 58   -  -   -  -
22119  60 160 260 360 160 60 260 60 360 60
22120  62 162 262 362 162 62   -  -   -  -
22121  64 164 264 364 164 64   -  -   -  -
22122  66 166 266 366 166 66 266 66   -  -
22123  68 168 268 368 168 68   -  -   -  -
22124  70 170 270 370 170 70   -  - 370 70
22125  72 172 272 372 172 72 272 72   -  -
22126  74 174 274 374 174 74   -  -   -  -
22127  76 176 276 376 176 76   -  -   -  -
22128  78 178 278 378 178 78 278 78   -  -
22129  80 180 280 380 180 80   -  - 380 80
22130  82 182 282 382 182 82   -  -   -  -
22131  84 184 284 384 184 84 284 84   -  -
22132  86 186 286 386 186 86   -  -   -  -
22133  88 188 288 388 188 88   -  -   -  -
22134  90 190 290 390 190 90 290 90 390 90
22135  92 192 292 392 192 92   -  -   -  -
22136  94 194 294 394 194 94   -  -   -  -
22137   -   -   -   - 100  0   -  -   -  -
22138   -   -   -   -   -  -   -  - 300  0
22139   -   -   -   -   -  -   -  - 305  5
22140   -   -   -   -   -  -   -  - 315 15
22141   -   -   -   -   -  -   -  - 325 25
22142   -   -   -   -   -  -   -  - 335 35
22143   -   -   -   -   -  -   -  - 345 45
22144   -   -   -   -   -  -   -  - 355 55
22145   -   -   -   -   -  -   -  - 365 65
22146   -   -   -   -   -  -   -  - 375 75
22147   -   -   -   -   -  -   -  - 385 85
22148   -   -   -   -   -  -   -  - 395 95
22149}
22150do_execsql_test joinD-753 {
22151  SELECT t1.*, t2.*, t3.*, t4.*
22152  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22153  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22154  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22155  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22156} {
22157  30 130 230 330 130 30 230 30 330 30
22158  60 160 260 360 160 60 260 60 360 60
22159  90 190 290 390 190 90 290 90 390 90
22160}
22161do_execsql_test joinD-754 {
22162  SELECT t1.*, t2.*, t3.*, t4.*
22163  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22164  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22165  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22166  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22167} {
22168  30 130 230 330 130 30 230 30 330 30
22169  60 160 260 360 160 60 260 60 360 60
22170  90 190 290 390 190 90 290 90 390 90
22171}
22172do_execsql_test joinD-755 {
22173  SELECT t1.*, t2.*, t3.*, t4.*
22174  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22175  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22176  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22177  WHERE t2.x>0
22178  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22179} {
22180  30 130 230 330 130 30 230 30 330 30
22181  60 160 260 360 160 60 260 60 360 60
22182  90 190 290 390 190 90 290 90 390 90
22183}
22184do_execsql_test joinD-756 {
22185  SELECT t1.*, t2.*, t3.*, t4.*
22186  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22187  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22188  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22189  WHERE (t2.x>0 OR t2.x IS NULL)
22190  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22191} {
22192  30 130 230 330 130 30 230 30 330 30
22193  60 160 260 360 160 60 260 60 360 60
22194  90 190 290 390 190 90 290 90 390 90
22195}
22196do_execsql_test joinD-757 {
22197  SELECT t1.*, t2.*, t3.*, t4.*
22198  FROM t1 RIGHT JOIN t2 ON true
22199  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22200  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22201  WHERE t1.b=t2.b AND t2.x>0
22202  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22203} {
22204  30 130 230 330 130 30 230 30 330 30
22205  60 160 260 360 160 60 260 60 360 60
22206  90 190 290 390 190 90 290 90 390 90
22207}
22208do_execsql_test joinD-758 {
22209  SELECT t1.*, t2.*, t3.*, t4.*
22210  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22211  RIGHT JOIN t3 ON t1.c=t3.c
22212  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22213  WHERE t3.y>0
22214  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22215} {
22216  30 130 230 330 130 30 230 30 330 30
22217  60 160 260 360 160 60 260 60 360 60
22218  90 190 290 390 190 90 290 90 390 90
22219}
22220do_execsql_test joinD-759 {
22221  SELECT t1.*, t2.*, t3.*, t4.*
22222  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22223  RIGHT JOIN t3 ON t1.c=t3.c
22224  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22225  WHERE t3.y>0 OR t3.y IS NULL
22226  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22227} {
22228  30 130 230 330 130 30 230 30 330 30
22229  60 160 260 360 160 60 260 60 360 60
22230  90 190 290 390 190 90 290 90 390 90
22231}
22232do_execsql_test joinD-760 {
22233  SELECT t1.*, t2.*, t3.*, t4.*
22234  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22235  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22236  INNER JOIN t4 ON t1.d=t4.d
22237  WHERE t4.z>0
22238  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22239} {
22240  30 130 230 330 130 30 230 30 330 30
22241  60 160 260 360 160 60 260 60 360 60
22242  90 190 290 390 190 90 290 90 390 90
22243}
22244do_execsql_test joinD-761 {
22245  SELECT t1.*, t2.*, t3.*, t4.*
22246  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22247  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22248  INNER JOIN t4 ON t1.d=t4.d
22249  WHERE t4.z IS NULL OR t4.z>0
22250  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22251} {
22252  30 130 230 330 130 30 230 30 330 30
22253  60 160 260 360 160 60 260 60 360 60
22254  90 190 290 390 190 90 290 90 390 90
22255}
22256do_execsql_test joinD-762 {
22257  SELECT t1.*, t2.*, t3.*, t4.*
22258  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22259  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22260  INNER JOIN t4 ON t1.d=t4.d
22261  WHERE t2.x>0 AND t4.z>0
22262  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22263} {
22264  30 130 230 330 130 30 230 30 330 30
22265  60 160 260 360 160 60 260 60 360 60
22266  90 190 290 390 190 90 290 90 390 90
22267}
22268do_execsql_test joinD-763 {
22269  SELECT t1.*, t2.*, t3.*, t4.*
22270  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22271  RIGHT JOIN t3 ON t1.c=t3.c
22272  INNER JOIN t4 ON t1.d=t4.d
22273  WHERE t4.z>0 AND t3.y>0
22274  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22275} {
22276  30 130 230 330 130 30 230 30 330 30
22277  60 160 260 360 160 60 260 60 360 60
22278  90 190 290 390 190 90 290 90 390 90
22279}
22280do_execsql_test joinD-764 {
22281  SELECT t1.*, t2.*, t3.*, t4.*
22282  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22283  RIGHT JOIN t3 ON t1.c=t3.c
22284  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22285  WHERE t2.x>0 AND t3.y>0
22286  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22287} {
22288  30 130 230 330 130 30 230 30 330 30
22289  60 160 260 360 160 60 260 60 360 60
22290  90 190 290 390 190 90 290 90 390 90
22291}
22292do_execsql_test joinD-765 {
22293  SELECT t1.*, t2.*, t3.*, t4.*
22294  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22295  RIGHT JOIN t3 ON t1.c=t3.c
22296  INNER JOIN t4 ON t1.d=t4.d
22297  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
22298  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22299} {
22300  30 130 230 330 130 30 230 30 330 30
22301  60 160 260 360 160 60 260 60 360 60
22302  90 190 290 390 190 90 290 90 390 90
22303}
22304do_execsql_test joinD-766 {
22305  SELECT t1.*, t2.*, t3.*, t4.*
22306  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22307  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22308  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22309  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22310} {
22311  30 130 230 330 130 30 230 30 330 30
22312  60 160 260 360 160 60 260 60 360 60
22313  90 190 290 390 190 90 290 90 390 90
22314}
22315do_execsql_test joinD-767 {
22316  SELECT t1.*, t2.*, t3.*, t4.*
22317  FROM t1 RIGHT JOIN t2 ON t2.x>0
22318  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22319  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22320  WHERE t1.b IS NOT DISTINCT FROM t2.b
22321  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22322} {
22323  30 130 230 330 130 30 230 30 330 30
22324  60 160 260 360 160 60 260 60 360 60
22325  90 190 290 390 190 90 290 90 390 90
22326}
22327do_execsql_test joinD-768 {
22328  SELECT t1.*, t2.*, t3.*, t4.*
22329  FROM t1 RIGHT JOIN t2 ON t2.x>0
22330  RIGHT JOIN t3 ON t3.y>0
22331  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22332  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
22333  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22334} {
22335  30 130 230 330 130 30 230 30 330 30
22336  60 160 260 360 160 60 260 60 360 60
22337  90 190 290 390 190 90 290 90 390 90
22338}
22339do_execsql_test joinD-769 {
22340  SELECT t1.*, t2.*, t3.*, t4.*
22341  FROM t1 RIGHT JOIN t2 ON t2.x>0
22342  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22343  INNER JOIN t4 ON t4.z>0
22344  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
22345  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22346} {
22347  30 130 230 330 130 30 230 30 330 30
22348  60 160 260 360 160 60 260 60 360 60
22349  90 190 290 390 190 90 290 90 390 90
22350}
22351do_execsql_test joinD-770 {
22352  SELECT t1.*, t2.*, t3.*, t4.*
22353  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
22354  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22355  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22356  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22357} {
22358  30 130 230 330 130 30 230 30 330 30
22359  60 160 260 360 160 60 260 60 360 60
22360  90 190 290 390 190 90 290 90 390 90
22361}
22362do_execsql_test joinD-771 {
22363  SELECT t1.*, t2.*, t3.*, t4.*
22364  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22365  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
22366  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
22367  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22368} {
22369  30 130 230 330 130 30 230 30 330 30
22370  60 160 260 360 160 60 260 60 360 60
22371  90 190 290 390 190 90 290 90 390 90
22372}
22373do_execsql_test joinD-772 {
22374  SELECT t1.*, t2.*, t3.*, t4.*
22375  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22376  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22377  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22378  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22379} {
22380   6 106 206 306 106  6 206  6   -  -
22381  12 112 212 312 112 12 212 12   -  -
22382  18 118 218 318 118 18 218 18   -  -
22383  24 124 224 324 124 24 224 24   -  -
22384  30 130 230 330 130 30 230 30 330 30
22385  36 136 236 336 136 36 236 36   -  -
22386  42 142 242 342 142 42 242 42   -  -
22387  48 148 248 348 148 48 248 48   -  -
22388  54 154 254 354 154 54 254 54   -  -
22389  60 160 260 360 160 60 260 60 360 60
22390  66 166 266 366 166 66 266 66   -  -
22391  72 172 272 372 172 72 272 72   -  -
22392  78 178 278 378 178 78 278 78   -  -
22393  84 184 284 384 184 84 284 84   -  -
22394  90 190 290 390 190 90 290 90 390 90
22395   -   -   -   -   -  - 200  0   -  -
22396   -   -   -   -   -  - 203  3   -  -
22397   -   -   -   -   -  - 209  9   -  -
22398   -   -   -   -   -  - 215 15   -  -
22399   -   -   -   -   -  - 221 21   -  -
22400   -   -   -   -   -  - 227 27   -  -
22401   -   -   -   -   -  - 233 33   -  -
22402   -   -   -   -   -  - 239 39   -  -
22403   -   -   -   -   -  - 245 45   -  -
22404   -   -   -   -   -  - 251 51   -  -
22405   -   -   -   -   -  - 257 57   -  -
22406   -   -   -   -   -  - 263 63   -  -
22407   -   -   -   -   -  - 269 69   -  -
22408   -   -   -   -   -  - 275 75   -  -
22409   -   -   -   -   -  - 281 81   -  -
22410   -   -   -   -   -  - 287 87   -  -
22411   -   -   -   -   -  - 293 93   -  -
22412}
22413do_execsql_test joinD-773 {
22414  SELECT t1.*, t2.*, t3.*, t4.*
22415  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22416  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22417  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22418  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22419} {
22420   6 106 206 306 106  6 206  6   -  -
22421  12 112 212 312 112 12 212 12   -  -
22422  18 118 218 318 118 18 218 18   -  -
22423  24 124 224 324 124 24 224 24   -  -
22424  30 130 230 330 130 30 230 30 330 30
22425  36 136 236 336 136 36 236 36   -  -
22426  42 142 242 342 142 42 242 42   -  -
22427  48 148 248 348 148 48 248 48   -  -
22428  54 154 254 354 154 54 254 54   -  -
22429  60 160 260 360 160 60 260 60 360 60
22430  66 166 266 366 166 66 266 66   -  -
22431  72 172 272 372 172 72 272 72   -  -
22432  78 178 278 378 178 78 278 78   -  -
22433  84 184 284 384 184 84 284 84   -  -
22434  90 190 290 390 190 90 290 90 390 90
22435   -   -   -   -   -  - 200  0   -  -
22436   -   -   -   -   -  - 203  3   -  -
22437   -   -   -   -   -  - 209  9   -  -
22438   -   -   -   -   -  - 215 15   -  -
22439   -   -   -   -   -  - 221 21   -  -
22440   -   -   -   -   -  - 227 27   -  -
22441   -   -   -   -   -  - 233 33   -  -
22442   -   -   -   -   -  - 239 39   -  -
22443   -   -   -   -   -  - 245 45   -  -
22444   -   -   -   -   -  - 251 51   -  -
22445   -   -   -   -   -  - 257 57   -  -
22446   -   -   -   -   -  - 263 63   -  -
22447   -   -   -   -   -  - 269 69   -  -
22448   -   -   -   -   -  - 275 75   -  -
22449   -   -   -   -   -  - 281 81   -  -
22450   -   -   -   -   -  - 287 87   -  -
22451   -   -   -   -   -  - 293 93   -  -
22452}
22453do_execsql_test joinD-774 {
22454  SELECT t1.*, t2.*, t3.*, t4.*
22455  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22456  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22457  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22458  WHERE t2.x>0
22459  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22460} {
22461   6 106 206 306 106  6 206  6   -  -
22462  12 112 212 312 112 12 212 12   -  -
22463  18 118 218 318 118 18 218 18   -  -
22464  24 124 224 324 124 24 224 24   -  -
22465  30 130 230 330 130 30 230 30 330 30
22466  36 136 236 336 136 36 236 36   -  -
22467  42 142 242 342 142 42 242 42   -  -
22468  48 148 248 348 148 48 248 48   -  -
22469  54 154 254 354 154 54 254 54   -  -
22470  60 160 260 360 160 60 260 60 360 60
22471  66 166 266 366 166 66 266 66   -  -
22472  72 172 272 372 172 72 272 72   -  -
22473  78 178 278 378 178 78 278 78   -  -
22474  84 184 284 384 184 84 284 84   -  -
22475  90 190 290 390 190 90 290 90 390 90
22476}
22477do_execsql_test joinD-775 {
22478  SELECT t1.*, t2.*, t3.*, t4.*
22479  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22480  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22481  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22482  WHERE (t2.x>0 OR t2.x IS NULL)
22483  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22484} {
22485   6 106 206 306 106  6 206  6   -  -
22486  12 112 212 312 112 12 212 12   -  -
22487  18 118 218 318 118 18 218 18   -  -
22488  24 124 224 324 124 24 224 24   -  -
22489  30 130 230 330 130 30 230 30 330 30
22490  36 136 236 336 136 36 236 36   -  -
22491  42 142 242 342 142 42 242 42   -  -
22492  48 148 248 348 148 48 248 48   -  -
22493  54 154 254 354 154 54 254 54   -  -
22494  60 160 260 360 160 60 260 60 360 60
22495  66 166 266 366 166 66 266 66   -  -
22496  72 172 272 372 172 72 272 72   -  -
22497  78 178 278 378 178 78 278 78   -  -
22498  84 184 284 384 184 84 284 84   -  -
22499  90 190 290 390 190 90 290 90 390 90
22500   -   -   -   -   -  - 200  0   -  -
22501   -   -   -   -   -  - 203  3   -  -
22502   -   -   -   -   -  - 209  9   -  -
22503   -   -   -   -   -  - 215 15   -  -
22504   -   -   -   -   -  - 221 21   -  -
22505   -   -   -   -   -  - 227 27   -  -
22506   -   -   -   -   -  - 233 33   -  -
22507   -   -   -   -   -  - 239 39   -  -
22508   -   -   -   -   -  - 245 45   -  -
22509   -   -   -   -   -  - 251 51   -  -
22510   -   -   -   -   -  - 257 57   -  -
22511   -   -   -   -   -  - 263 63   -  -
22512   -   -   -   -   -  - 269 69   -  -
22513   -   -   -   -   -  - 275 75   -  -
22514   -   -   -   -   -  - 281 81   -  -
22515   -   -   -   -   -  - 287 87   -  -
22516   -   -   -   -   -  - 293 93   -  -
22517}
22518do_execsql_test joinD-776 {
22519  SELECT t1.*, t2.*, t3.*, t4.*
22520  FROM t1 RIGHT JOIN t2 ON true
22521  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22522  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22523  WHERE t1.b=t2.b AND t2.x>0
22524  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22525} {
22526   6 106 206 306 106  6 206  6   -  -
22527  12 112 212 312 112 12 212 12   -  -
22528  18 118 218 318 118 18 218 18   -  -
22529  24 124 224 324 124 24 224 24   -  -
22530  30 130 230 330 130 30 230 30 330 30
22531  36 136 236 336 136 36 236 36   -  -
22532  42 142 242 342 142 42 242 42   -  -
22533  48 148 248 348 148 48 248 48   -  -
22534  54 154 254 354 154 54 254 54   -  -
22535  60 160 260 360 160 60 260 60 360 60
22536  66 166 266 366 166 66 266 66   -  -
22537  72 172 272 372 172 72 272 72   -  -
22538  78 178 278 378 178 78 278 78   -  -
22539  84 184 284 384 184 84 284 84   -  -
22540  90 190 290 390 190 90 290 90 390 90
22541}
22542do_execsql_test joinD-777 {
22543  SELECT t1.*, t2.*, t3.*, t4.*
22544  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22545  RIGHT JOIN t3 ON t1.c=t3.c
22546  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22547  WHERE t3.y>0
22548  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22549} {
22550   6 106 206 306 106  6 206  6   -  -
22551  12 112 212 312 112 12 212 12   -  -
22552  18 118 218 318 118 18 218 18   -  -
22553  24 124 224 324 124 24 224 24   -  -
22554  30 130 230 330 130 30 230 30 330 30
22555  36 136 236 336 136 36 236 36   -  -
22556  42 142 242 342 142 42 242 42   -  -
22557  48 148 248 348 148 48 248 48   -  -
22558  54 154 254 354 154 54 254 54   -  -
22559  60 160 260 360 160 60 260 60 360 60
22560  66 166 266 366 166 66 266 66   -  -
22561  72 172 272 372 172 72 272 72   -  -
22562  78 178 278 378 178 78 278 78   -  -
22563  84 184 284 384 184 84 284 84   -  -
22564  90 190 290 390 190 90 290 90 390 90
22565   -   -   -   -   -  - 203  3   -  -
22566   -   -   -   -   -  - 209  9   -  -
22567   -   -   -   -   -  - 215 15   -  -
22568   -   -   -   -   -  - 221 21   -  -
22569   -   -   -   -   -  - 227 27   -  -
22570   -   -   -   -   -  - 233 33   -  -
22571   -   -   -   -   -  - 239 39   -  -
22572   -   -   -   -   -  - 245 45   -  -
22573   -   -   -   -   -  - 251 51   -  -
22574   -   -   -   -   -  - 257 57   -  -
22575   -   -   -   -   -  - 263 63   -  -
22576   -   -   -   -   -  - 269 69   -  -
22577   -   -   -   -   -  - 275 75   -  -
22578   -   -   -   -   -  - 281 81   -  -
22579   -   -   -   -   -  - 287 87   -  -
22580   -   -   -   -   -  - 293 93   -  -
22581}
22582do_execsql_test joinD-778 {
22583  SELECT t1.*, t2.*, t3.*, t4.*
22584  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22585  RIGHT JOIN t3 ON t1.c=t3.c
22586  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22587  WHERE t3.y>0 OR t3.y IS NULL
22588  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22589} {
22590   6 106 206 306 106  6 206  6   -  -
22591  12 112 212 312 112 12 212 12   -  -
22592  18 118 218 318 118 18 218 18   -  -
22593  24 124 224 324 124 24 224 24   -  -
22594  30 130 230 330 130 30 230 30 330 30
22595  36 136 236 336 136 36 236 36   -  -
22596  42 142 242 342 142 42 242 42   -  -
22597  48 148 248 348 148 48 248 48   -  -
22598  54 154 254 354 154 54 254 54   -  -
22599  60 160 260 360 160 60 260 60 360 60
22600  66 166 266 366 166 66 266 66   -  -
22601  72 172 272 372 172 72 272 72   -  -
22602  78 178 278 378 178 78 278 78   -  -
22603  84 184 284 384 184 84 284 84   -  -
22604  90 190 290 390 190 90 290 90 390 90
22605   -   -   -   -   -  - 203  3   -  -
22606   -   -   -   -   -  - 209  9   -  -
22607   -   -   -   -   -  - 215 15   -  -
22608   -   -   -   -   -  - 221 21   -  -
22609   -   -   -   -   -  - 227 27   -  -
22610   -   -   -   -   -  - 233 33   -  -
22611   -   -   -   -   -  - 239 39   -  -
22612   -   -   -   -   -  - 245 45   -  -
22613   -   -   -   -   -  - 251 51   -  -
22614   -   -   -   -   -  - 257 57   -  -
22615   -   -   -   -   -  - 263 63   -  -
22616   -   -   -   -   -  - 269 69   -  -
22617   -   -   -   -   -  - 275 75   -  -
22618   -   -   -   -   -  - 281 81   -  -
22619   -   -   -   -   -  - 287 87   -  -
22620   -   -   -   -   -  - 293 93   -  -
22621}
22622do_execsql_test joinD-779 {
22623  SELECT t1.*, t2.*, t3.*, t4.*
22624  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22625  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22626  LEFT JOIN t4 ON t1.d=t4.d
22627  WHERE t4.z>0
22628  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22629} {
22630  30 130 230 330 130 30 230 30 330 30
22631  60 160 260 360 160 60 260 60 360 60
22632  90 190 290 390 190 90 290 90 390 90
22633}
22634do_execsql_test joinD-780 {
22635  SELECT t1.*, t2.*, t3.*, t4.*
22636  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22637  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22638  LEFT JOIN t4 ON t1.d=t4.d
22639  WHERE t4.z IS NULL OR t4.z>0
22640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22641} {
22642   6 106 206 306 106  6 206  6   -  -
22643  12 112 212 312 112 12 212 12   -  -
22644  18 118 218 318 118 18 218 18   -  -
22645  24 124 224 324 124 24 224 24   -  -
22646  30 130 230 330 130 30 230 30 330 30
22647  36 136 236 336 136 36 236 36   -  -
22648  42 142 242 342 142 42 242 42   -  -
22649  48 148 248 348 148 48 248 48   -  -
22650  54 154 254 354 154 54 254 54   -  -
22651  60 160 260 360 160 60 260 60 360 60
22652  66 166 266 366 166 66 266 66   -  -
22653  72 172 272 372 172 72 272 72   -  -
22654  78 178 278 378 178 78 278 78   -  -
22655  84 184 284 384 184 84 284 84   -  -
22656  90 190 290 390 190 90 290 90 390 90
22657   -   -   -   -   -  - 200  0   -  -
22658   -   -   -   -   -  - 203  3   -  -
22659   -   -   -   -   -  - 209  9   -  -
22660   -   -   -   -   -  - 215 15   -  -
22661   -   -   -   -   -  - 221 21   -  -
22662   -   -   -   -   -  - 227 27   -  -
22663   -   -   -   -   -  - 233 33   -  -
22664   -   -   -   -   -  - 239 39   -  -
22665   -   -   -   -   -  - 245 45   -  -
22666   -   -   -   -   -  - 251 51   -  -
22667   -   -   -   -   -  - 257 57   -  -
22668   -   -   -   -   -  - 263 63   -  -
22669   -   -   -   -   -  - 269 69   -  -
22670   -   -   -   -   -  - 275 75   -  -
22671   -   -   -   -   -  - 281 81   -  -
22672   -   -   -   -   -  - 287 87   -  -
22673   -   -   -   -   -  - 293 93   -  -
22674}
22675do_execsql_test joinD-781 {
22676  SELECT t1.*, t2.*, t3.*, t4.*
22677  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22678  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22679  LEFT JOIN t4 ON t1.d=t4.d
22680  WHERE t2.x>0 AND t4.z>0
22681  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22682} {
22683  30 130 230 330 130 30 230 30 330 30
22684  60 160 260 360 160 60 260 60 360 60
22685  90 190 290 390 190 90 290 90 390 90
22686}
22687do_execsql_test joinD-782 {
22688  SELECT t1.*, t2.*, t3.*, t4.*
22689  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22690  RIGHT JOIN t3 ON t1.c=t3.c
22691  LEFT JOIN t4 ON t1.d=t4.d
22692  WHERE t4.z>0 AND t3.y>0
22693  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22694} {
22695  30 130 230 330 130 30 230 30 330 30
22696  60 160 260 360 160 60 260 60 360 60
22697  90 190 290 390 190 90 290 90 390 90
22698}
22699do_execsql_test joinD-783 {
22700  SELECT t1.*, t2.*, t3.*, t4.*
22701  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22702  RIGHT JOIN t3 ON t1.c=t3.c
22703  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22704  WHERE t2.x>0 AND t3.y>0
22705  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22706} {
22707   6 106 206 306 106  6 206  6   -  -
22708  12 112 212 312 112 12 212 12   -  -
22709  18 118 218 318 118 18 218 18   -  -
22710  24 124 224 324 124 24 224 24   -  -
22711  30 130 230 330 130 30 230 30 330 30
22712  36 136 236 336 136 36 236 36   -  -
22713  42 142 242 342 142 42 242 42   -  -
22714  48 148 248 348 148 48 248 48   -  -
22715  54 154 254 354 154 54 254 54   -  -
22716  60 160 260 360 160 60 260 60 360 60
22717  66 166 266 366 166 66 266 66   -  -
22718  72 172 272 372 172 72 272 72   -  -
22719  78 178 278 378 178 78 278 78   -  -
22720  84 184 284 384 184 84 284 84   -  -
22721  90 190 290 390 190 90 290 90 390 90
22722}
22723do_execsql_test joinD-784 {
22724  SELECT t1.*, t2.*, t3.*, t4.*
22725  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22726  RIGHT JOIN t3 ON t1.c=t3.c
22727  LEFT JOIN t4 ON t1.d=t4.d
22728  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
22729  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22730} {
22731  30 130 230 330 130 30 230 30 330 30
22732  60 160 260 360 160 60 260 60 360 60
22733  90 190 290 390 190 90 290 90 390 90
22734}
22735do_execsql_test joinD-785 {
22736  SELECT t1.*, t2.*, t3.*, t4.*
22737  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22738  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22739  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22740  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22741} {
22742   6 106 206 306 106  6 206  6   -  -
22743  12 112 212 312 112 12 212 12   -  -
22744  18 118 218 318 118 18 218 18   -  -
22745  24 124 224 324 124 24 224 24   -  -
22746  30 130 230 330 130 30 230 30 330 30
22747  36 136 236 336 136 36 236 36   -  -
22748  42 142 242 342 142 42 242 42   -  -
22749  48 148 248 348 148 48 248 48   -  -
22750  54 154 254 354 154 54 254 54   -  -
22751  60 160 260 360 160 60 260 60 360 60
22752  66 166 266 366 166 66 266 66   -  -
22753  72 172 272 372 172 72 272 72   -  -
22754  78 178 278 378 178 78 278 78   -  -
22755  84 184 284 384 184 84 284 84   -  -
22756  90 190 290 390 190 90 290 90 390 90
22757   -   -   -   -   -  - 200  0   -  -
22758   -   -   -   -   -  - 203  3   -  -
22759   -   -   -   -   -  - 209  9   -  -
22760   -   -   -   -   -  - 215 15   -  -
22761   -   -   -   -   -  - 221 21   -  -
22762   -   -   -   -   -  - 227 27   -  -
22763   -   -   -   -   -  - 233 33   -  -
22764   -   -   -   -   -  - 239 39   -  -
22765   -   -   -   -   -  - 245 45   -  -
22766   -   -   -   -   -  - 251 51   -  -
22767   -   -   -   -   -  - 257 57   -  -
22768   -   -   -   -   -  - 263 63   -  -
22769   -   -   -   -   -  - 269 69   -  -
22770   -   -   -   -   -  - 275 75   -  -
22771   -   -   -   -   -  - 281 81   -  -
22772   -   -   -   -   -  - 287 87   -  -
22773   -   -   -   -   -  - 293 93   -  -
22774}
22775do_execsql_test joinD-786 {
22776  SELECT t1.*, t2.*, t3.*, t4.*
22777  FROM t1 RIGHT JOIN t2 ON t2.x>0
22778  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22779  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22780  WHERE t1.b IS NOT DISTINCT FROM t2.b
22781  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22782} {
22783   6 106 206 306 106  6 206  6   -  -
22784  12 112 212 312 112 12 212 12   -  -
22785  18 118 218 318 118 18 218 18   -  -
22786  24 124 224 324 124 24 224 24   -  -
22787  30 130 230 330 130 30 230 30 330 30
22788  36 136 236 336 136 36 236 36   -  -
22789  42 142 242 342 142 42 242 42   -  -
22790  48 148 248 348 148 48 248 48   -  -
22791  54 154 254 354 154 54 254 54   -  -
22792  60 160 260 360 160 60 260 60 360 60
22793  66 166 266 366 166 66 266 66   -  -
22794  72 172 272 372 172 72 272 72   -  -
22795  78 178 278 378 178 78 278 78   -  -
22796  84 184 284 384 184 84 284 84   -  -
22797  90 190 290 390 190 90 290 90 390 90
22798   -   -   -   -   -  - 200  0   -  -
22799}
22800do_execsql_test joinD-787 {
22801  SELECT t1.*, t2.*, t3.*, t4.*
22802  FROM t1 RIGHT JOIN t2 ON t2.x>0
22803  RIGHT JOIN t3 ON t3.y>0
22804  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
22805  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
22806  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22807} {
22808   6 106 206 306 106  6 206  6   -  -
22809  12 112 212 312 112 12 212 12   -  -
22810  18 118 218 318 118 18 218 18   -  -
22811  24 124 224 324 124 24 224 24   -  -
22812  30 130 230 330 130 30 230 30 330 30
22813  36 136 236 336 136 36 236 36   -  -
22814  42 142 242 342 142 42 242 42   -  -
22815  48 148 248 348 148 48 248 48   -  -
22816  54 154 254 354 154 54 254 54   -  -
22817  60 160 260 360 160 60 260 60 360 60
22818  66 166 266 366 166 66 266 66   -  -
22819  72 172 272 372 172 72 272 72   -  -
22820  78 178 278 378 178 78 278 78   -  -
22821  84 184 284 384 184 84 284 84   -  -
22822  90 190 290 390 190 90 290 90 390 90
22823}
22824do_execsql_test joinD-788 {
22825  SELECT t1.*, t2.*, t3.*, t4.*
22826  FROM t1 RIGHT JOIN t2 ON t2.x>0
22827  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
22828  LEFT JOIN t4 ON t4.z>0
22829  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
22830  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22831} {
22832  30 130 230 330 130 30 230 30 330 30
22833  60 160 260 360 160 60 260 60 360 60
22834  90 190 290 390 190 90 290 90 390 90
22835}
22836do_execsql_test joinD-789 {
22837  SELECT t1.*, t2.*, t3.*, t4.*
22838  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
22839  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22840  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22841  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22842} {
22843   6 106 206 306 106  6 206  6   -  -
22844  12 112 212 312 112 12 212 12   -  -
22845  18 118 218 318 118 18 218 18   -  -
22846  24 124 224 324 124 24 224 24   -  -
22847  30 130 230 330 130 30 230 30 330 30
22848  36 136 236 336 136 36 236 36   -  -
22849  42 142 242 342 142 42 242 42   -  -
22850  48 148 248 348 148 48 248 48   -  -
22851  54 154 254 354 154 54 254 54   -  -
22852  60 160 260 360 160 60 260 60 360 60
22853  66 166 266 366 166 66 266 66   -  -
22854  72 172 272 372 172 72 272 72   -  -
22855  78 178 278 378 178 78 278 78   -  -
22856  84 184 284 384 184 84 284 84   -  -
22857  90 190 290 390 190 90 290 90 390 90
22858   -   -   -   -   -  - 200  0   -  -
22859   -   -   -   -   -  - 203  3   -  -
22860   -   -   -   -   -  - 209  9   -  -
22861   -   -   -   -   -  - 215 15   -  -
22862   -   -   -   -   -  - 221 21   -  -
22863   -   -   -   -   -  - 227 27   -  -
22864   -   -   -   -   -  - 233 33   -  -
22865   -   -   -   -   -  - 239 39   -  -
22866   -   -   -   -   -  - 245 45   -  -
22867   -   -   -   -   -  - 251 51   -  -
22868   -   -   -   -   -  - 257 57   -  -
22869   -   -   -   -   -  - 263 63   -  -
22870   -   -   -   -   -  - 269 69   -  -
22871   -   -   -   -   -  - 275 75   -  -
22872   -   -   -   -   -  - 281 81   -  -
22873   -   -   -   -   -  - 287 87   -  -
22874   -   -   -   -   -  - 293 93   -  -
22875}
22876do_execsql_test joinD-790 {
22877  SELECT t1.*, t2.*, t3.*, t4.*
22878  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22879  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
22880  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
22881  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22882} {
22883   6 106 206 306 106  6 206  6   -  -
22884  12 112 212 312 112 12 212 12   -  -
22885  18 118 218 318 118 18 218 18   -  -
22886  24 124 224 324 124 24 224 24   -  -
22887  30 130 230 330 130 30 230 30 330 30
22888  36 136 236 336 136 36 236 36   -  -
22889  42 142 242 342 142 42 242 42   -  -
22890  48 148 248 348 148 48 248 48   -  -
22891  54 154 254 354 154 54 254 54   -  -
22892  60 160 260 360 160 60 260 60 360 60
22893  66 166 266 366 166 66 266 66   -  -
22894  72 172 272 372 172 72 272 72   -  -
22895  78 178 278 378 178 78 278 78   -  -
22896  84 184 284 384 184 84 284 84   -  -
22897  90 190 290 390 190 90 290 90 390 90
22898   -   -   -   -   -  - 200  0   -  -
22899   -   -   -   -   -  - 203  3   -  -
22900   -   -   -   -   -  - 209  9   -  -
22901   -   -   -   -   -  - 215 15   -  -
22902   -   -   -   -   -  - 221 21   -  -
22903   -   -   -   -   -  - 227 27   -  -
22904   -   -   -   -   -  - 233 33   -  -
22905   -   -   -   -   -  - 239 39   -  -
22906   -   -   -   -   -  - 245 45   -  -
22907   -   -   -   -   -  - 251 51   -  -
22908   -   -   -   -   -  - 257 57   -  -
22909   -   -   -   -   -  - 263 63   -  -
22910   -   -   -   -   -  - 269 69   -  -
22911   -   -   -   -   -  - 275 75   -  -
22912   -   -   -   -   -  - 281 81   -  -
22913   -   -   -   -   -  - 287 87   -  -
22914   -   -   -   -   -  - 293 93   -  -
22915}
22916do_execsql_test joinD-791 {
22917  SELECT t1.*, t2.*, t3.*, t4.*
22918  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
22919  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22920  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22921  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22922} {
22923  30 130 230 330 130 30 230 30 330 30
22924  60 160 260 360 160 60 260 60 360 60
22925  90 190 290 390 190 90 290 90 390 90
22926   -   -   -   -   -  -   -  - 300  0
22927   -   -   -   -   -  -   -  - 305  5
22928   -   -   -   -   -  -   -  - 310 10
22929   -   -   -   -   -  -   -  - 315 15
22930   -   -   -   -   -  -   -  - 320 20
22931   -   -   -   -   -  -   -  - 325 25
22932   -   -   -   -   -  -   -  - 335 35
22933   -   -   -   -   -  -   -  - 340 40
22934   -   -   -   -   -  -   -  - 345 45
22935   -   -   -   -   -  -   -  - 350 50
22936   -   -   -   -   -  -   -  - 355 55
22937   -   -   -   -   -  -   -  - 365 65
22938   -   -   -   -   -  -   -  - 370 70
22939   -   -   -   -   -  -   -  - 375 75
22940   -   -   -   -   -  -   -  - 380 80
22941   -   -   -   -   -  -   -  - 385 85
22942   -   -   -   -   -  -   -  - 395 95
22943}
22944do_execsql_test joinD-792 {
22945  SELECT t1.*, t2.*, t3.*, t4.*
22946  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
22947  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22948  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22949  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22950} {
22951  30 130 230 330 130 30 230 30 330 30
22952  60 160 260 360 160 60 260 60 360 60
22953  90 190 290 390 190 90 290 90 390 90
22954   -   -   -   -   -  -   -  - 300  0
22955   -   -   -   -   -  -   -  - 305  5
22956   -   -   -   -   -  -   -  - 310 10
22957   -   -   -   -   -  -   -  - 315 15
22958   -   -   -   -   -  -   -  - 320 20
22959   -   -   -   -   -  -   -  - 325 25
22960   -   -   -   -   -  -   -  - 335 35
22961   -   -   -   -   -  -   -  - 340 40
22962   -   -   -   -   -  -   -  - 345 45
22963   -   -   -   -   -  -   -  - 350 50
22964   -   -   -   -   -  -   -  - 355 55
22965   -   -   -   -   -  -   -  - 365 65
22966   -   -   -   -   -  -   -  - 370 70
22967   -   -   -   -   -  -   -  - 375 75
22968   -   -   -   -   -  -   -  - 380 80
22969   -   -   -   -   -  -   -  - 385 85
22970   -   -   -   -   -  -   -  - 395 95
22971}
22972do_execsql_test joinD-793 {
22973  SELECT t1.*, t2.*, t3.*, t4.*
22974  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22975  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22976  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22977  WHERE t2.x>0
22978  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22979} {
22980  30 130 230 330 130 30 230 30 330 30
22981  60 160 260 360 160 60 260 60 360 60
22982  90 190 290 390 190 90 290 90 390 90
22983}
22984do_execsql_test joinD-794 {
22985  SELECT t1.*, t2.*, t3.*, t4.*
22986  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
22987  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
22988  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
22989  WHERE (t2.x>0 OR t2.x IS NULL)
22990  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
22991} {
22992  30 130 230 330 130 30 230 30 330 30
22993  60 160 260 360 160 60 260 60 360 60
22994  90 190 290 390 190 90 290 90 390 90
22995   -   -   -   -   -  -   -  - 300  0
22996   -   -   -   -   -  -   -  - 305  5
22997   -   -   -   -   -  -   -  - 310 10
22998   -   -   -   -   -  -   -  - 315 15
22999   -   -   -   -   -  -   -  - 320 20
23000   -   -   -   -   -  -   -  - 325 25
23001   -   -   -   -   -  -   -  - 335 35
23002   -   -   -   -   -  -   -  - 340 40
23003   -   -   -   -   -  -   -  - 345 45
23004   -   -   -   -   -  -   -  - 350 50
23005   -   -   -   -   -  -   -  - 355 55
23006   -   -   -   -   -  -   -  - 365 65
23007   -   -   -   -   -  -   -  - 370 70
23008   -   -   -   -   -  -   -  - 375 75
23009   -   -   -   -   -  -   -  - 380 80
23010   -   -   -   -   -  -   -  - 385 85
23011   -   -   -   -   -  -   -  - 395 95
23012}
23013do_execsql_test joinD-795 {
23014  SELECT t1.*, t2.*, t3.*, t4.*
23015  FROM t1 RIGHT JOIN t2 ON true
23016  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23017  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23018  WHERE t1.b=t2.b AND t2.x>0
23019  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23020} {
23021  30 130 230 330 130 30 230 30 330 30
23022  60 160 260 360 160 60 260 60 360 60
23023  90 190 290 390 190 90 290 90 390 90
23024}
23025do_execsql_test joinD-796 {
23026  SELECT t1.*, t2.*, t3.*, t4.*
23027  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23028  RIGHT JOIN t3 ON t1.c=t3.c
23029  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23030  WHERE t3.y>0
23031  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23032} {
23033  30 130 230 330 130 30 230 30 330 30
23034  60 160 260 360 160 60 260 60 360 60
23035  90 190 290 390 190 90 290 90 390 90
23036}
23037do_execsql_test joinD-797 {
23038  SELECT t1.*, t2.*, t3.*, t4.*
23039  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23040  RIGHT JOIN t3 ON t1.c=t3.c
23041  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23042  WHERE t3.y>0 OR t3.y IS NULL
23043  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23044} {
23045  30 130 230 330 130 30 230 30 330 30
23046  60 160 260 360 160 60 260 60 360 60
23047  90 190 290 390 190 90 290 90 390 90
23048   -   -   -   -   -  -   -  - 300  0
23049   -   -   -   -   -  -   -  - 305  5
23050   -   -   -   -   -  -   -  - 310 10
23051   -   -   -   -   -  -   -  - 315 15
23052   -   -   -   -   -  -   -  - 320 20
23053   -   -   -   -   -  -   -  - 325 25
23054   -   -   -   -   -  -   -  - 335 35
23055   -   -   -   -   -  -   -  - 340 40
23056   -   -   -   -   -  -   -  - 345 45
23057   -   -   -   -   -  -   -  - 350 50
23058   -   -   -   -   -  -   -  - 355 55
23059   -   -   -   -   -  -   -  - 365 65
23060   -   -   -   -   -  -   -  - 370 70
23061   -   -   -   -   -  -   -  - 375 75
23062   -   -   -   -   -  -   -  - 380 80
23063   -   -   -   -   -  -   -  - 385 85
23064   -   -   -   -   -  -   -  - 395 95
23065}
23066do_execsql_test joinD-798 {
23067  SELECT t1.*, t2.*, t3.*, t4.*
23068  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23069  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23070  RIGHT JOIN t4 ON t1.d=t4.d
23071  WHERE t4.z>0
23072  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23073} {
23074  30 130 230 330 130 30 230 30 330 30
23075  60 160 260 360 160 60 260 60 360 60
23076  90 190 290 390 190 90 290 90 390 90
23077   -   -   -   -   -  -   -  - 305  5
23078   -   -   -   -   -  -   -  - 310 10
23079   -   -   -   -   -  -   -  - 315 15
23080   -   -   -   -   -  -   -  - 320 20
23081   -   -   -   -   -  -   -  - 325 25
23082   -   -   -   -   -  -   -  - 335 35
23083   -   -   -   -   -  -   -  - 340 40
23084   -   -   -   -   -  -   -  - 345 45
23085   -   -   -   -   -  -   -  - 350 50
23086   -   -   -   -   -  -   -  - 355 55
23087   -   -   -   -   -  -   -  - 365 65
23088   -   -   -   -   -  -   -  - 370 70
23089   -   -   -   -   -  -   -  - 375 75
23090   -   -   -   -   -  -   -  - 380 80
23091   -   -   -   -   -  -   -  - 385 85
23092   -   -   -   -   -  -   -  - 395 95
23093}
23094do_execsql_test joinD-799 {
23095  SELECT t1.*, t2.*, t3.*, t4.*
23096  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23097  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23098  RIGHT JOIN t4 ON t1.d=t4.d
23099  WHERE t4.z IS NULL OR t4.z>0
23100  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23101} {
23102  30 130 230 330 130 30 230 30 330 30
23103  60 160 260 360 160 60 260 60 360 60
23104  90 190 290 390 190 90 290 90 390 90
23105   -   -   -   -   -  -   -  - 305  5
23106   -   -   -   -   -  -   -  - 310 10
23107   -   -   -   -   -  -   -  - 315 15
23108   -   -   -   -   -  -   -  - 320 20
23109   -   -   -   -   -  -   -  - 325 25
23110   -   -   -   -   -  -   -  - 335 35
23111   -   -   -   -   -  -   -  - 340 40
23112   -   -   -   -   -  -   -  - 345 45
23113   -   -   -   -   -  -   -  - 350 50
23114   -   -   -   -   -  -   -  - 355 55
23115   -   -   -   -   -  -   -  - 365 65
23116   -   -   -   -   -  -   -  - 370 70
23117   -   -   -   -   -  -   -  - 375 75
23118   -   -   -   -   -  -   -  - 380 80
23119   -   -   -   -   -  -   -  - 385 85
23120   -   -   -   -   -  -   -  - 395 95
23121}
23122do_execsql_test joinD-800 {
23123  SELECT t1.*, t2.*, t3.*, t4.*
23124  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23125  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23126  RIGHT JOIN t4 ON t1.d=t4.d
23127  WHERE t2.x>0 AND t4.z>0
23128  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23129} {
23130  30 130 230 330 130 30 230 30 330 30
23131  60 160 260 360 160 60 260 60 360 60
23132  90 190 290 390 190 90 290 90 390 90
23133}
23134do_execsql_test joinD-801 {
23135  SELECT t1.*, t2.*, t3.*, t4.*
23136  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23137  RIGHT JOIN t3 ON t1.c=t3.c
23138  RIGHT JOIN t4 ON t1.d=t4.d
23139  WHERE t4.z>0 AND t3.y>0
23140  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23141} {
23142  30 130 230 330 130 30 230 30 330 30
23143  60 160 260 360 160 60 260 60 360 60
23144  90 190 290 390 190 90 290 90 390 90
23145}
23146do_execsql_test joinD-802 {
23147  SELECT t1.*, t2.*, t3.*, t4.*
23148  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23149  RIGHT JOIN t3 ON t1.c=t3.c
23150  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23151  WHERE t2.x>0 AND t3.y>0
23152  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23153} {
23154  30 130 230 330 130 30 230 30 330 30
23155  60 160 260 360 160 60 260 60 360 60
23156  90 190 290 390 190 90 290 90 390 90
23157}
23158do_execsql_test joinD-803 {
23159  SELECT t1.*, t2.*, t3.*, t4.*
23160  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23161  RIGHT JOIN t3 ON t1.c=t3.c
23162  RIGHT JOIN t4 ON t1.d=t4.d
23163  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
23164  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23165} {
23166  30 130 230 330 130 30 230 30 330 30
23167  60 160 260 360 160 60 260 60 360 60
23168  90 190 290 390 190 90 290 90 390 90
23169}
23170do_execsql_test joinD-804 {
23171  SELECT t1.*, t2.*, t3.*, t4.*
23172  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
23173  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23174  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
23175  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23176} {
23177  30 130 230 330 130 30 230 30 330 30
23178  60 160 260 360 160 60 260 60 360 60
23179  90 190 290 390 190 90 290 90 390 90
23180   -   -   -   -   -  -   -  - 300  0
23181   -   -   -   -   -  -   -  - 305  5
23182   -   -   -   -   -  -   -  - 310 10
23183   -   -   -   -   -  -   -  - 315 15
23184   -   -   -   -   -  -   -  - 320 20
23185   -   -   -   -   -  -   -  - 325 25
23186   -   -   -   -   -  -   -  - 335 35
23187   -   -   -   -   -  -   -  - 340 40
23188   -   -   -   -   -  -   -  - 345 45
23189   -   -   -   -   -  -   -  - 350 50
23190   -   -   -   -   -  -   -  - 355 55
23191   -   -   -   -   -  -   -  - 365 65
23192   -   -   -   -   -  -   -  - 370 70
23193   -   -   -   -   -  -   -  - 375 75
23194   -   -   -   -   -  -   -  - 380 80
23195   -   -   -   -   -  -   -  - 385 85
23196   -   -   -   -   -  -   -  - 395 95
23197}
23198do_execsql_test joinD-805 {
23199  SELECT t1.*, t2.*, t3.*, t4.*
23200  FROM t1 RIGHT JOIN t2 ON t2.x>0
23201  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23202  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
23203  WHERE t1.b IS NOT DISTINCT FROM t2.b
23204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23205} {
23206  30 130 230 330 130 30 230 30 330 30
23207  60 160 260 360 160 60 260 60 360 60
23208  90 190 290 390 190 90 290 90 390 90
23209   -   -   -   -   -  -   -  - 300  0
23210   -   -   -   -   -  -   -  - 305  5
23211   -   -   -   -   -  -   -  - 310 10
23212   -   -   -   -   -  -   -  - 320 20
23213   -   -   -   -   -  -   -  - 325 25
23214   -   -   -   -   -  -   -  - 335 35
23215   -   -   -   -   -  -   -  - 340 40
23216   -   -   -   -   -  -   -  - 350 50
23217   -   -   -   -   -  -   -  - 355 55
23218   -   -   -   -   -  -   -  - 365 65
23219   -   -   -   -   -  -   -  - 370 70
23220   -   -   -   -   -  -   -  - 380 80
23221   -   -   -   -   -  -   -  - 385 85
23222   -   -   -   -   -  -   -  - 395 95
23223}
23224do_execsql_test joinD-806 {
23225  SELECT t1.*, t2.*, t3.*, t4.*
23226  FROM t1 RIGHT JOIN t2 ON t2.x>0
23227  RIGHT JOIN t3 ON t3.y>0
23228  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
23229  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
23230  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23231} {
23232  30 130 230 330 130 30 230 30 330 30
23233  60 160 260 360 160 60 260 60 360 60
23234  90 190 290 390 190 90 290 90 390 90
23235   -   -   -   -   -  -   -  - 300  0
23236}
23237do_execsql_test joinD-807 {
23238  SELECT t1.*, t2.*, t3.*, t4.*
23239  FROM t1 RIGHT JOIN t2 ON t2.x>0
23240  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23241  RIGHT JOIN t4 ON t4.z>0
23242  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
23243  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23244} {
23245  30 130 230 330 130 30 230 30 330 30
23246  60 160 260 360 160 60 260 60 360 60
23247  90 190 290 390 190 90 290 90 390 90
23248}
23249do_execsql_test joinD-808 {
23250  SELECT t1.*, t2.*, t3.*, t4.*
23251  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
23252  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23253  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23254  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23255} {
23256  30 130 230 330 130 30 230 30 330 30
23257  60 160 260 360 160 60 260 60 360 60
23258  90 190 290 390 190 90 290 90 390 90
23259   -   -   -   -   -  -   -  - 300  0
23260   -   -   -   -   -  -   -  - 305  5
23261   -   -   -   -   -  -   -  - 310 10
23262   -   -   -   -   -  -   -  - 315 15
23263   -   -   -   -   -  -   -  - 320 20
23264   -   -   -   -   -  -   -  - 325 25
23265   -   -   -   -   -  -   -  - 335 35
23266   -   -   -   -   -  -   -  - 340 40
23267   -   -   -   -   -  -   -  - 345 45
23268   -   -   -   -   -  -   -  - 350 50
23269   -   -   -   -   -  -   -  - 355 55
23270   -   -   -   -   -  -   -  - 365 65
23271   -   -   -   -   -  -   -  - 370 70
23272   -   -   -   -   -  -   -  - 375 75
23273   -   -   -   -   -  -   -  - 380 80
23274   -   -   -   -   -  -   -  - 385 85
23275   -   -   -   -   -  -   -  - 395 95
23276}
23277do_execsql_test joinD-809 {
23278  SELECT t1.*, t2.*, t3.*, t4.*
23279  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23280  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
23281  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
23282  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23283} {
23284  30 130 230 330 130 30 230 30 330 30
23285  60 160 260 360 160 60 260 60 360 60
23286  90 190 290 390 190 90 290 90 390 90
23287   -   -   -   -   -  -   -  - 300  0
23288   -   -   -   -   -  -   -  - 305  5
23289   -   -   -   -   -  -   -  - 310 10
23290   -   -   -   -   -  -   -  - 315 15
23291   -   -   -   -   -  -   -  - 320 20
23292   -   -   -   -   -  -   -  - 325 25
23293   -   -   -   -   -  -   -  - 335 35
23294   -   -   -   -   -  -   -  - 340 40
23295   -   -   -   -   -  -   -  - 345 45
23296   -   -   -   -   -  -   -  - 350 50
23297   -   -   -   -   -  -   -  - 355 55
23298   -   -   -   -   -  -   -  - 365 65
23299   -   -   -   -   -  -   -  - 370 70
23300   -   -   -   -   -  -   -  - 375 75
23301   -   -   -   -   -  -   -  - 380 80
23302   -   -   -   -   -  -   -  - 385 85
23303   -   -   -   -   -  -   -  - 395 95
23304}
23305do_execsql_test joinD-810 {
23306  SELECT t1.*, t2.*, t3.*, t4.*
23307  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23308  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23309  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23310  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23311} {
23312   6 106 206 306 106  6 206  6   -  -
23313  12 112 212 312 112 12 212 12   -  -
23314  18 118 218 318 118 18 218 18   -  -
23315  24 124 224 324 124 24 224 24   -  -
23316  30 130 230 330 130 30 230 30 330 30
23317  36 136 236 336 136 36 236 36   -  -
23318  42 142 242 342 142 42 242 42   -  -
23319  48 148 248 348 148 48 248 48   -  -
23320  54 154 254 354 154 54 254 54   -  -
23321  60 160 260 360 160 60 260 60 360 60
23322  66 166 266 366 166 66 266 66   -  -
23323  72 172 272 372 172 72 272 72   -  -
23324  78 178 278 378 178 78 278 78   -  -
23325  84 184 284 384 184 84 284 84   -  -
23326  90 190 290 390 190 90 290 90 390 90
23327   -   -   -   -   -  - 200  0   -  -
23328   -   -   -   -   -  - 203  3   -  -
23329   -   -   -   -   -  - 209  9   -  -
23330   -   -   -   -   -  - 215 15   -  -
23331   -   -   -   -   -  - 221 21   -  -
23332   -   -   -   -   -  - 227 27   -  -
23333   -   -   -   -   -  - 233 33   -  -
23334   -   -   -   -   -  - 239 39   -  -
23335   -   -   -   -   -  - 245 45   -  -
23336   -   -   -   -   -  - 251 51   -  -
23337   -   -   -   -   -  - 257 57   -  -
23338   -   -   -   -   -  - 263 63   -  -
23339   -   -   -   -   -  - 269 69   -  -
23340   -   -   -   -   -  - 275 75   -  -
23341   -   -   -   -   -  - 281 81   -  -
23342   -   -   -   -   -  - 287 87   -  -
23343   -   -   -   -   -  - 293 93   -  -
23344   -   -   -   -   -  -   -  - 300  0
23345   -   -   -   -   -  -   -  - 305  5
23346   -   -   -   -   -  -   -  - 310 10
23347   -   -   -   -   -  -   -  - 315 15
23348   -   -   -   -   -  -   -  - 320 20
23349   -   -   -   -   -  -   -  - 325 25
23350   -   -   -   -   -  -   -  - 335 35
23351   -   -   -   -   -  -   -  - 340 40
23352   -   -   -   -   -  -   -  - 345 45
23353   -   -   -   -   -  -   -  - 350 50
23354   -   -   -   -   -  -   -  - 355 55
23355   -   -   -   -   -  -   -  - 365 65
23356   -   -   -   -   -  -   -  - 370 70
23357   -   -   -   -   -  -   -  - 375 75
23358   -   -   -   -   -  -   -  - 380 80
23359   -   -   -   -   -  -   -  - 385 85
23360   -   -   -   -   -  -   -  - 395 95
23361}
23362do_execsql_test joinD-811 {
23363  SELECT t1.*, t2.*, t3.*, t4.*
23364  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
23365  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23366  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23367  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23368} {
23369   6 106 206 306 106  6 206  6   -  -
23370  12 112 212 312 112 12 212 12   -  -
23371  18 118 218 318 118 18 218 18   -  -
23372  24 124 224 324 124 24 224 24   -  -
23373  30 130 230 330 130 30 230 30 330 30
23374  36 136 236 336 136 36 236 36   -  -
23375  42 142 242 342 142 42 242 42   -  -
23376  48 148 248 348 148 48 248 48   -  -
23377  54 154 254 354 154 54 254 54   -  -
23378  60 160 260 360 160 60 260 60 360 60
23379  66 166 266 366 166 66 266 66   -  -
23380  72 172 272 372 172 72 272 72   -  -
23381  78 178 278 378 178 78 278 78   -  -
23382  84 184 284 384 184 84 284 84   -  -
23383  90 190 290 390 190 90 290 90 390 90
23384   -   -   -   -   -  - 200  0   -  -
23385   -   -   -   -   -  - 203  3   -  -
23386   -   -   -   -   -  - 209  9   -  -
23387   -   -   -   -   -  - 215 15   -  -
23388   -   -   -   -   -  - 221 21   -  -
23389   -   -   -   -   -  - 227 27   -  -
23390   -   -   -   -   -  - 233 33   -  -
23391   -   -   -   -   -  - 239 39   -  -
23392   -   -   -   -   -  - 245 45   -  -
23393   -   -   -   -   -  - 251 51   -  -
23394   -   -   -   -   -  - 257 57   -  -
23395   -   -   -   -   -  - 263 63   -  -
23396   -   -   -   -   -  - 269 69   -  -
23397   -   -   -   -   -  - 275 75   -  -
23398   -   -   -   -   -  - 281 81   -  -
23399   -   -   -   -   -  - 287 87   -  -
23400   -   -   -   -   -  - 293 93   -  -
23401   -   -   -   -   -  -   -  - 300  0
23402   -   -   -   -   -  -   -  - 305  5
23403   -   -   -   -   -  -   -  - 310 10
23404   -   -   -   -   -  -   -  - 315 15
23405   -   -   -   -   -  -   -  - 320 20
23406   -   -   -   -   -  -   -  - 325 25
23407   -   -   -   -   -  -   -  - 335 35
23408   -   -   -   -   -  -   -  - 340 40
23409   -   -   -   -   -  -   -  - 345 45
23410   -   -   -   -   -  -   -  - 350 50
23411   -   -   -   -   -  -   -  - 355 55
23412   -   -   -   -   -  -   -  - 365 65
23413   -   -   -   -   -  -   -  - 370 70
23414   -   -   -   -   -  -   -  - 375 75
23415   -   -   -   -   -  -   -  - 380 80
23416   -   -   -   -   -  -   -  - 385 85
23417   -   -   -   -   -  -   -  - 395 95
23418}
23419do_execsql_test joinD-812 {
23420  SELECT t1.*, t2.*, t3.*, t4.*
23421  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23422  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23423  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23424  WHERE t2.x>0
23425  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23426} {
23427   6 106 206 306 106  6 206  6   -  -
23428  12 112 212 312 112 12 212 12   -  -
23429  18 118 218 318 118 18 218 18   -  -
23430  24 124 224 324 124 24 224 24   -  -
23431  30 130 230 330 130 30 230 30 330 30
23432  36 136 236 336 136 36 236 36   -  -
23433  42 142 242 342 142 42 242 42   -  -
23434  48 148 248 348 148 48 248 48   -  -
23435  54 154 254 354 154 54 254 54   -  -
23436  60 160 260 360 160 60 260 60 360 60
23437  66 166 266 366 166 66 266 66   -  -
23438  72 172 272 372 172 72 272 72   -  -
23439  78 178 278 378 178 78 278 78   -  -
23440  84 184 284 384 184 84 284 84   -  -
23441  90 190 290 390 190 90 290 90 390 90
23442}
23443do_execsql_test joinD-813 {
23444  SELECT t1.*, t2.*, t3.*, t4.*
23445  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23446  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23447  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23448  WHERE (t2.x>0 OR t2.x IS NULL)
23449  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23450} {
23451   6 106 206 306 106  6 206  6   -  -
23452  12 112 212 312 112 12 212 12   -  -
23453  18 118 218 318 118 18 218 18   -  -
23454  24 124 224 324 124 24 224 24   -  -
23455  30 130 230 330 130 30 230 30 330 30
23456  36 136 236 336 136 36 236 36   -  -
23457  42 142 242 342 142 42 242 42   -  -
23458  48 148 248 348 148 48 248 48   -  -
23459  54 154 254 354 154 54 254 54   -  -
23460  60 160 260 360 160 60 260 60 360 60
23461  66 166 266 366 166 66 266 66   -  -
23462  72 172 272 372 172 72 272 72   -  -
23463  78 178 278 378 178 78 278 78   -  -
23464  84 184 284 384 184 84 284 84   -  -
23465  90 190 290 390 190 90 290 90 390 90
23466   -   -   -   -   -  - 200  0   -  -
23467   -   -   -   -   -  - 203  3   -  -
23468   -   -   -   -   -  - 209  9   -  -
23469   -   -   -   -   -  - 215 15   -  -
23470   -   -   -   -   -  - 221 21   -  -
23471   -   -   -   -   -  - 227 27   -  -
23472   -   -   -   -   -  - 233 33   -  -
23473   -   -   -   -   -  - 239 39   -  -
23474   -   -   -   -   -  - 245 45   -  -
23475   -   -   -   -   -  - 251 51   -  -
23476   -   -   -   -   -  - 257 57   -  -
23477   -   -   -   -   -  - 263 63   -  -
23478   -   -   -   -   -  - 269 69   -  -
23479   -   -   -   -   -  - 275 75   -  -
23480   -   -   -   -   -  - 281 81   -  -
23481   -   -   -   -   -  - 287 87   -  -
23482   -   -   -   -   -  - 293 93   -  -
23483   -   -   -   -   -  -   -  - 300  0
23484   -   -   -   -   -  -   -  - 305  5
23485   -   -   -   -   -  -   -  - 310 10
23486   -   -   -   -   -  -   -  - 315 15
23487   -   -   -   -   -  -   -  - 320 20
23488   -   -   -   -   -  -   -  - 325 25
23489   -   -   -   -   -  -   -  - 335 35
23490   -   -   -   -   -  -   -  - 340 40
23491   -   -   -   -   -  -   -  - 345 45
23492   -   -   -   -   -  -   -  - 350 50
23493   -   -   -   -   -  -   -  - 355 55
23494   -   -   -   -   -  -   -  - 365 65
23495   -   -   -   -   -  -   -  - 370 70
23496   -   -   -   -   -  -   -  - 375 75
23497   -   -   -   -   -  -   -  - 380 80
23498   -   -   -   -   -  -   -  - 385 85
23499   -   -   -   -   -  -   -  - 395 95
23500}
23501do_execsql_test joinD-814 {
23502  SELECT t1.*, t2.*, t3.*, t4.*
23503  FROM t1 RIGHT JOIN t2 ON true
23504  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23505  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23506  WHERE t1.b=t2.b AND t2.x>0
23507  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23508} {
23509   6 106 206 306 106  6 206  6   -  -
23510  12 112 212 312 112 12 212 12   -  -
23511  18 118 218 318 118 18 218 18   -  -
23512  24 124 224 324 124 24 224 24   -  -
23513  30 130 230 330 130 30 230 30 330 30
23514  36 136 236 336 136 36 236 36   -  -
23515  42 142 242 342 142 42 242 42   -  -
23516  48 148 248 348 148 48 248 48   -  -
23517  54 154 254 354 154 54 254 54   -  -
23518  60 160 260 360 160 60 260 60 360 60
23519  66 166 266 366 166 66 266 66   -  -
23520  72 172 272 372 172 72 272 72   -  -
23521  78 178 278 378 178 78 278 78   -  -
23522  84 184 284 384 184 84 284 84   -  -
23523  90 190 290 390 190 90 290 90 390 90
23524}
23525do_execsql_test joinD-815 {
23526  SELECT t1.*, t2.*, t3.*, t4.*
23527  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23528  RIGHT JOIN t3 ON t1.c=t3.c
23529  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23530  WHERE t3.y>0
23531  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23532} {
23533   6 106 206 306 106  6 206  6   -  -
23534  12 112 212 312 112 12 212 12   -  -
23535  18 118 218 318 118 18 218 18   -  -
23536  24 124 224 324 124 24 224 24   -  -
23537  30 130 230 330 130 30 230 30 330 30
23538  36 136 236 336 136 36 236 36   -  -
23539  42 142 242 342 142 42 242 42   -  -
23540  48 148 248 348 148 48 248 48   -  -
23541  54 154 254 354 154 54 254 54   -  -
23542  60 160 260 360 160 60 260 60 360 60
23543  66 166 266 366 166 66 266 66   -  -
23544  72 172 272 372 172 72 272 72   -  -
23545  78 178 278 378 178 78 278 78   -  -
23546  84 184 284 384 184 84 284 84   -  -
23547  90 190 290 390 190 90 290 90 390 90
23548   -   -   -   -   -  - 203  3   -  -
23549   -   -   -   -   -  - 209  9   -  -
23550   -   -   -   -   -  - 215 15   -  -
23551   -   -   -   -   -  - 221 21   -  -
23552   -   -   -   -   -  - 227 27   -  -
23553   -   -   -   -   -  - 233 33   -  -
23554   -   -   -   -   -  - 239 39   -  -
23555   -   -   -   -   -  - 245 45   -  -
23556   -   -   -   -   -  - 251 51   -  -
23557   -   -   -   -   -  - 257 57   -  -
23558   -   -   -   -   -  - 263 63   -  -
23559   -   -   -   -   -  - 269 69   -  -
23560   -   -   -   -   -  - 275 75   -  -
23561   -   -   -   -   -  - 281 81   -  -
23562   -   -   -   -   -  - 287 87   -  -
23563   -   -   -   -   -  - 293 93   -  -
23564}
23565do_execsql_test joinD-816 {
23566  SELECT t1.*, t2.*, t3.*, t4.*
23567  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23568  RIGHT JOIN t3 ON t1.c=t3.c
23569  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23570  WHERE t3.y>0 OR t3.y IS NULL
23571  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23572} {
23573   6 106 206 306 106  6 206  6   -  -
23574  12 112 212 312 112 12 212 12   -  -
23575  18 118 218 318 118 18 218 18   -  -
23576  24 124 224 324 124 24 224 24   -  -
23577  30 130 230 330 130 30 230 30 330 30
23578  36 136 236 336 136 36 236 36   -  -
23579  42 142 242 342 142 42 242 42   -  -
23580  48 148 248 348 148 48 248 48   -  -
23581  54 154 254 354 154 54 254 54   -  -
23582  60 160 260 360 160 60 260 60 360 60
23583  66 166 266 366 166 66 266 66   -  -
23584  72 172 272 372 172 72 272 72   -  -
23585  78 178 278 378 178 78 278 78   -  -
23586  84 184 284 384 184 84 284 84   -  -
23587  90 190 290 390 190 90 290 90 390 90
23588   -   -   -   -   -  - 203  3   -  -
23589   -   -   -   -   -  - 209  9   -  -
23590   -   -   -   -   -  - 215 15   -  -
23591   -   -   -   -   -  - 221 21   -  -
23592   -   -   -   -   -  - 227 27   -  -
23593   -   -   -   -   -  - 233 33   -  -
23594   -   -   -   -   -  - 239 39   -  -
23595   -   -   -   -   -  - 245 45   -  -
23596   -   -   -   -   -  - 251 51   -  -
23597   -   -   -   -   -  - 257 57   -  -
23598   -   -   -   -   -  - 263 63   -  -
23599   -   -   -   -   -  - 269 69   -  -
23600   -   -   -   -   -  - 275 75   -  -
23601   -   -   -   -   -  - 281 81   -  -
23602   -   -   -   -   -  - 287 87   -  -
23603   -   -   -   -   -  - 293 93   -  -
23604   -   -   -   -   -  -   -  - 300  0
23605   -   -   -   -   -  -   -  - 305  5
23606   -   -   -   -   -  -   -  - 310 10
23607   -   -   -   -   -  -   -  - 315 15
23608   -   -   -   -   -  -   -  - 320 20
23609   -   -   -   -   -  -   -  - 325 25
23610   -   -   -   -   -  -   -  - 335 35
23611   -   -   -   -   -  -   -  - 340 40
23612   -   -   -   -   -  -   -  - 345 45
23613   -   -   -   -   -  -   -  - 350 50
23614   -   -   -   -   -  -   -  - 355 55
23615   -   -   -   -   -  -   -  - 365 65
23616   -   -   -   -   -  -   -  - 370 70
23617   -   -   -   -   -  -   -  - 375 75
23618   -   -   -   -   -  -   -  - 380 80
23619   -   -   -   -   -  -   -  - 385 85
23620   -   -   -   -   -  -   -  - 395 95
23621}
23622do_execsql_test joinD-817 {
23623  SELECT t1.*, t2.*, t3.*, t4.*
23624  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23625  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23626  FULL JOIN t4 ON t1.d=t4.d
23627  WHERE t4.z>0
23628  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23629} {
23630  30 130 230 330 130 30 230 30 330 30
23631  60 160 260 360 160 60 260 60 360 60
23632  90 190 290 390 190 90 290 90 390 90
23633   -   -   -   -   -  -   -  - 305  5
23634   -   -   -   -   -  -   -  - 310 10
23635   -   -   -   -   -  -   -  - 315 15
23636   -   -   -   -   -  -   -  - 320 20
23637   -   -   -   -   -  -   -  - 325 25
23638   -   -   -   -   -  -   -  - 335 35
23639   -   -   -   -   -  -   -  - 340 40
23640   -   -   -   -   -  -   -  - 345 45
23641   -   -   -   -   -  -   -  - 350 50
23642   -   -   -   -   -  -   -  - 355 55
23643   -   -   -   -   -  -   -  - 365 65
23644   -   -   -   -   -  -   -  - 370 70
23645   -   -   -   -   -  -   -  - 375 75
23646   -   -   -   -   -  -   -  - 380 80
23647   -   -   -   -   -  -   -  - 385 85
23648   -   -   -   -   -  -   -  - 395 95
23649}
23650do_execsql_test joinD-818 {
23651  SELECT t1.*, t2.*, t3.*, t4.*
23652  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23653  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23654  FULL JOIN t4 ON t1.d=t4.d
23655  WHERE t4.z IS NULL OR t4.z>0
23656  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23657} {
23658   6 106 206 306 106  6 206  6   -  -
23659  12 112 212 312 112 12 212 12   -  -
23660  18 118 218 318 118 18 218 18   -  -
23661  24 124 224 324 124 24 224 24   -  -
23662  30 130 230 330 130 30 230 30 330 30
23663  36 136 236 336 136 36 236 36   -  -
23664  42 142 242 342 142 42 242 42   -  -
23665  48 148 248 348 148 48 248 48   -  -
23666  54 154 254 354 154 54 254 54   -  -
23667  60 160 260 360 160 60 260 60 360 60
23668  66 166 266 366 166 66 266 66   -  -
23669  72 172 272 372 172 72 272 72   -  -
23670  78 178 278 378 178 78 278 78   -  -
23671  84 184 284 384 184 84 284 84   -  -
23672  90 190 290 390 190 90 290 90 390 90
23673   -   -   -   -   -  - 200  0   -  -
23674   -   -   -   -   -  - 203  3   -  -
23675   -   -   -   -   -  - 209  9   -  -
23676   -   -   -   -   -  - 215 15   -  -
23677   -   -   -   -   -  - 221 21   -  -
23678   -   -   -   -   -  - 227 27   -  -
23679   -   -   -   -   -  - 233 33   -  -
23680   -   -   -   -   -  - 239 39   -  -
23681   -   -   -   -   -  - 245 45   -  -
23682   -   -   -   -   -  - 251 51   -  -
23683   -   -   -   -   -  - 257 57   -  -
23684   -   -   -   -   -  - 263 63   -  -
23685   -   -   -   -   -  - 269 69   -  -
23686   -   -   -   -   -  - 275 75   -  -
23687   -   -   -   -   -  - 281 81   -  -
23688   -   -   -   -   -  - 287 87   -  -
23689   -   -   -   -   -  - 293 93   -  -
23690   -   -   -   -   -  -   -  - 305  5
23691   -   -   -   -   -  -   -  - 310 10
23692   -   -   -   -   -  -   -  - 315 15
23693   -   -   -   -   -  -   -  - 320 20
23694   -   -   -   -   -  -   -  - 325 25
23695   -   -   -   -   -  -   -  - 335 35
23696   -   -   -   -   -  -   -  - 340 40
23697   -   -   -   -   -  -   -  - 345 45
23698   -   -   -   -   -  -   -  - 350 50
23699   -   -   -   -   -  -   -  - 355 55
23700   -   -   -   -   -  -   -  - 365 65
23701   -   -   -   -   -  -   -  - 370 70
23702   -   -   -   -   -  -   -  - 375 75
23703   -   -   -   -   -  -   -  - 380 80
23704   -   -   -   -   -  -   -  - 385 85
23705   -   -   -   -   -  -   -  - 395 95
23706}
23707do_execsql_test joinD-819 {
23708  SELECT t1.*, t2.*, t3.*, t4.*
23709  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23710  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23711  FULL JOIN t4 ON t1.d=t4.d
23712  WHERE t2.x>0 AND t4.z>0
23713  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23714} {
23715  30 130 230 330 130 30 230 30 330 30
23716  60 160 260 360 160 60 260 60 360 60
23717  90 190 290 390 190 90 290 90 390 90
23718}
23719do_execsql_test joinD-820 {
23720  SELECT t1.*, t2.*, t3.*, t4.*
23721  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23722  RIGHT JOIN t3 ON t1.c=t3.c
23723  FULL JOIN t4 ON t1.d=t4.d
23724  WHERE t4.z>0 AND t3.y>0
23725  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23726} {
23727  30 130 230 330 130 30 230 30 330 30
23728  60 160 260 360 160 60 260 60 360 60
23729  90 190 290 390 190 90 290 90 390 90
23730}
23731do_execsql_test joinD-821 {
23732  SELECT t1.*, t2.*, t3.*, t4.*
23733  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23734  RIGHT JOIN t3 ON t1.c=t3.c
23735  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23736  WHERE t2.x>0 AND t3.y>0
23737  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23738} {
23739   6 106 206 306 106  6 206  6   -  -
23740  12 112 212 312 112 12 212 12   -  -
23741  18 118 218 318 118 18 218 18   -  -
23742  24 124 224 324 124 24 224 24   -  -
23743  30 130 230 330 130 30 230 30 330 30
23744  36 136 236 336 136 36 236 36   -  -
23745  42 142 242 342 142 42 242 42   -  -
23746  48 148 248 348 148 48 248 48   -  -
23747  54 154 254 354 154 54 254 54   -  -
23748  60 160 260 360 160 60 260 60 360 60
23749  66 166 266 366 166 66 266 66   -  -
23750  72 172 272 372 172 72 272 72   -  -
23751  78 178 278 378 178 78 278 78   -  -
23752  84 184 284 384 184 84 284 84   -  -
23753  90 190 290 390 190 90 290 90 390 90
23754}
23755do_execsql_test joinD-822 {
23756  SELECT t1.*, t2.*, t3.*, t4.*
23757  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
23758  RIGHT JOIN t3 ON t1.c=t3.c
23759  FULL JOIN t4 ON t1.d=t4.d
23760  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
23761  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23762} {
23763  30 130 230 330 130 30 230 30 330 30
23764  60 160 260 360 160 60 260 60 360 60
23765  90 190 290 390 190 90 290 90 390 90
23766}
23767do_execsql_test joinD-823 {
23768  SELECT t1.*, t2.*, t3.*, t4.*
23769  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
23770  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23771  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
23772  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23773} {
23774   6 106 206 306 106  6 206  6   -  -
23775  12 112 212 312 112 12 212 12   -  -
23776  18 118 218 318 118 18 218 18   -  -
23777  24 124 224 324 124 24 224 24   -  -
23778  30 130 230 330 130 30 230 30 330 30
23779  36 136 236 336 136 36 236 36   -  -
23780  42 142 242 342 142 42 242 42   -  -
23781  48 148 248 348 148 48 248 48   -  -
23782  54 154 254 354 154 54 254 54   -  -
23783  60 160 260 360 160 60 260 60 360 60
23784  66 166 266 366 166 66 266 66   -  -
23785  72 172 272 372 172 72 272 72   -  -
23786  78 178 278 378 178 78 278 78   -  -
23787  84 184 284 384 184 84 284 84   -  -
23788  90 190 290 390 190 90 290 90 390 90
23789   -   -   -   -   -  - 200  0   -  -
23790   -   -   -   -   -  - 203  3   -  -
23791   -   -   -   -   -  - 209  9   -  -
23792   -   -   -   -   -  - 215 15   -  -
23793   -   -   -   -   -  - 221 21   -  -
23794   -   -   -   -   -  - 227 27   -  -
23795   -   -   -   -   -  - 233 33   -  -
23796   -   -   -   -   -  - 239 39   -  -
23797   -   -   -   -   -  - 245 45   -  -
23798   -   -   -   -   -  - 251 51   -  -
23799   -   -   -   -   -  - 257 57   -  -
23800   -   -   -   -   -  - 263 63   -  -
23801   -   -   -   -   -  - 269 69   -  -
23802   -   -   -   -   -  - 275 75   -  -
23803   -   -   -   -   -  - 281 81   -  -
23804   -   -   -   -   -  - 287 87   -  -
23805   -   -   -   -   -  - 293 93   -  -
23806   -   -   -   -   -  -   -  - 300  0
23807   -   -   -   -   -  -   -  - 305  5
23808   -   -   -   -   -  -   -  - 310 10
23809   -   -   -   -   -  -   -  - 315 15
23810   -   -   -   -   -  -   -  - 320 20
23811   -   -   -   -   -  -   -  - 325 25
23812   -   -   -   -   -  -   -  - 335 35
23813   -   -   -   -   -  -   -  - 340 40
23814   -   -   -   -   -  -   -  - 345 45
23815   -   -   -   -   -  -   -  - 350 50
23816   -   -   -   -   -  -   -  - 355 55
23817   -   -   -   -   -  -   -  - 365 65
23818   -   -   -   -   -  -   -  - 370 70
23819   -   -   -   -   -  -   -  - 375 75
23820   -   -   -   -   -  -   -  - 380 80
23821   -   -   -   -   -  -   -  - 385 85
23822   -   -   -   -   -  -   -  - 395 95
23823}
23824do_execsql_test joinD-824 {
23825  SELECT t1.*, t2.*, t3.*, t4.*
23826  FROM t1 RIGHT JOIN t2 ON t2.x>0
23827  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23828  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
23829  WHERE t1.b IS NOT DISTINCT FROM t2.b
23830  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23831} {
23832   6 106 206 306 106  6 206  6   -  -
23833  12 112 212 312 112 12 212 12   -  -
23834  18 118 218 318 118 18 218 18   -  -
23835  24 124 224 324 124 24 224 24   -  -
23836  30 130 230 330 130 30 230 30 330 30
23837  36 136 236 336 136 36 236 36   -  -
23838  42 142 242 342 142 42 242 42   -  -
23839  48 148 248 348 148 48 248 48   -  -
23840  54 154 254 354 154 54 254 54   -  -
23841  60 160 260 360 160 60 260 60 360 60
23842  66 166 266 366 166 66 266 66   -  -
23843  72 172 272 372 172 72 272 72   -  -
23844  78 178 278 378 178 78 278 78   -  -
23845  84 184 284 384 184 84 284 84   -  -
23846  90 190 290 390 190 90 290 90 390 90
23847   -   -   -   -   -  - 200  0   -  -
23848   -   -   -   -   -  -   -  - 300  0
23849   -   -   -   -   -  -   -  - 305  5
23850   -   -   -   -   -  -   -  - 310 10
23851   -   -   -   -   -  -   -  - 320 20
23852   -   -   -   -   -  -   -  - 325 25
23853   -   -   -   -   -  -   -  - 335 35
23854   -   -   -   -   -  -   -  - 340 40
23855   -   -   -   -   -  -   -  - 350 50
23856   -   -   -   -   -  -   -  - 355 55
23857   -   -   -   -   -  -   -  - 365 65
23858   -   -   -   -   -  -   -  - 370 70
23859   -   -   -   -   -  -   -  - 380 80
23860   -   -   -   -   -  -   -  - 385 85
23861   -   -   -   -   -  -   -  - 395 95
23862}
23863do_execsql_test joinD-825 {
23864  SELECT t1.*, t2.*, t3.*, t4.*
23865  FROM t1 RIGHT JOIN t2 ON t2.x>0
23866  RIGHT JOIN t3 ON t3.y>0
23867  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
23868  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c IS NOT DISTINCT FROM t3.c
23869  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23870} {
23871   6 106 206 306 106  6 206  6   -  -
23872  12 112 212 312 112 12 212 12   -  -
23873  18 118 218 318 118 18 218 18   -  -
23874  24 124 224 324 124 24 224 24   -  -
23875  30 130 230 330 130 30 230 30 330 30
23876  36 136 236 336 136 36 236 36   -  -
23877  42 142 242 342 142 42 242 42   -  -
23878  48 148 248 348 148 48 248 48   -  -
23879  54 154 254 354 154 54 254 54   -  -
23880  60 160 260 360 160 60 260 60 360 60
23881  66 166 266 366 166 66 266 66   -  -
23882  72 172 272 372 172 72 272 72   -  -
23883  78 178 278 378 178 78 278 78   -  -
23884  84 184 284 384 184 84 284 84   -  -
23885  90 190 290 390 190 90 290 90 390 90
23886   -   -   -   -   -  -   -  - 300  0
23887}
23888do_execsql_test joinD-826 {
23889  SELECT t1.*, t2.*, t3.*, t4.*
23890  FROM t1 RIGHT JOIN t2 ON t2.x>0
23891  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
23892  FULL JOIN t4 ON t4.z>0
23893  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
23894  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23895} {
23896  30 130 230 330 130 30 230 30 330 30
23897  60 160 260 360 160 60 260 60 360 60
23898  90 190 290 390 190 90 290 90 390 90
23899}
23900do_execsql_test joinD-827 {
23901  SELECT t1.*, t2.*, t3.*, t4.*
23902  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
23903  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
23904  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23905  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23906} {
23907   6 106 206 306 106  6 206  6   -  -
23908  12 112 212 312 112 12 212 12   -  -
23909  18 118 218 318 118 18 218 18   -  -
23910  24 124 224 324 124 24 224 24   -  -
23911  30 130 230 330 130 30 230 30 330 30
23912  36 136 236 336 136 36 236 36   -  -
23913  42 142 242 342 142 42 242 42   -  -
23914  48 148 248 348 148 48 248 48   -  -
23915  54 154 254 354 154 54 254 54   -  -
23916  60 160 260 360 160 60 260 60 360 60
23917  66 166 266 366 166 66 266 66   -  -
23918  72 172 272 372 172 72 272 72   -  -
23919  78 178 278 378 178 78 278 78   -  -
23920  84 184 284 384 184 84 284 84   -  -
23921  90 190 290 390 190 90 290 90 390 90
23922   -   -   -   -   -  - 200  0   -  -
23923   -   -   -   -   -  - 203  3   -  -
23924   -   -   -   -   -  - 209  9   -  -
23925   -   -   -   -   -  - 215 15   -  -
23926   -   -   -   -   -  - 221 21   -  -
23927   -   -   -   -   -  - 227 27   -  -
23928   -   -   -   -   -  - 233 33   -  -
23929   -   -   -   -   -  - 239 39   -  -
23930   -   -   -   -   -  - 245 45   -  -
23931   -   -   -   -   -  - 251 51   -  -
23932   -   -   -   -   -  - 257 57   -  -
23933   -   -   -   -   -  - 263 63   -  -
23934   -   -   -   -   -  - 269 69   -  -
23935   -   -   -   -   -  - 275 75   -  -
23936   -   -   -   -   -  - 281 81   -  -
23937   -   -   -   -   -  - 287 87   -  -
23938   -   -   -   -   -  - 293 93   -  -
23939   -   -   -   -   -  -   -  - 300  0
23940   -   -   -   -   -  -   -  - 305  5
23941   -   -   -   -   -  -   -  - 310 10
23942   -   -   -   -   -  -   -  - 315 15
23943   -   -   -   -   -  -   -  - 320 20
23944   -   -   -   -   -  -   -  - 325 25
23945   -   -   -   -   -  -   -  - 335 35
23946   -   -   -   -   -  -   -  - 340 40
23947   -   -   -   -   -  -   -  - 345 45
23948   -   -   -   -   -  -   -  - 350 50
23949   -   -   -   -   -  -   -  - 355 55
23950   -   -   -   -   -  -   -  - 365 65
23951   -   -   -   -   -  -   -  - 370 70
23952   -   -   -   -   -  -   -  - 375 75
23953   -   -   -   -   -  -   -  - 380 80
23954   -   -   -   -   -  -   -  - 385 85
23955   -   -   -   -   -  -   -  - 395 95
23956}
23957do_execsql_test joinD-828 {
23958  SELECT t1.*, t2.*, t3.*, t4.*
23959  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
23960  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
23961  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
23962  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
23963} {
23964   6 106 206 306 106  6 206  6   -  -
23965  12 112 212 312 112 12 212 12   -  -
23966  18 118 218 318 118 18 218 18   -  -
23967  24 124 224 324 124 24 224 24   -  -
23968  30 130 230 330 130 30 230 30 330 30
23969  36 136 236 336 136 36 236 36   -  -
23970  42 142 242 342 142 42 242 42   -  -
23971  48 148 248 348 148 48 248 48   -  -
23972  54 154 254 354 154 54 254 54   -  -
23973  60 160 260 360 160 60 260 60 360 60
23974  66 166 266 366 166 66 266 66   -  -
23975  72 172 272 372 172 72 272 72   -  -
23976  78 178 278 378 178 78 278 78   -  -
23977  84 184 284 384 184 84 284 84   -  -
23978  90 190 290 390 190 90 290 90 390 90
23979   -   -   -   -   -  - 200  0   -  -
23980   -   -   -   -   -  - 203  3   -  -
23981   -   -   -   -   -  - 209  9   -  -
23982   -   -   -   -   -  - 215 15   -  -
23983   -   -   -   -   -  - 221 21   -  -
23984   -   -   -   -   -  - 227 27   -  -
23985   -   -   -   -   -  - 233 33   -  -
23986   -   -   -   -   -  - 239 39   -  -
23987   -   -   -   -   -  - 245 45   -  -
23988   -   -   -   -   -  - 251 51   -  -
23989   -   -   -   -   -  - 257 57   -  -
23990   -   -   -   -   -  - 263 63   -  -
23991   -   -   -   -   -  - 269 69   -  -
23992   -   -   -   -   -  - 275 75   -  -
23993   -   -   -   -   -  - 281 81   -  -
23994   -   -   -   -   -  - 287 87   -  -
23995   -   -   -   -   -  - 293 93   -  -
23996   -   -   -   -   -  -   -  - 300  0
23997   -   -   -   -   -  -   -  - 305  5
23998   -   -   -   -   -  -   -  - 310 10
23999   -   -   -   -   -  -   -  - 315 15
24000   -   -   -   -   -  -   -  - 320 20
24001   -   -   -   -   -  -   -  - 325 25
24002   -   -   -   -   -  -   -  - 335 35
24003   -   -   -   -   -  -   -  - 340 40
24004   -   -   -   -   -  -   -  - 345 45
24005   -   -   -   -   -  -   -  - 350 50
24006   -   -   -   -   -  -   -  - 355 55
24007   -   -   -   -   -  -   -  - 365 65
24008   -   -   -   -   -  -   -  - 370 70
24009   -   -   -   -   -  -   -  - 375 75
24010   -   -   -   -   -  -   -  - 380 80
24011   -   -   -   -   -  -   -  - 385 85
24012   -   -   -   -   -  -   -  - 395 95
24013}
24014do_execsql_test joinD-829 {
24015  SELECT t1.*, t2.*, t3.*, t4.*
24016  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24017  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24018  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24019  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24020} {
24021  10 110 210 310 110 10   -  - 310 10
24022  20 120 220 320 120 20   -  - 320 20
24023  30 130 230 330 130 30 230 30 330 30
24024  40 140 240 340 140 40   -  - 340 40
24025  50 150 250 350 150 50   -  - 350 50
24026  60 160 260 360 160 60 260 60 360 60
24027  70 170 270 370 170 70   -  - 370 70
24028  80 180 280 380 180 80   -  - 380 80
24029  90 190 290 390 190 90 290 90 390 90
24030}
24031do_execsql_test joinD-830 {
24032  SELECT t1.*, t2.*, t3.*, t4.*
24033  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24034  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24035  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24036  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24037} {
24038  10 110 210 310 110 10   -  - 310 10
24039  20 120 220 320 120 20   -  - 320 20
24040  30 130 230 330 130 30 230 30 330 30
24041  40 140 240 340 140 40   -  - 340 40
24042  50 150 250 350 150 50   -  - 350 50
24043  60 160 260 360 160 60 260 60 360 60
24044  70 170 270 370 170 70   -  - 370 70
24045  80 180 280 380 180 80   -  - 380 80
24046  90 190 290 390 190 90 290 90 390 90
24047}
24048do_execsql_test joinD-831 {
24049  SELECT t1.*, t2.*, t3.*, t4.*
24050  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24051  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24052  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24053  WHERE t2.x>0
24054  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24055} {
24056  10 110 210 310 110 10   -  - 310 10
24057  20 120 220 320 120 20   -  - 320 20
24058  30 130 230 330 130 30 230 30 330 30
24059  40 140 240 340 140 40   -  - 340 40
24060  50 150 250 350 150 50   -  - 350 50
24061  60 160 260 360 160 60 260 60 360 60
24062  70 170 270 370 170 70   -  - 370 70
24063  80 180 280 380 180 80   -  - 380 80
24064  90 190 290 390 190 90 290 90 390 90
24065}
24066do_execsql_test joinD-832 {
24067  SELECT t1.*, t2.*, t3.*, t4.*
24068  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24069  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24070  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24071  WHERE (t2.x>0 OR t2.x IS NULL)
24072  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24073} {
24074  10 110 210 310 110 10   -  - 310 10
24075  20 120 220 320 120 20   -  - 320 20
24076  30 130 230 330 130 30 230 30 330 30
24077  40 140 240 340 140 40   -  - 340 40
24078  50 150 250 350 150 50   -  - 350 50
24079  60 160 260 360 160 60 260 60 360 60
24080  70 170 270 370 170 70   -  - 370 70
24081  80 180 280 380 180 80   -  - 380 80
24082  90 190 290 390 190 90 290 90 390 90
24083}
24084do_execsql_test joinD-833 {
24085  SELECT t1.*, t2.*, t3.*, t4.*
24086  FROM t1 RIGHT JOIN t2 ON true
24087  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24088  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24089  WHERE t1.b=t2.b AND t2.x>0
24090  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24091} {
24092  10 110 210 310 110 10   -  - 310 10
24093  20 120 220 320 120 20   -  - 320 20
24094  30 130 230 330 130 30 230 30 330 30
24095  40 140 240 340 140 40   -  - 340 40
24096  50 150 250 350 150 50   -  - 350 50
24097  60 160 260 360 160 60 260 60 360 60
24098  70 170 270 370 170 70   -  - 370 70
24099  80 180 280 380 180 80   -  - 380 80
24100  90 190 290 390 190 90 290 90 390 90
24101}
24102do_execsql_test joinD-834 {
24103  SELECT t1.*, t2.*, t3.*, t4.*
24104  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24105  FULL JOIN t3 ON t1.c=t3.c
24106  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24107  WHERE t3.y>0
24108  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24109} {
24110  30 130 230 330 130 30 230 30 330 30
24111  60 160 260 360 160 60 260 60 360 60
24112  90 190 290 390 190 90 290 90 390 90
24113}
24114do_execsql_test joinD-835 {
24115  SELECT t1.*, t2.*, t3.*, t4.*
24116  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24117  FULL JOIN t3 ON t1.c=t3.c
24118  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24119  WHERE t3.y>0 OR t3.y IS NULL
24120  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24121} {
24122  10 110 210 310 110 10   -  - 310 10
24123  20 120 220 320 120 20   -  - 320 20
24124  30 130 230 330 130 30 230 30 330 30
24125  40 140 240 340 140 40   -  - 340 40
24126  50 150 250 350 150 50   -  - 350 50
24127  60 160 260 360 160 60 260 60 360 60
24128  70 170 270 370 170 70   -  - 370 70
24129  80 180 280 380 180 80   -  - 380 80
24130  90 190 290 390 190 90 290 90 390 90
24131}
24132do_execsql_test joinD-836 {
24133  SELECT t1.*, t2.*, t3.*, t4.*
24134  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24135  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24136  INNER JOIN t4 ON t1.d=t4.d
24137  WHERE t4.z>0
24138  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24139} {
24140  10 110 210 310 110 10   -  - 310 10
24141  20 120 220 320 120 20   -  - 320 20
24142  30 130 230 330 130 30 230 30 330 30
24143  40 140 240 340 140 40   -  - 340 40
24144  50 150 250 350 150 50   -  - 350 50
24145  60 160 260 360 160 60 260 60 360 60
24146  70 170 270 370 170 70   -  - 370 70
24147  80 180 280 380 180 80   -  - 380 80
24148  90 190 290 390 190 90 290 90 390 90
24149}
24150do_execsql_test joinD-837 {
24151  SELECT t1.*, t2.*, t3.*, t4.*
24152  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24153  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24154  INNER JOIN t4 ON t1.d=t4.d
24155  WHERE t4.z IS NULL OR t4.z>0
24156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24157} {
24158  10 110 210 310 110 10   -  - 310 10
24159  20 120 220 320 120 20   -  - 320 20
24160  30 130 230 330 130 30 230 30 330 30
24161  40 140 240 340 140 40   -  - 340 40
24162  50 150 250 350 150 50   -  - 350 50
24163  60 160 260 360 160 60 260 60 360 60
24164  70 170 270 370 170 70   -  - 370 70
24165  80 180 280 380 180 80   -  - 380 80
24166  90 190 290 390 190 90 290 90 390 90
24167}
24168do_execsql_test joinD-838 {
24169  SELECT t1.*, t2.*, t3.*, t4.*
24170  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24171  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24172  INNER JOIN t4 ON t1.d=t4.d
24173  WHERE t2.x>0 AND t4.z>0
24174  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24175} {
24176  10 110 210 310 110 10   -  - 310 10
24177  20 120 220 320 120 20   -  - 320 20
24178  30 130 230 330 130 30 230 30 330 30
24179  40 140 240 340 140 40   -  - 340 40
24180  50 150 250 350 150 50   -  - 350 50
24181  60 160 260 360 160 60 260 60 360 60
24182  70 170 270 370 170 70   -  - 370 70
24183  80 180 280 380 180 80   -  - 380 80
24184  90 190 290 390 190 90 290 90 390 90
24185}
24186do_execsql_test joinD-839 {
24187  SELECT t1.*, t2.*, t3.*, t4.*
24188  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24189  FULL JOIN t3 ON t1.c=t3.c
24190  INNER JOIN t4 ON t1.d=t4.d
24191  WHERE t4.z>0 AND t3.y>0
24192  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24193} {
24194  30 130 230 330 130 30 230 30 330 30
24195  60 160 260 360 160 60 260 60 360 60
24196  90 190 290 390 190 90 290 90 390 90
24197}
24198do_execsql_test joinD-840 {
24199  SELECT t1.*, t2.*, t3.*, t4.*
24200  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24201  FULL JOIN t3 ON t1.c=t3.c
24202  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24203  WHERE t2.x>0 AND t3.y>0
24204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24205} {
24206  30 130 230 330 130 30 230 30 330 30
24207  60 160 260 360 160 60 260 60 360 60
24208  90 190 290 390 190 90 290 90 390 90
24209}
24210do_execsql_test joinD-841 {
24211  SELECT t1.*, t2.*, t3.*, t4.*
24212  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24213  FULL JOIN t3 ON t1.c=t3.c
24214  INNER JOIN t4 ON t1.d=t4.d
24215  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
24216  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24217} {
24218  30 130 230 330 130 30 230 30 330 30
24219  60 160 260 360 160 60 260 60 360 60
24220  90 190 290 390 190 90 290 90 390 90
24221}
24222do_execsql_test joinD-842 {
24223  SELECT t1.*, t2.*, t3.*, t4.*
24224  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24225  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24226  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24227  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24228} {
24229  10 110 210 310 110 10   -  - 310 10
24230  20 120 220 320 120 20   -  - 320 20
24231  30 130 230 330 130 30 230 30 330 30
24232  40 140 240 340 140 40   -  - 340 40
24233  50 150 250 350 150 50   -  - 350 50
24234  60 160 260 360 160 60 260 60 360 60
24235  70 170 270 370 170 70   -  - 370 70
24236  80 180 280 380 180 80   -  - 380 80
24237  90 190 290 390 190 90 290 90 390 90
24238}
24239do_execsql_test joinD-843 {
24240  SELECT t1.*, t2.*, t3.*, t4.*
24241  FROM t1 RIGHT JOIN t2 ON t2.x>0
24242  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24243  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24244  WHERE t1.b IS NOT DISTINCT FROM t2.b
24245  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24246} {
24247  10 110 210 310 110 10   -  - 310 10
24248  20 120 220 320 120 20   -  - 320 20
24249  30 130 230 330 130 30 230 30 330 30
24250  40 140 240 340 140 40   -  - 340 40
24251  50 150 250 350 150 50   -  - 350 50
24252  60 160 260 360 160 60 260 60 360 60
24253  70 170 270 370 170 70   -  - 370 70
24254  80 180 280 380 180 80   -  - 380 80
24255  90 190 290 390 190 90 290 90 390 90
24256}
24257do_execsql_test joinD-844 {
24258  SELECT t1.*, t2.*, t3.*, t4.*
24259  FROM t1 RIGHT JOIN t2 ON t2.x>0
24260  FULL JOIN t3 ON t3.y>0
24261  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24262  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
24263  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24264} {
24265  30 130 230 330 130 30 230 30 330 30
24266  60 160 260 360 160 60 260 60 360 60
24267  90 190 290 390 190 90 290 90 390 90
24268}
24269do_execsql_test joinD-845 {
24270  SELECT t1.*, t2.*, t3.*, t4.*
24271  FROM t1 RIGHT JOIN t2 ON t2.x>0
24272  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24273  INNER JOIN t4 ON t4.z>0
24274  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
24275  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24276} {
24277  10 110 210 310 110 10   -  - 310 10
24278  20 120 220 320 120 20   -  - 320 20
24279  30 130 230 330 130 30 230 30 330 30
24280  40 140 240 340 140 40   -  - 340 40
24281  50 150 250 350 150 50   -  - 350 50
24282  60 160 260 360 160 60 260 60 360 60
24283  70 170 270 370 170 70   -  - 370 70
24284  80 180 280 380 180 80   -  - 380 80
24285  90 190 290 390 190 90 290 90 390 90
24286}
24287do_execsql_test joinD-846 {
24288  SELECT t1.*, t2.*, t3.*, t4.*
24289  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
24290  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24291  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
24292  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24293} {
24294  10 110 210 310 110 10   -  - 310 10
24295  20 120 220 320 120 20   -  - 320 20
24296  30 130 230 330 130 30 230 30 330 30
24297  40 140 240 340 140 40   -  - 340 40
24298  50 150 250 350 150 50   -  - 350 50
24299  60 160 260 360 160 60 260 60 360 60
24300  70 170 270 370 170 70   -  - 370 70
24301  80 180 280 380 180 80   -  - 380 80
24302  90 190 290 390 190 90 290 90 390 90
24303}
24304do_execsql_test joinD-847 {
24305  SELECT t1.*, t2.*, t3.*, t4.*
24306  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24307  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24308  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24309  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24310} {
24311   2 102 202 302 102  2   -  -   -  -
24312   4 104 204 304 104  4   -  -   -  -
24313   6 106 206 306 106  6 206  6   -  -
24314   8 108 208 308 108  8   -  -   -  -
24315  10 110 210 310 110 10   -  - 310 10
24316  12 112 212 312 112 12 212 12   -  -
24317  14 114 214 314 114 14   -  -   -  -
24318  16 116 216 316 116 16   -  -   -  -
24319  18 118 218 318 118 18 218 18   -  -
24320  20 120 220 320 120 20   -  - 320 20
24321  22 122 222 322 122 22   -  -   -  -
24322  24 124 224 324 124 24 224 24   -  -
24323  26 126 226 326 126 26   -  -   -  -
24324  28 128 228 328 128 28   -  -   -  -
24325  30 130 230 330 130 30 230 30 330 30
24326  32 132 232 332 132 32   -  -   -  -
24327  34 134 234 334 134 34   -  -   -  -
24328  36 136 236 336 136 36 236 36   -  -
24329  38 138 238 338 138 38   -  -   -  -
24330  40 140 240 340 140 40   -  - 340 40
24331  42 142 242 342 142 42 242 42   -  -
24332  44 144 244 344 144 44   -  -   -  -
24333  46 146 246 346 146 46   -  -   -  -
24334  48 148 248 348 148 48 248 48   -  -
24335  50 150 250 350 150 50   -  - 350 50
24336  52 152 252 352 152 52   -  -   -  -
24337  54 154 254 354 154 54 254 54   -  -
24338  56 156 256 356 156 56   -  -   -  -
24339  58 158 258 358 158 58   -  -   -  -
24340  60 160 260 360 160 60 260 60 360 60
24341  62 162 262 362 162 62   -  -   -  -
24342  64 164 264 364 164 64   -  -   -  -
24343  66 166 266 366 166 66 266 66   -  -
24344  68 168 268 368 168 68   -  -   -  -
24345  70 170 270 370 170 70   -  - 370 70
24346  72 172 272 372 172 72 272 72   -  -
24347  74 174 274 374 174 74   -  -   -  -
24348  76 176 276 376 176 76   -  -   -  -
24349  78 178 278 378 178 78 278 78   -  -
24350  80 180 280 380 180 80   -  - 380 80
24351  82 182 282 382 182 82   -  -   -  -
24352  84 184 284 384 184 84 284 84   -  -
24353  86 186 286 386 186 86   -  -   -  -
24354  88 188 288 388 188 88   -  -   -  -
24355  90 190 290 390 190 90 290 90 390 90
24356  92 192 292 392 192 92   -  -   -  -
24357  94 194 294 394 194 94   -  -   -  -
24358   -   -   -   - 100  0   -  -   -  -
24359   -   -   -   -   -  - 200  0   -  -
24360   -   -   -   -   -  - 203  3   -  -
24361   -   -   -   -   -  - 209  9   -  -
24362   -   -   -   -   -  - 215 15   -  -
24363   -   -   -   -   -  - 221 21   -  -
24364   -   -   -   -   -  - 227 27   -  -
24365   -   -   -   -   -  - 233 33   -  -
24366   -   -   -   -   -  - 239 39   -  -
24367   -   -   -   -   -  - 245 45   -  -
24368   -   -   -   -   -  - 251 51   -  -
24369   -   -   -   -   -  - 257 57   -  -
24370   -   -   -   -   -  - 263 63   -  -
24371   -   -   -   -   -  - 269 69   -  -
24372   -   -   -   -   -  - 275 75   -  -
24373   -   -   -   -   -  - 281 81   -  -
24374   -   -   -   -   -  - 287 87   -  -
24375   -   -   -   -   -  - 293 93   -  -
24376}
24377do_execsql_test joinD-848 {
24378  SELECT t1.*, t2.*, t3.*, t4.*
24379  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24380  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24381  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24382  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24383} {
24384   2 102 202 302 102  2   -  -   -  -
24385   4 104 204 304 104  4   -  -   -  -
24386   6 106 206 306 106  6 206  6   -  -
24387   8 108 208 308 108  8   -  -   -  -
24388  10 110 210 310 110 10   -  - 310 10
24389  12 112 212 312 112 12 212 12   -  -
24390  14 114 214 314 114 14   -  -   -  -
24391  16 116 216 316 116 16   -  -   -  -
24392  18 118 218 318 118 18 218 18   -  -
24393  20 120 220 320 120 20   -  - 320 20
24394  22 122 222 322 122 22   -  -   -  -
24395  24 124 224 324 124 24 224 24   -  -
24396  26 126 226 326 126 26   -  -   -  -
24397  28 128 228 328 128 28   -  -   -  -
24398  30 130 230 330 130 30 230 30 330 30
24399  32 132 232 332 132 32   -  -   -  -
24400  34 134 234 334 134 34   -  -   -  -
24401  36 136 236 336 136 36 236 36   -  -
24402  38 138 238 338 138 38   -  -   -  -
24403  40 140 240 340 140 40   -  - 340 40
24404  42 142 242 342 142 42 242 42   -  -
24405  44 144 244 344 144 44   -  -   -  -
24406  46 146 246 346 146 46   -  -   -  -
24407  48 148 248 348 148 48 248 48   -  -
24408  50 150 250 350 150 50   -  - 350 50
24409  52 152 252 352 152 52   -  -   -  -
24410  54 154 254 354 154 54 254 54   -  -
24411  56 156 256 356 156 56   -  -   -  -
24412  58 158 258 358 158 58   -  -   -  -
24413  60 160 260 360 160 60 260 60 360 60
24414  62 162 262 362 162 62   -  -   -  -
24415  64 164 264 364 164 64   -  -   -  -
24416  66 166 266 366 166 66 266 66   -  -
24417  68 168 268 368 168 68   -  -   -  -
24418  70 170 270 370 170 70   -  - 370 70
24419  72 172 272 372 172 72 272 72   -  -
24420  74 174 274 374 174 74   -  -   -  -
24421  76 176 276 376 176 76   -  -   -  -
24422  78 178 278 378 178 78 278 78   -  -
24423  80 180 280 380 180 80   -  - 380 80
24424  82 182 282 382 182 82   -  -   -  -
24425  84 184 284 384 184 84 284 84   -  -
24426  86 186 286 386 186 86   -  -   -  -
24427  88 188 288 388 188 88   -  -   -  -
24428  90 190 290 390 190 90 290 90 390 90
24429  92 192 292 392 192 92   -  -   -  -
24430  94 194 294 394 194 94   -  -   -  -
24431   -   -   -   - 100  0   -  -   -  -
24432   -   -   -   -   -  - 200  0   -  -
24433   -   -   -   -   -  - 203  3   -  -
24434   -   -   -   -   -  - 209  9   -  -
24435   -   -   -   -   -  - 215 15   -  -
24436   -   -   -   -   -  - 221 21   -  -
24437   -   -   -   -   -  - 227 27   -  -
24438   -   -   -   -   -  - 233 33   -  -
24439   -   -   -   -   -  - 239 39   -  -
24440   -   -   -   -   -  - 245 45   -  -
24441   -   -   -   -   -  - 251 51   -  -
24442   -   -   -   -   -  - 257 57   -  -
24443   -   -   -   -   -  - 263 63   -  -
24444   -   -   -   -   -  - 269 69   -  -
24445   -   -   -   -   -  - 275 75   -  -
24446   -   -   -   -   -  - 281 81   -  -
24447   -   -   -   -   -  - 287 87   -  -
24448   -   -   -   -   -  - 293 93   -  -
24449}
24450do_execsql_test joinD-849 {
24451  SELECT t1.*, t2.*, t3.*, t4.*
24452  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24453  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24454  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24455  WHERE t2.x>0
24456  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24457} {
24458   2 102 202 302 102  2   -  -   -  -
24459   4 104 204 304 104  4   -  -   -  -
24460   6 106 206 306 106  6 206  6   -  -
24461   8 108 208 308 108  8   -  -   -  -
24462  10 110 210 310 110 10   -  - 310 10
24463  12 112 212 312 112 12 212 12   -  -
24464  14 114 214 314 114 14   -  -   -  -
24465  16 116 216 316 116 16   -  -   -  -
24466  18 118 218 318 118 18 218 18   -  -
24467  20 120 220 320 120 20   -  - 320 20
24468  22 122 222 322 122 22   -  -   -  -
24469  24 124 224 324 124 24 224 24   -  -
24470  26 126 226 326 126 26   -  -   -  -
24471  28 128 228 328 128 28   -  -   -  -
24472  30 130 230 330 130 30 230 30 330 30
24473  32 132 232 332 132 32   -  -   -  -
24474  34 134 234 334 134 34   -  -   -  -
24475  36 136 236 336 136 36 236 36   -  -
24476  38 138 238 338 138 38   -  -   -  -
24477  40 140 240 340 140 40   -  - 340 40
24478  42 142 242 342 142 42 242 42   -  -
24479  44 144 244 344 144 44   -  -   -  -
24480  46 146 246 346 146 46   -  -   -  -
24481  48 148 248 348 148 48 248 48   -  -
24482  50 150 250 350 150 50   -  - 350 50
24483  52 152 252 352 152 52   -  -   -  -
24484  54 154 254 354 154 54 254 54   -  -
24485  56 156 256 356 156 56   -  -   -  -
24486  58 158 258 358 158 58   -  -   -  -
24487  60 160 260 360 160 60 260 60 360 60
24488  62 162 262 362 162 62   -  -   -  -
24489  64 164 264 364 164 64   -  -   -  -
24490  66 166 266 366 166 66 266 66   -  -
24491  68 168 268 368 168 68   -  -   -  -
24492  70 170 270 370 170 70   -  - 370 70
24493  72 172 272 372 172 72 272 72   -  -
24494  74 174 274 374 174 74   -  -   -  -
24495  76 176 276 376 176 76   -  -   -  -
24496  78 178 278 378 178 78 278 78   -  -
24497  80 180 280 380 180 80   -  - 380 80
24498  82 182 282 382 182 82   -  -   -  -
24499  84 184 284 384 184 84 284 84   -  -
24500  86 186 286 386 186 86   -  -   -  -
24501  88 188 288 388 188 88   -  -   -  -
24502  90 190 290 390 190 90 290 90 390 90
24503  92 192 292 392 192 92   -  -   -  -
24504  94 194 294 394 194 94   -  -   -  -
24505}
24506do_execsql_test joinD-850 {
24507  SELECT t1.*, t2.*, t3.*, t4.*
24508  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24509  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24510  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24511  WHERE (t2.x>0 OR t2.x IS NULL)
24512  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24513} {
24514   2 102 202 302 102  2   -  -   -  -
24515   4 104 204 304 104  4   -  -   -  -
24516   6 106 206 306 106  6 206  6   -  -
24517   8 108 208 308 108  8   -  -   -  -
24518  10 110 210 310 110 10   -  - 310 10
24519  12 112 212 312 112 12 212 12   -  -
24520  14 114 214 314 114 14   -  -   -  -
24521  16 116 216 316 116 16   -  -   -  -
24522  18 118 218 318 118 18 218 18   -  -
24523  20 120 220 320 120 20   -  - 320 20
24524  22 122 222 322 122 22   -  -   -  -
24525  24 124 224 324 124 24 224 24   -  -
24526  26 126 226 326 126 26   -  -   -  -
24527  28 128 228 328 128 28   -  -   -  -
24528  30 130 230 330 130 30 230 30 330 30
24529  32 132 232 332 132 32   -  -   -  -
24530  34 134 234 334 134 34   -  -   -  -
24531  36 136 236 336 136 36 236 36   -  -
24532  38 138 238 338 138 38   -  -   -  -
24533  40 140 240 340 140 40   -  - 340 40
24534  42 142 242 342 142 42 242 42   -  -
24535  44 144 244 344 144 44   -  -   -  -
24536  46 146 246 346 146 46   -  -   -  -
24537  48 148 248 348 148 48 248 48   -  -
24538  50 150 250 350 150 50   -  - 350 50
24539  52 152 252 352 152 52   -  -   -  -
24540  54 154 254 354 154 54 254 54   -  -
24541  56 156 256 356 156 56   -  -   -  -
24542  58 158 258 358 158 58   -  -   -  -
24543  60 160 260 360 160 60 260 60 360 60
24544  62 162 262 362 162 62   -  -   -  -
24545  64 164 264 364 164 64   -  -   -  -
24546  66 166 266 366 166 66 266 66   -  -
24547  68 168 268 368 168 68   -  -   -  -
24548  70 170 270 370 170 70   -  - 370 70
24549  72 172 272 372 172 72 272 72   -  -
24550  74 174 274 374 174 74   -  -   -  -
24551  76 176 276 376 176 76   -  -   -  -
24552  78 178 278 378 178 78 278 78   -  -
24553  80 180 280 380 180 80   -  - 380 80
24554  82 182 282 382 182 82   -  -   -  -
24555  84 184 284 384 184 84 284 84   -  -
24556  86 186 286 386 186 86   -  -   -  -
24557  88 188 288 388 188 88   -  -   -  -
24558  90 190 290 390 190 90 290 90 390 90
24559  92 192 292 392 192 92   -  -   -  -
24560  94 194 294 394 194 94   -  -   -  -
24561   -   -   -   -   -  - 200  0   -  -
24562   -   -   -   -   -  - 203  3   -  -
24563   -   -   -   -   -  - 209  9   -  -
24564   -   -   -   -   -  - 215 15   -  -
24565   -   -   -   -   -  - 221 21   -  -
24566   -   -   -   -   -  - 227 27   -  -
24567   -   -   -   -   -  - 233 33   -  -
24568   -   -   -   -   -  - 239 39   -  -
24569   -   -   -   -   -  - 245 45   -  -
24570   -   -   -   -   -  - 251 51   -  -
24571   -   -   -   -   -  - 257 57   -  -
24572   -   -   -   -   -  - 263 63   -  -
24573   -   -   -   -   -  - 269 69   -  -
24574   -   -   -   -   -  - 275 75   -  -
24575   -   -   -   -   -  - 281 81   -  -
24576   -   -   -   -   -  - 287 87   -  -
24577   -   -   -   -   -  - 293 93   -  -
24578}
24579do_execsql_test joinD-851 {
24580  SELECT t1.*, t2.*, t3.*, t4.*
24581  FROM t1 RIGHT JOIN t2 ON true
24582  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24583  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24584  WHERE t1.b=t2.b AND t2.x>0
24585  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24586} {
24587   2 102 202 302 102  2   -  -   -  -
24588   4 104 204 304 104  4   -  -   -  -
24589   6 106 206 306 106  6 206  6   -  -
24590   8 108 208 308 108  8   -  -   -  -
24591  10 110 210 310 110 10   -  - 310 10
24592  12 112 212 312 112 12 212 12   -  -
24593  14 114 214 314 114 14   -  -   -  -
24594  16 116 216 316 116 16   -  -   -  -
24595  18 118 218 318 118 18 218 18   -  -
24596  20 120 220 320 120 20   -  - 320 20
24597  22 122 222 322 122 22   -  -   -  -
24598  24 124 224 324 124 24 224 24   -  -
24599  26 126 226 326 126 26   -  -   -  -
24600  28 128 228 328 128 28   -  -   -  -
24601  30 130 230 330 130 30 230 30 330 30
24602  32 132 232 332 132 32   -  -   -  -
24603  34 134 234 334 134 34   -  -   -  -
24604  36 136 236 336 136 36 236 36   -  -
24605  38 138 238 338 138 38   -  -   -  -
24606  40 140 240 340 140 40   -  - 340 40
24607  42 142 242 342 142 42 242 42   -  -
24608  44 144 244 344 144 44   -  -   -  -
24609  46 146 246 346 146 46   -  -   -  -
24610  48 148 248 348 148 48 248 48   -  -
24611  50 150 250 350 150 50   -  - 350 50
24612  52 152 252 352 152 52   -  -   -  -
24613  54 154 254 354 154 54 254 54   -  -
24614  56 156 256 356 156 56   -  -   -  -
24615  58 158 258 358 158 58   -  -   -  -
24616  60 160 260 360 160 60 260 60 360 60
24617  62 162 262 362 162 62   -  -   -  -
24618  64 164 264 364 164 64   -  -   -  -
24619  66 166 266 366 166 66 266 66   -  -
24620  68 168 268 368 168 68   -  -   -  -
24621  70 170 270 370 170 70   -  - 370 70
24622  72 172 272 372 172 72 272 72   -  -
24623  74 174 274 374 174 74   -  -   -  -
24624  76 176 276 376 176 76   -  -   -  -
24625  78 178 278 378 178 78 278 78   -  -
24626  80 180 280 380 180 80   -  - 380 80
24627  82 182 282 382 182 82   -  -   -  -
24628  84 184 284 384 184 84 284 84   -  -
24629  86 186 286 386 186 86   -  -   -  -
24630  88 188 288 388 188 88   -  -   -  -
24631  90 190 290 390 190 90 290 90 390 90
24632  92 192 292 392 192 92   -  -   -  -
24633  94 194 294 394 194 94   -  -   -  -
24634}
24635do_execsql_test joinD-852 {
24636  SELECT t1.*, t2.*, t3.*, t4.*
24637  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24638  FULL JOIN t3 ON t1.c=t3.c
24639  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24640  WHERE t3.y>0
24641  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24642} {
24643   6 106 206 306 106  6 206  6   -  -
24644  12 112 212 312 112 12 212 12   -  -
24645  18 118 218 318 118 18 218 18   -  -
24646  24 124 224 324 124 24 224 24   -  -
24647  30 130 230 330 130 30 230 30 330 30
24648  36 136 236 336 136 36 236 36   -  -
24649  42 142 242 342 142 42 242 42   -  -
24650  48 148 248 348 148 48 248 48   -  -
24651  54 154 254 354 154 54 254 54   -  -
24652  60 160 260 360 160 60 260 60 360 60
24653  66 166 266 366 166 66 266 66   -  -
24654  72 172 272 372 172 72 272 72   -  -
24655  78 178 278 378 178 78 278 78   -  -
24656  84 184 284 384 184 84 284 84   -  -
24657  90 190 290 390 190 90 290 90 390 90
24658   -   -   -   -   -  - 203  3   -  -
24659   -   -   -   -   -  - 209  9   -  -
24660   -   -   -   -   -  - 215 15   -  -
24661   -   -   -   -   -  - 221 21   -  -
24662   -   -   -   -   -  - 227 27   -  -
24663   -   -   -   -   -  - 233 33   -  -
24664   -   -   -   -   -  - 239 39   -  -
24665   -   -   -   -   -  - 245 45   -  -
24666   -   -   -   -   -  - 251 51   -  -
24667   -   -   -   -   -  - 257 57   -  -
24668   -   -   -   -   -  - 263 63   -  -
24669   -   -   -   -   -  - 269 69   -  -
24670   -   -   -   -   -  - 275 75   -  -
24671   -   -   -   -   -  - 281 81   -  -
24672   -   -   -   -   -  - 287 87   -  -
24673   -   -   -   -   -  - 293 93   -  -
24674}
24675do_execsql_test joinD-853 {
24676  SELECT t1.*, t2.*, t3.*, t4.*
24677  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24678  FULL JOIN t3 ON t1.c=t3.c
24679  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24680  WHERE t3.y>0 OR t3.y IS NULL
24681  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24682} {
24683   2 102 202 302 102  2   -  -   -  -
24684   4 104 204 304 104  4   -  -   -  -
24685   6 106 206 306 106  6 206  6   -  -
24686   8 108 208 308 108  8   -  -   -  -
24687  10 110 210 310 110 10   -  - 310 10
24688  12 112 212 312 112 12 212 12   -  -
24689  14 114 214 314 114 14   -  -   -  -
24690  16 116 216 316 116 16   -  -   -  -
24691  18 118 218 318 118 18 218 18   -  -
24692  20 120 220 320 120 20   -  - 320 20
24693  22 122 222 322 122 22   -  -   -  -
24694  24 124 224 324 124 24 224 24   -  -
24695  26 126 226 326 126 26   -  -   -  -
24696  28 128 228 328 128 28   -  -   -  -
24697  30 130 230 330 130 30 230 30 330 30
24698  32 132 232 332 132 32   -  -   -  -
24699  34 134 234 334 134 34   -  -   -  -
24700  36 136 236 336 136 36 236 36   -  -
24701  38 138 238 338 138 38   -  -   -  -
24702  40 140 240 340 140 40   -  - 340 40
24703  42 142 242 342 142 42 242 42   -  -
24704  44 144 244 344 144 44   -  -   -  -
24705  46 146 246 346 146 46   -  -   -  -
24706  48 148 248 348 148 48 248 48   -  -
24707  50 150 250 350 150 50   -  - 350 50
24708  52 152 252 352 152 52   -  -   -  -
24709  54 154 254 354 154 54 254 54   -  -
24710  56 156 256 356 156 56   -  -   -  -
24711  58 158 258 358 158 58   -  -   -  -
24712  60 160 260 360 160 60 260 60 360 60
24713  62 162 262 362 162 62   -  -   -  -
24714  64 164 264 364 164 64   -  -   -  -
24715  66 166 266 366 166 66 266 66   -  -
24716  68 168 268 368 168 68   -  -   -  -
24717  70 170 270 370 170 70   -  - 370 70
24718  72 172 272 372 172 72 272 72   -  -
24719  74 174 274 374 174 74   -  -   -  -
24720  76 176 276 376 176 76   -  -   -  -
24721  78 178 278 378 178 78 278 78   -  -
24722  80 180 280 380 180 80   -  - 380 80
24723  82 182 282 382 182 82   -  -   -  -
24724  84 184 284 384 184 84 284 84   -  -
24725  86 186 286 386 186 86   -  -   -  -
24726  88 188 288 388 188 88   -  -   -  -
24727  90 190 290 390 190 90 290 90 390 90
24728  92 192 292 392 192 92   -  -   -  -
24729  94 194 294 394 194 94   -  -   -  -
24730   -   -   -   - 100  0   -  -   -  -
24731   -   -   -   -   -  - 203  3   -  -
24732   -   -   -   -   -  - 209  9   -  -
24733   -   -   -   -   -  - 215 15   -  -
24734   -   -   -   -   -  - 221 21   -  -
24735   -   -   -   -   -  - 227 27   -  -
24736   -   -   -   -   -  - 233 33   -  -
24737   -   -   -   -   -  - 239 39   -  -
24738   -   -   -   -   -  - 245 45   -  -
24739   -   -   -   -   -  - 251 51   -  -
24740   -   -   -   -   -  - 257 57   -  -
24741   -   -   -   -   -  - 263 63   -  -
24742   -   -   -   -   -  - 269 69   -  -
24743   -   -   -   -   -  - 275 75   -  -
24744   -   -   -   -   -  - 281 81   -  -
24745   -   -   -   -   -  - 287 87   -  -
24746   -   -   -   -   -  - 293 93   -  -
24747}
24748do_execsql_test joinD-854 {
24749  SELECT t1.*, t2.*, t3.*, t4.*
24750  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24751  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24752  LEFT JOIN t4 ON t1.d=t4.d
24753  WHERE t4.z>0
24754  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24755} {
24756  10 110 210 310 110 10   -  - 310 10
24757  20 120 220 320 120 20   -  - 320 20
24758  30 130 230 330 130 30 230 30 330 30
24759  40 140 240 340 140 40   -  - 340 40
24760  50 150 250 350 150 50   -  - 350 50
24761  60 160 260 360 160 60 260 60 360 60
24762  70 170 270 370 170 70   -  - 370 70
24763  80 180 280 380 180 80   -  - 380 80
24764  90 190 290 390 190 90 290 90 390 90
24765}
24766do_execsql_test joinD-855 {
24767  SELECT t1.*, t2.*, t3.*, t4.*
24768  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24769  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24770  LEFT JOIN t4 ON t1.d=t4.d
24771  WHERE t4.z IS NULL OR t4.z>0
24772  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24773} {
24774   2 102 202 302 102  2   -  -   -  -
24775   4 104 204 304 104  4   -  -   -  -
24776   6 106 206 306 106  6 206  6   -  -
24777   8 108 208 308 108  8   -  -   -  -
24778  10 110 210 310 110 10   -  - 310 10
24779  12 112 212 312 112 12 212 12   -  -
24780  14 114 214 314 114 14   -  -   -  -
24781  16 116 216 316 116 16   -  -   -  -
24782  18 118 218 318 118 18 218 18   -  -
24783  20 120 220 320 120 20   -  - 320 20
24784  22 122 222 322 122 22   -  -   -  -
24785  24 124 224 324 124 24 224 24   -  -
24786  26 126 226 326 126 26   -  -   -  -
24787  28 128 228 328 128 28   -  -   -  -
24788  30 130 230 330 130 30 230 30 330 30
24789  32 132 232 332 132 32   -  -   -  -
24790  34 134 234 334 134 34   -  -   -  -
24791  36 136 236 336 136 36 236 36   -  -
24792  38 138 238 338 138 38   -  -   -  -
24793  40 140 240 340 140 40   -  - 340 40
24794  42 142 242 342 142 42 242 42   -  -
24795  44 144 244 344 144 44   -  -   -  -
24796  46 146 246 346 146 46   -  -   -  -
24797  48 148 248 348 148 48 248 48   -  -
24798  50 150 250 350 150 50   -  - 350 50
24799  52 152 252 352 152 52   -  -   -  -
24800  54 154 254 354 154 54 254 54   -  -
24801  56 156 256 356 156 56   -  -   -  -
24802  58 158 258 358 158 58   -  -   -  -
24803  60 160 260 360 160 60 260 60 360 60
24804  62 162 262 362 162 62   -  -   -  -
24805  64 164 264 364 164 64   -  -   -  -
24806  66 166 266 366 166 66 266 66   -  -
24807  68 168 268 368 168 68   -  -   -  -
24808  70 170 270 370 170 70   -  - 370 70
24809  72 172 272 372 172 72 272 72   -  -
24810  74 174 274 374 174 74   -  -   -  -
24811  76 176 276 376 176 76   -  -   -  -
24812  78 178 278 378 178 78 278 78   -  -
24813  80 180 280 380 180 80   -  - 380 80
24814  82 182 282 382 182 82   -  -   -  -
24815  84 184 284 384 184 84 284 84   -  -
24816  86 186 286 386 186 86   -  -   -  -
24817  88 188 288 388 188 88   -  -   -  -
24818  90 190 290 390 190 90 290 90 390 90
24819  92 192 292 392 192 92   -  -   -  -
24820  94 194 294 394 194 94   -  -   -  -
24821   -   -   -   - 100  0   -  -   -  -
24822   -   -   -   -   -  - 200  0   -  -
24823   -   -   -   -   -  - 203  3   -  -
24824   -   -   -   -   -  - 209  9   -  -
24825   -   -   -   -   -  - 215 15   -  -
24826   -   -   -   -   -  - 221 21   -  -
24827   -   -   -   -   -  - 227 27   -  -
24828   -   -   -   -   -  - 233 33   -  -
24829   -   -   -   -   -  - 239 39   -  -
24830   -   -   -   -   -  - 245 45   -  -
24831   -   -   -   -   -  - 251 51   -  -
24832   -   -   -   -   -  - 257 57   -  -
24833   -   -   -   -   -  - 263 63   -  -
24834   -   -   -   -   -  - 269 69   -  -
24835   -   -   -   -   -  - 275 75   -  -
24836   -   -   -   -   -  - 281 81   -  -
24837   -   -   -   -   -  - 287 87   -  -
24838   -   -   -   -   -  - 293 93   -  -
24839}
24840do_execsql_test joinD-856 {
24841  SELECT t1.*, t2.*, t3.*, t4.*
24842  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24843  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
24844  LEFT JOIN t4 ON t1.d=t4.d
24845  WHERE t2.x>0 AND t4.z>0
24846  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24847} {
24848  10 110 210 310 110 10   -  - 310 10
24849  20 120 220 320 120 20   -  - 320 20
24850  30 130 230 330 130 30 230 30 330 30
24851  40 140 240 340 140 40   -  - 340 40
24852  50 150 250 350 150 50   -  - 350 50
24853  60 160 260 360 160 60 260 60 360 60
24854  70 170 270 370 170 70   -  - 370 70
24855  80 180 280 380 180 80   -  - 380 80
24856  90 190 290 390 190 90 290 90 390 90
24857}
24858do_execsql_test joinD-857 {
24859  SELECT t1.*, t2.*, t3.*, t4.*
24860  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
24861  FULL JOIN t3 ON t1.c=t3.c
24862  LEFT JOIN t4 ON t1.d=t4.d
24863  WHERE t4.z>0 AND t3.y>0
24864  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24865} {
24866  30 130 230 330 130 30 230 30 330 30
24867  60 160 260 360 160 60 260 60 360 60
24868  90 190 290 390 190 90 290 90 390 90
24869}
24870do_execsql_test joinD-858 {
24871  SELECT t1.*, t2.*, t3.*, t4.*
24872  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24873  FULL JOIN t3 ON t1.c=t3.c
24874  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
24875  WHERE t2.x>0 AND t3.y>0
24876  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24877} {
24878   6 106 206 306 106  6 206  6   -  -
24879  12 112 212 312 112 12 212 12   -  -
24880  18 118 218 318 118 18 218 18   -  -
24881  24 124 224 324 124 24 224 24   -  -
24882  30 130 230 330 130 30 230 30 330 30
24883  36 136 236 336 136 36 236 36   -  -
24884  42 142 242 342 142 42 242 42   -  -
24885  48 148 248 348 148 48 248 48   -  -
24886  54 154 254 354 154 54 254 54   -  -
24887  60 160 260 360 160 60 260 60 360 60
24888  66 166 266 366 166 66 266 66   -  -
24889  72 172 272 372 172 72 272 72   -  -
24890  78 178 278 378 178 78 278 78   -  -
24891  84 184 284 384 184 84 284 84   -  -
24892  90 190 290 390 190 90 290 90 390 90
24893}
24894do_execsql_test joinD-859 {
24895  SELECT t1.*, t2.*, t3.*, t4.*
24896  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
24897  FULL JOIN t3 ON t1.c=t3.c
24898  LEFT JOIN t4 ON t1.d=t4.d
24899  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
24900  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24901} {
24902  30 130 230 330 130 30 230 30 330 30
24903  60 160 260 360 160 60 260 60 360 60
24904  90 190 290 390 190 90 290 90 390 90
24905}
24906do_execsql_test joinD-860 {
24907  SELECT t1.*, t2.*, t3.*, t4.*
24908  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
24909  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24910  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24911  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24912} {
24913   2 102 202 302 102  2   -  -   -  -
24914   4 104 204 304 104  4   -  -   -  -
24915   6 106 206 306 106  6 206  6   -  -
24916   8 108 208 308 108  8   -  -   -  -
24917  10 110 210 310 110 10   -  - 310 10
24918  12 112 212 312 112 12 212 12   -  -
24919  14 114 214 314 114 14   -  -   -  -
24920  16 116 216 316 116 16   -  -   -  -
24921  18 118 218 318 118 18 218 18   -  -
24922  20 120 220 320 120 20   -  - 320 20
24923  22 122 222 322 122 22   -  -   -  -
24924  24 124 224 324 124 24 224 24   -  -
24925  26 126 226 326 126 26   -  -   -  -
24926  28 128 228 328 128 28   -  -   -  -
24927  30 130 230 330 130 30 230 30 330 30
24928  32 132 232 332 132 32   -  -   -  -
24929  34 134 234 334 134 34   -  -   -  -
24930  36 136 236 336 136 36 236 36   -  -
24931  38 138 238 338 138 38   -  -   -  -
24932  40 140 240 340 140 40   -  - 340 40
24933  42 142 242 342 142 42 242 42   -  -
24934  44 144 244 344 144 44   -  -   -  -
24935  46 146 246 346 146 46   -  -   -  -
24936  48 148 248 348 148 48 248 48   -  -
24937  50 150 250 350 150 50   -  - 350 50
24938  52 152 252 352 152 52   -  -   -  -
24939  54 154 254 354 154 54 254 54   -  -
24940  56 156 256 356 156 56   -  -   -  -
24941  58 158 258 358 158 58   -  -   -  -
24942  60 160 260 360 160 60 260 60 360 60
24943  62 162 262 362 162 62   -  -   -  -
24944  64 164 264 364 164 64   -  -   -  -
24945  66 166 266 366 166 66 266 66   -  -
24946  68 168 268 368 168 68   -  -   -  -
24947  70 170 270 370 170 70   -  - 370 70
24948  72 172 272 372 172 72 272 72   -  -
24949  74 174 274 374 174 74   -  -   -  -
24950  76 176 276 376 176 76   -  -   -  -
24951  78 178 278 378 178 78 278 78   -  -
24952  80 180 280 380 180 80   -  - 380 80
24953  82 182 282 382 182 82   -  -   -  -
24954  84 184 284 384 184 84 284 84   -  -
24955  86 186 286 386 186 86   -  -   -  -
24956  88 188 288 388 188 88   -  -   -  -
24957  90 190 290 390 190 90 290 90 390 90
24958  92 192 292 392 192 92   -  -   -  -
24959  94 194 294 394 194 94   -  -   -  -
24960   -   -   -   - 100  0   -  -   -  -
24961   -   -   -   -   -  - 200  0   -  -
24962   -   -   -   -   -  - 203  3   -  -
24963   -   -   -   -   -  - 209  9   -  -
24964   -   -   -   -   -  - 215 15   -  -
24965   -   -   -   -   -  - 221 21   -  -
24966   -   -   -   -   -  - 227 27   -  -
24967   -   -   -   -   -  - 233 33   -  -
24968   -   -   -   -   -  - 239 39   -  -
24969   -   -   -   -   -  - 245 45   -  -
24970   -   -   -   -   -  - 251 51   -  -
24971   -   -   -   -   -  - 257 57   -  -
24972   -   -   -   -   -  - 263 63   -  -
24973   -   -   -   -   -  - 269 69   -  -
24974   -   -   -   -   -  - 275 75   -  -
24975   -   -   -   -   -  - 281 81   -  -
24976   -   -   -   -   -  - 287 87   -  -
24977   -   -   -   -   -  - 293 93   -  -
24978}
24979do_execsql_test joinD-861 {
24980  SELECT t1.*, t2.*, t3.*, t4.*
24981  FROM t1 RIGHT JOIN t2 ON t2.x>0
24982  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
24983  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
24984  WHERE t1.b IS NOT DISTINCT FROM t2.b
24985  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
24986} {
24987   2 102 202 302 102  2   -  -   -  -
24988   4 104 204 304 104  4   -  -   -  -
24989   6 106 206 306 106  6 206  6   -  -
24990   8 108 208 308 108  8   -  -   -  -
24991  10 110 210 310 110 10   -  - 310 10
24992  12 112 212 312 112 12 212 12   -  -
24993  14 114 214 314 114 14   -  -   -  -
24994  16 116 216 316 116 16   -  -   -  -
24995  18 118 218 318 118 18 218 18   -  -
24996  20 120 220 320 120 20   -  - 320 20
24997  22 122 222 322 122 22   -  -   -  -
24998  24 124 224 324 124 24 224 24   -  -
24999  26 126 226 326 126 26   -  -   -  -
25000  28 128 228 328 128 28   -  -   -  -
25001  30 130 230 330 130 30 230 30 330 30
25002  32 132 232 332 132 32   -  -   -  -
25003  34 134 234 334 134 34   -  -   -  -
25004  36 136 236 336 136 36 236 36   -  -
25005  38 138 238 338 138 38   -  -   -  -
25006  40 140 240 340 140 40   -  - 340 40
25007  42 142 242 342 142 42 242 42   -  -
25008  44 144 244 344 144 44   -  -   -  -
25009  46 146 246 346 146 46   -  -   -  -
25010  48 148 248 348 148 48 248 48   -  -
25011  50 150 250 350 150 50   -  - 350 50
25012  52 152 252 352 152 52   -  -   -  -
25013  54 154 254 354 154 54 254 54   -  -
25014  56 156 256 356 156 56   -  -   -  -
25015  58 158 258 358 158 58   -  -   -  -
25016  60 160 260 360 160 60 260 60 360 60
25017  62 162 262 362 162 62   -  -   -  -
25018  64 164 264 364 164 64   -  -   -  -
25019  66 166 266 366 166 66 266 66   -  -
25020  68 168 268 368 168 68   -  -   -  -
25021  70 170 270 370 170 70   -  - 370 70
25022  72 172 272 372 172 72 272 72   -  -
25023  74 174 274 374 174 74   -  -   -  -
25024  76 176 276 376 176 76   -  -   -  -
25025  78 178 278 378 178 78 278 78   -  -
25026  80 180 280 380 180 80   -  - 380 80
25027  82 182 282 382 182 82   -  -   -  -
25028  84 184 284 384 184 84 284 84   -  -
25029  86 186 286 386 186 86   -  -   -  -
25030  88 188 288 388 188 88   -  -   -  -
25031  90 190 290 390 190 90 290 90 390 90
25032  92 192 292 392 192 92   -  -   -  -
25033  94 194 294 394 194 94   -  -   -  -
25034   -   -   -   -   -  - 200  0   -  -
25035}
25036do_execsql_test joinD-862 {
25037  SELECT t1.*, t2.*, t3.*, t4.*
25038  FROM t1 RIGHT JOIN t2 ON t2.x>0
25039  FULL JOIN t3 ON t3.y>0
25040  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25041  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
25042  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25043} {
25044   6 106 206 306 106  6 206  6   -  -
25045  12 112 212 312 112 12 212 12   -  -
25046  18 118 218 318 118 18 218 18   -  -
25047  24 124 224 324 124 24 224 24   -  -
25048  30 130 230 330 130 30 230 30 330 30
25049  36 136 236 336 136 36 236 36   -  -
25050  42 142 242 342 142 42 242 42   -  -
25051  48 148 248 348 148 48 248 48   -  -
25052  54 154 254 354 154 54 254 54   -  -
25053  60 160 260 360 160 60 260 60 360 60
25054  66 166 266 366 166 66 266 66   -  -
25055  72 172 272 372 172 72 272 72   -  -
25056  78 178 278 378 178 78 278 78   -  -
25057  84 184 284 384 184 84 284 84   -  -
25058  90 190 290 390 190 90 290 90 390 90
25059}
25060do_execsql_test joinD-863 {
25061  SELECT t1.*, t2.*, t3.*, t4.*
25062  FROM t1 RIGHT JOIN t2 ON t2.x>0
25063  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25064  LEFT JOIN t4 ON t4.z>0
25065  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
25066  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25067} {
25068  10 110 210 310 110 10   -  - 310 10
25069  20 120 220 320 120 20   -  - 320 20
25070  30 130 230 330 130 30 230 30 330 30
25071  40 140 240 340 140 40   -  - 340 40
25072  50 150 250 350 150 50   -  - 350 50
25073  60 160 260 360 160 60 260 60 360 60
25074  70 170 270 370 170 70   -  - 370 70
25075  80 180 280 380 180 80   -  - 380 80
25076  90 190 290 390 190 90 290 90 390 90
25077}
25078do_execsql_test joinD-864 {
25079  SELECT t1.*, t2.*, t3.*, t4.*
25080  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
25081  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25082  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
25083  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25084} {
25085   2 102 202 302 102  2   -  -   -  -
25086   4 104 204 304 104  4   -  -   -  -
25087   6 106 206 306 106  6 206  6   -  -
25088   8 108 208 308 108  8   -  -   -  -
25089  10 110 210 310 110 10   -  - 310 10
25090  12 112 212 312 112 12 212 12   -  -
25091  14 114 214 314 114 14   -  -   -  -
25092  16 116 216 316 116 16   -  -   -  -
25093  18 118 218 318 118 18 218 18   -  -
25094  20 120 220 320 120 20   -  - 320 20
25095  22 122 222 322 122 22   -  -   -  -
25096  24 124 224 324 124 24 224 24   -  -
25097  26 126 226 326 126 26   -  -   -  -
25098  28 128 228 328 128 28   -  -   -  -
25099  30 130 230 330 130 30 230 30 330 30
25100  32 132 232 332 132 32   -  -   -  -
25101  34 134 234 334 134 34   -  -   -  -
25102  36 136 236 336 136 36 236 36   -  -
25103  38 138 238 338 138 38   -  -   -  -
25104  40 140 240 340 140 40   -  - 340 40
25105  42 142 242 342 142 42 242 42   -  -
25106  44 144 244 344 144 44   -  -   -  -
25107  46 146 246 346 146 46   -  -   -  -
25108  48 148 248 348 148 48 248 48   -  -
25109  50 150 250 350 150 50   -  - 350 50
25110  52 152 252 352 152 52   -  -   -  -
25111  54 154 254 354 154 54 254 54   -  -
25112  56 156 256 356 156 56   -  -   -  -
25113  58 158 258 358 158 58   -  -   -  -
25114  60 160 260 360 160 60 260 60 360 60
25115  62 162 262 362 162 62   -  -   -  -
25116  64 164 264 364 164 64   -  -   -  -
25117  66 166 266 366 166 66 266 66   -  -
25118  68 168 268 368 168 68   -  -   -  -
25119  70 170 270 370 170 70   -  - 370 70
25120  72 172 272 372 172 72 272 72   -  -
25121  74 174 274 374 174 74   -  -   -  -
25122  76 176 276 376 176 76   -  -   -  -
25123  78 178 278 378 178 78 278 78   -  -
25124  80 180 280 380 180 80   -  - 380 80
25125  82 182 282 382 182 82   -  -   -  -
25126  84 184 284 384 184 84 284 84   -  -
25127  86 186 286 386 186 86   -  -   -  -
25128  88 188 288 388 188 88   -  -   -  -
25129  90 190 290 390 190 90 290 90 390 90
25130  92 192 292 392 192 92   -  -   -  -
25131  94 194 294 394 194 94   -  -   -  -
25132   -   -   -   - 100  0   -  -   -  -
25133   -   -   -   -   -  - 200  0   -  -
25134   -   -   -   -   -  - 203  3   -  -
25135   -   -   -   -   -  - 209  9   -  -
25136   -   -   -   -   -  - 215 15   -  -
25137   -   -   -   -   -  - 221 21   -  -
25138   -   -   -   -   -  - 227 27   -  -
25139   -   -   -   -   -  - 233 33   -  -
25140   -   -   -   -   -  - 239 39   -  -
25141   -   -   -   -   -  - 245 45   -  -
25142   -   -   -   -   -  - 251 51   -  -
25143   -   -   -   -   -  - 257 57   -  -
25144   -   -   -   -   -  - 263 63   -  -
25145   -   -   -   -   -  - 269 69   -  -
25146   -   -   -   -   -  - 275 75   -  -
25147   -   -   -   -   -  - 281 81   -  -
25148   -   -   -   -   -  - 287 87   -  -
25149   -   -   -   -   -  - 293 93   -  -
25150}
25151do_execsql_test joinD-865 {
25152  SELECT t1.*, t2.*, t3.*, t4.*
25153  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25154  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25155  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25156  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25157} {
25158  10 110 210 310 110 10   -  - 310 10
25159  20 120 220 320 120 20   -  - 320 20
25160  30 130 230 330 130 30 230 30 330 30
25161  40 140 240 340 140 40   -  - 340 40
25162  50 150 250 350 150 50   -  - 350 50
25163  60 160 260 360 160 60 260 60 360 60
25164  70 170 270 370 170 70   -  - 370 70
25165  80 180 280 380 180 80   -  - 380 80
25166  90 190 290 390 190 90 290 90 390 90
25167   -   -   -   -   -  -   -  - 300  0
25168   -   -   -   -   -  -   -  - 305  5
25169   -   -   -   -   -  -   -  - 315 15
25170   -   -   -   -   -  -   -  - 325 25
25171   -   -   -   -   -  -   -  - 335 35
25172   -   -   -   -   -  -   -  - 345 45
25173   -   -   -   -   -  -   -  - 355 55
25174   -   -   -   -   -  -   -  - 365 65
25175   -   -   -   -   -  -   -  - 375 75
25176   -   -   -   -   -  -   -  - 385 85
25177   -   -   -   -   -  -   -  - 395 95
25178}
25179do_execsql_test joinD-866 {
25180  SELECT t1.*, t2.*, t3.*, t4.*
25181  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
25182  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25183  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25184  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25185} {
25186  10 110 210 310 110 10   -  - 310 10
25187  20 120 220 320 120 20   -  - 320 20
25188  30 130 230 330 130 30 230 30 330 30
25189  40 140 240 340 140 40   -  - 340 40
25190  50 150 250 350 150 50   -  - 350 50
25191  60 160 260 360 160 60 260 60 360 60
25192  70 170 270 370 170 70   -  - 370 70
25193  80 180 280 380 180 80   -  - 380 80
25194  90 190 290 390 190 90 290 90 390 90
25195   -   -   -   -   -  -   -  - 300  0
25196   -   -   -   -   -  -   -  - 305  5
25197   -   -   -   -   -  -   -  - 315 15
25198   -   -   -   -   -  -   -  - 325 25
25199   -   -   -   -   -  -   -  - 335 35
25200   -   -   -   -   -  -   -  - 345 45
25201   -   -   -   -   -  -   -  - 355 55
25202   -   -   -   -   -  -   -  - 365 65
25203   -   -   -   -   -  -   -  - 375 75
25204   -   -   -   -   -  -   -  - 385 85
25205   -   -   -   -   -  -   -  - 395 95
25206}
25207do_execsql_test joinD-867 {
25208  SELECT t1.*, t2.*, t3.*, t4.*
25209  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25210  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25211  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25212  WHERE t2.x>0
25213  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25214} {
25215  10 110 210 310 110 10   -  - 310 10
25216  20 120 220 320 120 20   -  - 320 20
25217  30 130 230 330 130 30 230 30 330 30
25218  40 140 240 340 140 40   -  - 340 40
25219  50 150 250 350 150 50   -  - 350 50
25220  60 160 260 360 160 60 260 60 360 60
25221  70 170 270 370 170 70   -  - 370 70
25222  80 180 280 380 180 80   -  - 380 80
25223  90 190 290 390 190 90 290 90 390 90
25224}
25225do_execsql_test joinD-868 {
25226  SELECT t1.*, t2.*, t3.*, t4.*
25227  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25228  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25229  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25230  WHERE (t2.x>0 OR t2.x IS NULL)
25231  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25232} {
25233  10 110 210 310 110 10   -  - 310 10
25234  20 120 220 320 120 20   -  - 320 20
25235  30 130 230 330 130 30 230 30 330 30
25236  40 140 240 340 140 40   -  - 340 40
25237  50 150 250 350 150 50   -  - 350 50
25238  60 160 260 360 160 60 260 60 360 60
25239  70 170 270 370 170 70   -  - 370 70
25240  80 180 280 380 180 80   -  - 380 80
25241  90 190 290 390 190 90 290 90 390 90
25242   -   -   -   -   -  -   -  - 300  0
25243   -   -   -   -   -  -   -  - 305  5
25244   -   -   -   -   -  -   -  - 315 15
25245   -   -   -   -   -  -   -  - 325 25
25246   -   -   -   -   -  -   -  - 335 35
25247   -   -   -   -   -  -   -  - 345 45
25248   -   -   -   -   -  -   -  - 355 55
25249   -   -   -   -   -  -   -  - 365 65
25250   -   -   -   -   -  -   -  - 375 75
25251   -   -   -   -   -  -   -  - 385 85
25252   -   -   -   -   -  -   -  - 395 95
25253}
25254do_execsql_test joinD-869 {
25255  SELECT t1.*, t2.*, t3.*, t4.*
25256  FROM t1 RIGHT JOIN t2 ON true
25257  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25258  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25259  WHERE t1.b=t2.b AND t2.x>0
25260  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25261} {
25262  10 110 210 310 110 10   -  - 310 10
25263  20 120 220 320 120 20   -  - 320 20
25264  30 130 230 330 130 30 230 30 330 30
25265  40 140 240 340 140 40   -  - 340 40
25266  50 150 250 350 150 50   -  - 350 50
25267  60 160 260 360 160 60 260 60 360 60
25268  70 170 270 370 170 70   -  - 370 70
25269  80 180 280 380 180 80   -  - 380 80
25270  90 190 290 390 190 90 290 90 390 90
25271}
25272do_execsql_test joinD-870 {
25273  SELECT t1.*, t2.*, t3.*, t4.*
25274  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25275  FULL JOIN t3 ON t1.c=t3.c
25276  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25277  WHERE t3.y>0
25278  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25279} {
25280  30 130 230 330 130 30 230 30 330 30
25281  60 160 260 360 160 60 260 60 360 60
25282  90 190 290 390 190 90 290 90 390 90
25283}
25284do_execsql_test joinD-871 {
25285  SELECT t1.*, t2.*, t3.*, t4.*
25286  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25287  FULL JOIN t3 ON t1.c=t3.c
25288  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25289  WHERE t3.y>0 OR t3.y IS NULL
25290  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25291} {
25292  10 110 210 310 110 10   -  - 310 10
25293  20 120 220 320 120 20   -  - 320 20
25294  30 130 230 330 130 30 230 30 330 30
25295  40 140 240 340 140 40   -  - 340 40
25296  50 150 250 350 150 50   -  - 350 50
25297  60 160 260 360 160 60 260 60 360 60
25298  70 170 270 370 170 70   -  - 370 70
25299  80 180 280 380 180 80   -  - 380 80
25300  90 190 290 390 190 90 290 90 390 90
25301   -   -   -   -   -  -   -  - 300  0
25302   -   -   -   -   -  -   -  - 305  5
25303   -   -   -   -   -  -   -  - 315 15
25304   -   -   -   -   -  -   -  - 325 25
25305   -   -   -   -   -  -   -  - 335 35
25306   -   -   -   -   -  -   -  - 345 45
25307   -   -   -   -   -  -   -  - 355 55
25308   -   -   -   -   -  -   -  - 365 65
25309   -   -   -   -   -  -   -  - 375 75
25310   -   -   -   -   -  -   -  - 385 85
25311   -   -   -   -   -  -   -  - 395 95
25312}
25313do_execsql_test joinD-872 {
25314  SELECT t1.*, t2.*, t3.*, t4.*
25315  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25316  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25317  RIGHT JOIN t4 ON t1.d=t4.d
25318  WHERE t4.z>0
25319  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25320} {
25321  10 110 210 310 110 10   -  - 310 10
25322  20 120 220 320 120 20   -  - 320 20
25323  30 130 230 330 130 30 230 30 330 30
25324  40 140 240 340 140 40   -  - 340 40
25325  50 150 250 350 150 50   -  - 350 50
25326  60 160 260 360 160 60 260 60 360 60
25327  70 170 270 370 170 70   -  - 370 70
25328  80 180 280 380 180 80   -  - 380 80
25329  90 190 290 390 190 90 290 90 390 90
25330   -   -   -   -   -  -   -  - 305  5
25331   -   -   -   -   -  -   -  - 315 15
25332   -   -   -   -   -  -   -  - 325 25
25333   -   -   -   -   -  -   -  - 335 35
25334   -   -   -   -   -  -   -  - 345 45
25335   -   -   -   -   -  -   -  - 355 55
25336   -   -   -   -   -  -   -  - 365 65
25337   -   -   -   -   -  -   -  - 375 75
25338   -   -   -   -   -  -   -  - 385 85
25339   -   -   -   -   -  -   -  - 395 95
25340}
25341do_execsql_test joinD-873 {
25342  SELECT t1.*, t2.*, t3.*, t4.*
25343  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25344  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25345  RIGHT JOIN t4 ON t1.d=t4.d
25346  WHERE t4.z IS NULL OR t4.z>0
25347  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25348} {
25349  10 110 210 310 110 10   -  - 310 10
25350  20 120 220 320 120 20   -  - 320 20
25351  30 130 230 330 130 30 230 30 330 30
25352  40 140 240 340 140 40   -  - 340 40
25353  50 150 250 350 150 50   -  - 350 50
25354  60 160 260 360 160 60 260 60 360 60
25355  70 170 270 370 170 70   -  - 370 70
25356  80 180 280 380 180 80   -  - 380 80
25357  90 190 290 390 190 90 290 90 390 90
25358   -   -   -   -   -  -   -  - 305  5
25359   -   -   -   -   -  -   -  - 315 15
25360   -   -   -   -   -  -   -  - 325 25
25361   -   -   -   -   -  -   -  - 335 35
25362   -   -   -   -   -  -   -  - 345 45
25363   -   -   -   -   -  -   -  - 355 55
25364   -   -   -   -   -  -   -  - 365 65
25365   -   -   -   -   -  -   -  - 375 75
25366   -   -   -   -   -  -   -  - 385 85
25367   -   -   -   -   -  -   -  - 395 95
25368}
25369do_execsql_test joinD-874 {
25370  SELECT t1.*, t2.*, t3.*, t4.*
25371  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25372  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25373  RIGHT JOIN t4 ON t1.d=t4.d
25374  WHERE t2.x>0 AND t4.z>0
25375  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25376} {
25377  10 110 210 310 110 10   -  - 310 10
25378  20 120 220 320 120 20   -  - 320 20
25379  30 130 230 330 130 30 230 30 330 30
25380  40 140 240 340 140 40   -  - 340 40
25381  50 150 250 350 150 50   -  - 350 50
25382  60 160 260 360 160 60 260 60 360 60
25383  70 170 270 370 170 70   -  - 370 70
25384  80 180 280 380 180 80   -  - 380 80
25385  90 190 290 390 190 90 290 90 390 90
25386}
25387do_execsql_test joinD-875 {
25388  SELECT t1.*, t2.*, t3.*, t4.*
25389  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25390  FULL JOIN t3 ON t1.c=t3.c
25391  RIGHT JOIN t4 ON t1.d=t4.d
25392  WHERE t4.z>0 AND t3.y>0
25393  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25394} {
25395  30 130 230 330 130 30 230 30 330 30
25396  60 160 260 360 160 60 260 60 360 60
25397  90 190 290 390 190 90 290 90 390 90
25398}
25399do_execsql_test joinD-876 {
25400  SELECT t1.*, t2.*, t3.*, t4.*
25401  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25402  FULL JOIN t3 ON t1.c=t3.c
25403  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25404  WHERE t2.x>0 AND t3.y>0
25405  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25406} {
25407  30 130 230 330 130 30 230 30 330 30
25408  60 160 260 360 160 60 260 60 360 60
25409  90 190 290 390 190 90 290 90 390 90
25410}
25411do_execsql_test joinD-877 {
25412  SELECT t1.*, t2.*, t3.*, t4.*
25413  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25414  FULL JOIN t3 ON t1.c=t3.c
25415  RIGHT JOIN t4 ON t1.d=t4.d
25416  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
25417  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25418} {
25419  30 130 230 330 130 30 230 30 330 30
25420  60 160 260 360 160 60 260 60 360 60
25421  90 190 290 390 190 90 290 90 390 90
25422}
25423do_execsql_test joinD-878 {
25424  SELECT t1.*, t2.*, t3.*, t4.*
25425  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
25426  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25427  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25428  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25429} {
25430  10 110 210 310 110 10   -  - 310 10
25431  20 120 220 320 120 20   -  - 320 20
25432  30 130 230 330 130 30 230 30 330 30
25433  40 140 240 340 140 40   -  - 340 40
25434  50 150 250 350 150 50   -  - 350 50
25435  60 160 260 360 160 60 260 60 360 60
25436  70 170 270 370 170 70   -  - 370 70
25437  80 180 280 380 180 80   -  - 380 80
25438  90 190 290 390 190 90 290 90 390 90
25439   -   -   -   -   -  -   -  - 300  0
25440   -   -   -   -   -  -   -  - 305  5
25441   -   -   -   -   -  -   -  - 315 15
25442   -   -   -   -   -  -   -  - 325 25
25443   -   -   -   -   -  -   -  - 335 35
25444   -   -   -   -   -  -   -  - 345 45
25445   -   -   -   -   -  -   -  - 355 55
25446   -   -   -   -   -  -   -  - 365 65
25447   -   -   -   -   -  -   -  - 375 75
25448   -   -   -   -   -  -   -  - 385 85
25449   -   -   -   -   -  -   -  - 395 95
25450}
25451do_execsql_test joinD-879 {
25452  SELECT t1.*, t2.*, t3.*, t4.*
25453  FROM t1 RIGHT JOIN t2 ON t2.x>0
25454  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25455  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25456  WHERE t1.b IS NOT DISTINCT FROM t2.b
25457  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25458} {
25459  10 110 210 310 110 10   -  - 310 10
25460  20 120 220 320 120 20   -  - 320 20
25461  30 130 230 330 130 30 230 30 330 30
25462  40 140 240 340 140 40   -  - 340 40
25463  50 150 250 350 150 50   -  - 350 50
25464  60 160 260 360 160 60 260 60 360 60
25465  70 170 270 370 170 70   -  - 370 70
25466  80 180 280 380 180 80   -  - 380 80
25467  90 190 290 390 190 90 290 90 390 90
25468   -   -   -   -   -  -   -  - 300  0
25469}
25470do_execsql_test joinD-880 {
25471  SELECT t1.*, t2.*, t3.*, t4.*
25472  FROM t1 RIGHT JOIN t2 ON t2.x>0
25473  FULL JOIN t3 ON t3.y>0
25474  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
25475  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
25476  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25477} {
25478  30 130 230 330 130 30 230 30 330 30
25479  60 160 260 360 160 60 260 60 360 60
25480  90 190 290 390 190 90 290 90 390 90
25481}
25482do_execsql_test joinD-881 {
25483  SELECT t1.*, t2.*, t3.*, t4.*
25484  FROM t1 RIGHT JOIN t2 ON t2.x>0
25485  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
25486  RIGHT JOIN t4 ON t4.z>0
25487  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d IS NOT DISTINCT FROM t4.d
25488  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25489} {
25490  10 110 210 310 110 10   -  - 310 10
25491  20 120 220 320 120 20   -  - 320 20
25492  30 130 230 330 130 30 230 30 330 30
25493  40 140 240 340 140 40   -  - 340 40
25494  50 150 250 350 150 50   -  - 350 50
25495  60 160 260 360 160 60 260 60 360 60
25496  70 170 270 370 170 70   -  - 370 70
25497  80 180 280 380 180 80   -  - 380 80
25498  90 190 290 390 190 90 290 90 390 90
25499}
25500do_execsql_test joinD-882 {
25501  SELECT t1.*, t2.*, t3.*, t4.*
25502  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
25503  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25504  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
25505  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25506} {
25507  10 110 210 310 110 10   -  - 310 10
25508  20 120 220 320 120 20   -  - 320 20
25509  30 130 230 330 130 30 230 30 330 30
25510  40 140 240 340 140 40   -  - 340 40
25511  50 150 250 350 150 50   -  - 350 50
25512  60 160 260 360 160 60 260 60 360 60
25513  70 170 270 370 170 70   -  - 370 70
25514  80 180 280 380 180 80   -  - 380 80
25515  90 190 290 390 190 90 290 90 390 90
25516   -   -   -   -   -  -   -  - 300  0
25517   -   -   -   -   -  -   -  - 305  5
25518   -   -   -   -   -  -   -  - 315 15
25519   -   -   -   -   -  -   -  - 325 25
25520   -   -   -   -   -  -   -  - 335 35
25521   -   -   -   -   -  -   -  - 345 45
25522   -   -   -   -   -  -   -  - 355 55
25523   -   -   -   -   -  -   -  - 365 65
25524   -   -   -   -   -  -   -  - 375 75
25525   -   -   -   -   -  -   -  - 385 85
25526   -   -   -   -   -  -   -  - 395 95
25527}
25528do_execsql_test joinD-883 {
25529  SELECT t1.*, t2.*, t3.*, t4.*
25530  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25531  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25532  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25533  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25534} {
25535   2 102 202 302 102  2   -  -   -  -
25536   4 104 204 304 104  4   -  -   -  -
25537   6 106 206 306 106  6 206  6   -  -
25538   8 108 208 308 108  8   -  -   -  -
25539  10 110 210 310 110 10   -  - 310 10
25540  12 112 212 312 112 12 212 12   -  -
25541  14 114 214 314 114 14   -  -   -  -
25542  16 116 216 316 116 16   -  -   -  -
25543  18 118 218 318 118 18 218 18   -  -
25544  20 120 220 320 120 20   -  - 320 20
25545  22 122 222 322 122 22   -  -   -  -
25546  24 124 224 324 124 24 224 24   -  -
25547  26 126 226 326 126 26   -  -   -  -
25548  28 128 228 328 128 28   -  -   -  -
25549  30 130 230 330 130 30 230 30 330 30
25550  32 132 232 332 132 32   -  -   -  -
25551  34 134 234 334 134 34   -  -   -  -
25552  36 136 236 336 136 36 236 36   -  -
25553  38 138 238 338 138 38   -  -   -  -
25554  40 140 240 340 140 40   -  - 340 40
25555  42 142 242 342 142 42 242 42   -  -
25556  44 144 244 344 144 44   -  -   -  -
25557  46 146 246 346 146 46   -  -   -  -
25558  48 148 248 348 148 48 248 48   -  -
25559  50 150 250 350 150 50   -  - 350 50
25560  52 152 252 352 152 52   -  -   -  -
25561  54 154 254 354 154 54 254 54   -  -
25562  56 156 256 356 156 56   -  -   -  -
25563  58 158 258 358 158 58   -  -   -  -
25564  60 160 260 360 160 60 260 60 360 60
25565  62 162 262 362 162 62   -  -   -  -
25566  64 164 264 364 164 64   -  -   -  -
25567  66 166 266 366 166 66 266 66   -  -
25568  68 168 268 368 168 68   -  -   -  -
25569  70 170 270 370 170 70   -  - 370 70
25570  72 172 272 372 172 72 272 72   -  -
25571  74 174 274 374 174 74   -  -   -  -
25572  76 176 276 376 176 76   -  -   -  -
25573  78 178 278 378 178 78 278 78   -  -
25574  80 180 280 380 180 80   -  - 380 80
25575  82 182 282 382 182 82   -  -   -  -
25576  84 184 284 384 184 84 284 84   -  -
25577  86 186 286 386 186 86   -  -   -  -
25578  88 188 288 388 188 88   -  -   -  -
25579  90 190 290 390 190 90 290 90 390 90
25580  92 192 292 392 192 92   -  -   -  -
25581  94 194 294 394 194 94   -  -   -  -
25582   -   -   -   - 100  0   -  -   -  -
25583   -   -   -   -   -  - 200  0   -  -
25584   -   -   -   -   -  - 203  3   -  -
25585   -   -   -   -   -  - 209  9   -  -
25586   -   -   -   -   -  - 215 15   -  -
25587   -   -   -   -   -  - 221 21   -  -
25588   -   -   -   -   -  - 227 27   -  -
25589   -   -   -   -   -  - 233 33   -  -
25590   -   -   -   -   -  - 239 39   -  -
25591   -   -   -   -   -  - 245 45   -  -
25592   -   -   -   -   -  - 251 51   -  -
25593   -   -   -   -   -  - 257 57   -  -
25594   -   -   -   -   -  - 263 63   -  -
25595   -   -   -   -   -  - 269 69   -  -
25596   -   -   -   -   -  - 275 75   -  -
25597   -   -   -   -   -  - 281 81   -  -
25598   -   -   -   -   -  - 287 87   -  -
25599   -   -   -   -   -  - 293 93   -  -
25600   -   -   -   -   -  -   -  - 300  0
25601   -   -   -   -   -  -   -  - 305  5
25602   -   -   -   -   -  -   -  - 315 15
25603   -   -   -   -   -  -   -  - 325 25
25604   -   -   -   -   -  -   -  - 335 35
25605   -   -   -   -   -  -   -  - 345 45
25606   -   -   -   -   -  -   -  - 355 55
25607   -   -   -   -   -  -   -  - 365 65
25608   -   -   -   -   -  -   -  - 375 75
25609   -   -   -   -   -  -   -  - 385 85
25610   -   -   -   -   -  -   -  - 395 95
25611}
25612do_execsql_test joinD-884 {
25613  SELECT t1.*, t2.*, t3.*, t4.*
25614  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
25615  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25616  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25617  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25618} {
25619   2 102 202 302 102  2   -  -   -  -
25620   4 104 204 304 104  4   -  -   -  -
25621   6 106 206 306 106  6 206  6   -  -
25622   8 108 208 308 108  8   -  -   -  -
25623  10 110 210 310 110 10   -  - 310 10
25624  12 112 212 312 112 12 212 12   -  -
25625  14 114 214 314 114 14   -  -   -  -
25626  16 116 216 316 116 16   -  -   -  -
25627  18 118 218 318 118 18 218 18   -  -
25628  20 120 220 320 120 20   -  - 320 20
25629  22 122 222 322 122 22   -  -   -  -
25630  24 124 224 324 124 24 224 24   -  -
25631  26 126 226 326 126 26   -  -   -  -
25632  28 128 228 328 128 28   -  -   -  -
25633  30 130 230 330 130 30 230 30 330 30
25634  32 132 232 332 132 32   -  -   -  -
25635  34 134 234 334 134 34   -  -   -  -
25636  36 136 236 336 136 36 236 36   -  -
25637  38 138 238 338 138 38   -  -   -  -
25638  40 140 240 340 140 40   -  - 340 40
25639  42 142 242 342 142 42 242 42   -  -
25640  44 144 244 344 144 44   -  -   -  -
25641  46 146 246 346 146 46   -  -   -  -
25642  48 148 248 348 148 48 248 48   -  -
25643  50 150 250 350 150 50   -  - 350 50
25644  52 152 252 352 152 52   -  -   -  -
25645  54 154 254 354 154 54 254 54   -  -
25646  56 156 256 356 156 56   -  -   -  -
25647  58 158 258 358 158 58   -  -   -  -
25648  60 160 260 360 160 60 260 60 360 60
25649  62 162 262 362 162 62   -  -   -  -
25650  64 164 264 364 164 64   -  -   -  -
25651  66 166 266 366 166 66 266 66   -  -
25652  68 168 268 368 168 68   -  -   -  -
25653  70 170 270 370 170 70   -  - 370 70
25654  72 172 272 372 172 72 272 72   -  -
25655  74 174 274 374 174 74   -  -   -  -
25656  76 176 276 376 176 76   -  -   -  -
25657  78 178 278 378 178 78 278 78   -  -
25658  80 180 280 380 180 80   -  - 380 80
25659  82 182 282 382 182 82   -  -   -  -
25660  84 184 284 384 184 84 284 84   -  -
25661  86 186 286 386 186 86   -  -   -  -
25662  88 188 288 388 188 88   -  -   -  -
25663  90 190 290 390 190 90 290 90 390 90
25664  92 192 292 392 192 92   -  -   -  -
25665  94 194 294 394 194 94   -  -   -  -
25666   -   -   -   - 100  0   -  -   -  -
25667   -   -   -   -   -  - 200  0   -  -
25668   -   -   -   -   -  - 203  3   -  -
25669   -   -   -   -   -  - 209  9   -  -
25670   -   -   -   -   -  - 215 15   -  -
25671   -   -   -   -   -  - 221 21   -  -
25672   -   -   -   -   -  - 227 27   -  -
25673   -   -   -   -   -  - 233 33   -  -
25674   -   -   -   -   -  - 239 39   -  -
25675   -   -   -   -   -  - 245 45   -  -
25676   -   -   -   -   -  - 251 51   -  -
25677   -   -   -   -   -  - 257 57   -  -
25678   -   -   -   -   -  - 263 63   -  -
25679   -   -   -   -   -  - 269 69   -  -
25680   -   -   -   -   -  - 275 75   -  -
25681   -   -   -   -   -  - 281 81   -  -
25682   -   -   -   -   -  - 287 87   -  -
25683   -   -   -   -   -  - 293 93   -  -
25684   -   -   -   -   -  -   -  - 300  0
25685   -   -   -   -   -  -   -  - 305  5
25686   -   -   -   -   -  -   -  - 315 15
25687   -   -   -   -   -  -   -  - 325 25
25688   -   -   -   -   -  -   -  - 335 35
25689   -   -   -   -   -  -   -  - 345 45
25690   -   -   -   -   -  -   -  - 355 55
25691   -   -   -   -   -  -   -  - 365 65
25692   -   -   -   -   -  -   -  - 375 75
25693   -   -   -   -   -  -   -  - 385 85
25694   -   -   -   -   -  -   -  - 395 95
25695}
25696do_execsql_test joinD-885 {
25697  SELECT t1.*, t2.*, t3.*, t4.*
25698  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25699  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25700  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25701  WHERE t2.x>0
25702  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25703} {
25704   2 102 202 302 102  2   -  -   -  -
25705   4 104 204 304 104  4   -  -   -  -
25706   6 106 206 306 106  6 206  6   -  -
25707   8 108 208 308 108  8   -  -   -  -
25708  10 110 210 310 110 10   -  - 310 10
25709  12 112 212 312 112 12 212 12   -  -
25710  14 114 214 314 114 14   -  -   -  -
25711  16 116 216 316 116 16   -  -   -  -
25712  18 118 218 318 118 18 218 18   -  -
25713  20 120 220 320 120 20   -  - 320 20
25714  22 122 222 322 122 22   -  -   -  -
25715  24 124 224 324 124 24 224 24   -  -
25716  26 126 226 326 126 26   -  -   -  -
25717  28 128 228 328 128 28   -  -   -  -
25718  30 130 230 330 130 30 230 30 330 30
25719  32 132 232 332 132 32   -  -   -  -
25720  34 134 234 334 134 34   -  -   -  -
25721  36 136 236 336 136 36 236 36   -  -
25722  38 138 238 338 138 38   -  -   -  -
25723  40 140 240 340 140 40   -  - 340 40
25724  42 142 242 342 142 42 242 42   -  -
25725  44 144 244 344 144 44   -  -   -  -
25726  46 146 246 346 146 46   -  -   -  -
25727  48 148 248 348 148 48 248 48   -  -
25728  50 150 250 350 150 50   -  - 350 50
25729  52 152 252 352 152 52   -  -   -  -
25730  54 154 254 354 154 54 254 54   -  -
25731  56 156 256 356 156 56   -  -   -  -
25732  58 158 258 358 158 58   -  -   -  -
25733  60 160 260 360 160 60 260 60 360 60
25734  62 162 262 362 162 62   -  -   -  -
25735  64 164 264 364 164 64   -  -   -  -
25736  66 166 266 366 166 66 266 66   -  -
25737  68 168 268 368 168 68   -  -   -  -
25738  70 170 270 370 170 70   -  - 370 70
25739  72 172 272 372 172 72 272 72   -  -
25740  74 174 274 374 174 74   -  -   -  -
25741  76 176 276 376 176 76   -  -   -  -
25742  78 178 278 378 178 78 278 78   -  -
25743  80 180 280 380 180 80   -  - 380 80
25744  82 182 282 382 182 82   -  -   -  -
25745  84 184 284 384 184 84 284 84   -  -
25746  86 186 286 386 186 86   -  -   -  -
25747  88 188 288 388 188 88   -  -   -  -
25748  90 190 290 390 190 90 290 90 390 90
25749  92 192 292 392 192 92   -  -   -  -
25750  94 194 294 394 194 94   -  -   -  -
25751}
25752do_execsql_test joinD-886 {
25753  SELECT t1.*, t2.*, t3.*, t4.*
25754  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
25755  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25756  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25757  WHERE (t2.x>0 OR t2.x IS NULL)
25758  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25759} {
25760   2 102 202 302 102  2   -  -   -  -
25761   4 104 204 304 104  4   -  -   -  -
25762   6 106 206 306 106  6 206  6   -  -
25763   8 108 208 308 108  8   -  -   -  -
25764  10 110 210 310 110 10   -  - 310 10
25765  12 112 212 312 112 12 212 12   -  -
25766  14 114 214 314 114 14   -  -   -  -
25767  16 116 216 316 116 16   -  -   -  -
25768  18 118 218 318 118 18 218 18   -  -
25769  20 120 220 320 120 20   -  - 320 20
25770  22 122 222 322 122 22   -  -   -  -
25771  24 124 224 324 124 24 224 24   -  -
25772  26 126 226 326 126 26   -  -   -  -
25773  28 128 228 328 128 28   -  -   -  -
25774  30 130 230 330 130 30 230 30 330 30
25775  32 132 232 332 132 32   -  -   -  -
25776  34 134 234 334 134 34   -  -   -  -
25777  36 136 236 336 136 36 236 36   -  -
25778  38 138 238 338 138 38   -  -   -  -
25779  40 140 240 340 140 40   -  - 340 40
25780  42 142 242 342 142 42 242 42   -  -
25781  44 144 244 344 144 44   -  -   -  -
25782  46 146 246 346 146 46   -  -   -  -
25783  48 148 248 348 148 48 248 48   -  -
25784  50 150 250 350 150 50   -  - 350 50
25785  52 152 252 352 152 52   -  -   -  -
25786  54 154 254 354 154 54 254 54   -  -
25787  56 156 256 356 156 56   -  -   -  -
25788  58 158 258 358 158 58   -  -   -  -
25789  60 160 260 360 160 60 260 60 360 60
25790  62 162 262 362 162 62   -  -   -  -
25791  64 164 264 364 164 64   -  -   -  -
25792  66 166 266 366 166 66 266 66   -  -
25793  68 168 268 368 168 68   -  -   -  -
25794  70 170 270 370 170 70   -  - 370 70
25795  72 172 272 372 172 72 272 72   -  -
25796  74 174 274 374 174 74   -  -   -  -
25797  76 176 276 376 176 76   -  -   -  -
25798  78 178 278 378 178 78 278 78   -  -
25799  80 180 280 380 180 80   -  - 380 80
25800  82 182 282 382 182 82   -  -   -  -
25801  84 184 284 384 184 84 284 84   -  -
25802  86 186 286 386 186 86   -  -   -  -
25803  88 188 288 388 188 88   -  -   -  -
25804  90 190 290 390 190 90 290 90 390 90
25805  92 192 292 392 192 92   -  -   -  -
25806  94 194 294 394 194 94   -  -   -  -
25807   -   -   -   -   -  - 200  0   -  -
25808   -   -   -   -   -  - 203  3   -  -
25809   -   -   -   -   -  - 209  9   -  -
25810   -   -   -   -   -  - 215 15   -  -
25811   -   -   -   -   -  - 221 21   -  -
25812   -   -   -   -   -  - 227 27   -  -
25813   -   -   -   -   -  - 233 33   -  -
25814   -   -   -   -   -  - 239 39   -  -
25815   -   -   -   -   -  - 245 45   -  -
25816   -   -   -   -   -  - 251 51   -  -
25817   -   -   -   -   -  - 257 57   -  -
25818   -   -   -   -   -  - 263 63   -  -
25819   -   -   -   -   -  - 269 69   -  -
25820   -   -   -   -   -  - 275 75   -  -
25821   -   -   -   -   -  - 281 81   -  -
25822   -   -   -   -   -  - 287 87   -  -
25823   -   -   -   -   -  - 293 93   -  -
25824   -   -   -   -   -  -   -  - 300  0
25825   -   -   -   -   -  -   -  - 305  5
25826   -   -   -   -   -  -   -  - 315 15
25827   -   -   -   -   -  -   -  - 325 25
25828   -   -   -   -   -  -   -  - 335 35
25829   -   -   -   -   -  -   -  - 345 45
25830   -   -   -   -   -  -   -  - 355 55
25831   -   -   -   -   -  -   -  - 365 65
25832   -   -   -   -   -  -   -  - 375 75
25833   -   -   -   -   -  -   -  - 385 85
25834   -   -   -   -   -  -   -  - 395 95
25835}
25836do_execsql_test joinD-887 {
25837  SELECT t1.*, t2.*, t3.*, t4.*
25838  FROM t1 RIGHT JOIN t2 ON true
25839  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
25840  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25841  WHERE t1.b=t2.b AND t2.x>0
25842  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25843} {
25844   2 102 202 302 102  2   -  -   -  -
25845   4 104 204 304 104  4   -  -   -  -
25846   6 106 206 306 106  6 206  6   -  -
25847   8 108 208 308 108  8   -  -   -  -
25848  10 110 210 310 110 10   -  - 310 10
25849  12 112 212 312 112 12 212 12   -  -
25850  14 114 214 314 114 14   -  -   -  -
25851  16 116 216 316 116 16   -  -   -  -
25852  18 118 218 318 118 18 218 18   -  -
25853  20 120 220 320 120 20   -  - 320 20
25854  22 122 222 322 122 22   -  -   -  -
25855  24 124 224 324 124 24 224 24   -  -
25856  26 126 226 326 126 26   -  -   -  -
25857  28 128 228 328 128 28   -  -   -  -
25858  30 130 230 330 130 30 230 30 330 30
25859  32 132 232 332 132 32   -  -   -  -
25860  34 134 234 334 134 34   -  -   -  -
25861  36 136 236 336 136 36 236 36   -  -
25862  38 138 238 338 138 38   -  -   -  -
25863  40 140 240 340 140 40   -  - 340 40
25864  42 142 242 342 142 42 242 42   -  -
25865  44 144 244 344 144 44   -  -   -  -
25866  46 146 246 346 146 46   -  -   -  -
25867  48 148 248 348 148 48 248 48   -  -
25868  50 150 250 350 150 50   -  - 350 50
25869  52 152 252 352 152 52   -  -   -  -
25870  54 154 254 354 154 54 254 54   -  -
25871  56 156 256 356 156 56   -  -   -  -
25872  58 158 258 358 158 58   -  -   -  -
25873  60 160 260 360 160 60 260 60 360 60
25874  62 162 262 362 162 62   -  -   -  -
25875  64 164 264 364 164 64   -  -   -  -
25876  66 166 266 366 166 66 266 66   -  -
25877  68 168 268 368 168 68   -  -   -  -
25878  70 170 270 370 170 70   -  - 370 70
25879  72 172 272 372 172 72 272 72   -  -
25880  74 174 274 374 174 74   -  -   -  -
25881  76 176 276 376 176 76   -  -   -  -
25882  78 178 278 378 178 78 278 78   -  -
25883  80 180 280 380 180 80   -  - 380 80
25884  82 182 282 382 182 82   -  -   -  -
25885  84 184 284 384 184 84 284 84   -  -
25886  86 186 286 386 186 86   -  -   -  -
25887  88 188 288 388 188 88   -  -   -  -
25888  90 190 290 390 190 90 290 90 390 90
25889  92 192 292 392 192 92   -  -   -  -
25890  94 194 294 394 194 94   -  -   -  -
25891}
25892do_execsql_test joinD-888 {
25893  SELECT t1.*, t2.*, t3.*, t4.*
25894  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25895  FULL JOIN t3 ON t1.c=t3.c
25896  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25897  WHERE t3.y>0
25898  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25899} {
25900   6 106 206 306 106  6 206  6   -  -
25901  12 112 212 312 112 12 212 12   -  -
25902  18 118 218 318 118 18 218 18   -  -
25903  24 124 224 324 124 24 224 24   -  -
25904  30 130 230 330 130 30 230 30 330 30
25905  36 136 236 336 136 36 236 36   -  -
25906  42 142 242 342 142 42 242 42   -  -
25907  48 148 248 348 148 48 248 48   -  -
25908  54 154 254 354 154 54 254 54   -  -
25909  60 160 260 360 160 60 260 60 360 60
25910  66 166 266 366 166 66 266 66   -  -
25911  72 172 272 372 172 72 272 72   -  -
25912  78 178 278 378 178 78 278 78   -  -
25913  84 184 284 384 184 84 284 84   -  -
25914  90 190 290 390 190 90 290 90 390 90
25915   -   -   -   -   -  - 203  3   -  -
25916   -   -   -   -   -  - 209  9   -  -
25917   -   -   -   -   -  - 215 15   -  -
25918   -   -   -   -   -  - 221 21   -  -
25919   -   -   -   -   -  - 227 27   -  -
25920   -   -   -   -   -  - 233 33   -  -
25921   -   -   -   -   -  - 239 39   -  -
25922   -   -   -   -   -  - 245 45   -  -
25923   -   -   -   -   -  - 251 51   -  -
25924   -   -   -   -   -  - 257 57   -  -
25925   -   -   -   -   -  - 263 63   -  -
25926   -   -   -   -   -  - 269 69   -  -
25927   -   -   -   -   -  - 275 75   -  -
25928   -   -   -   -   -  - 281 81   -  -
25929   -   -   -   -   -  - 287 87   -  -
25930   -   -   -   -   -  - 293 93   -  -
25931}
25932do_execsql_test joinD-889 {
25933  SELECT t1.*, t2.*, t3.*, t4.*
25934  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
25935  FULL JOIN t3 ON t1.c=t3.c
25936  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
25937  WHERE t3.y>0 OR t3.y IS NULL
25938  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
25939} {
25940   2 102 202 302 102  2   -  -   -  -
25941   4 104 204 304 104  4   -  -   -  -
25942   6 106 206 306 106  6 206  6   -  -
25943   8 108 208 308 108  8   -  -   -  -
25944  10 110 210 310 110 10   -  - 310 10
25945  12 112 212 312 112 12 212 12   -  -
25946  14 114 214 314 114 14   -  -   -  -
25947  16 116 216 316 116 16   -  -   -  -
25948  18 118 218 318 118 18 218 18   -  -
25949  20 120 220 320 120 20   -  - 320 20
25950  22 122 222 322 122 22   -  -   -  -
25951  24 124 224 324 124 24 224 24   -  -
25952  26 126 226 326 126 26   -  -   -  -
25953  28 128 228 328 128 28   -  -   -  -
25954  30 130 230 330 130 30 230 30 330 30
25955  32 132 232 332 132 32   -  -   -  -
25956  34 134 234 334 134 34   -  -   -  -
25957  36 136 236 336 136 36 236 36   -  -
25958  38 138 238 338 138 38   -  -   -  -
25959  40 140 240 340 140 40   -  - 340 40
25960  42 142 242 342 142 42 242 42   -  -
25961  44 144 244 344 144 44   -  -   -  -
25962  46 146 246 346 146 46   -  -   -  -
25963  48 148 248 348 148 48 248 48   -  -
25964  50 150 250 350 150 50   -  - 350 50
25965  52 152 252 352 152 52   -  -   -  -
25966  54 154 254 354 154 54 254 54   -  -
25967  56 156 256 356 156 56   -  -   -  -
25968  58 158 258 358 158 58   -  -   -  -
25969  60 160 260 360 160 60 260 60 360 60
25970  62 162 262 362 162 62   -  -   -  -
25971  64 164 264 364 164 64   -  -   -  -
25972  66 166 266 366 166 66 266 66   -  -
25973  68 168 268 368 168 68   -  -   -  -
25974  70 170 270 370 170 70   -  - 370 70
25975  72 172 272 372 172 72 272 72   -  -
25976  74 174 274 374 174 74   -  -   -  -
25977  76 176 276 376 176 76   -  -   -  -
25978  78 178 278 378 178 78 278 78   -  -
25979  80 180 280 380 180 80   -  - 380 80
25980  82 182 282 382 182 82   -  -   -  -
25981  84 184 284 384 184 84 284 84   -  -
25982  86 186 286 386 186 86   -  -   -  -
25983  88 188 288 388 188 88   -  -   -  -
25984  90 190 290 390 190 90 290 90 390 90
25985  92 192 292 392 192 92   -  -   -  -
25986  94 194 294 394 194 94   -  -   -  -
25987   -   -   -   - 100  0   -  -   -  -
25988   -   -   -   -   -  - 203  3   -  -
25989   -   -   -   -   -  - 209  9   -  -
25990   -   -   -   -   -  - 215 15   -  -
25991   -   -   -   -   -  - 221 21   -  -
25992   -   -   -   -   -  - 227 27   -  -
25993   -   -   -   -   -  - 233 33   -  -
25994   -   -   -   -   -  - 239 39   -  -
25995   -   -   -   -   -  - 245 45   -  -
25996   -   -   -   -   -  - 251 51   -  -
25997   -   -   -   -   -  - 257 57   -  -
25998   -   -   -   -   -  - 263 63   -  -
25999   -   -   -   -   -  - 269 69   -  -
26000   -   -   -   -   -  - 275 75   -  -
26001   -   -   -   -   -  - 281 81   -  -
26002   -   -   -   -   -  - 287 87   -  -
26003   -   -   -   -   -  - 293 93   -  -
26004   -   -   -   -   -  -   -  - 300  0
26005   -   -   -   -   -  -   -  - 305  5
26006   -   -   -   -   -  -   -  - 315 15
26007   -   -   -   -   -  -   -  - 325 25
26008   -   -   -   -   -  -   -  - 335 35
26009   -   -   -   -   -  -   -  - 345 45
26010   -   -   -   -   -  -   -  - 355 55
26011   -   -   -   -   -  -   -  - 365 65
26012   -   -   -   -   -  -   -  - 375 75
26013   -   -   -   -   -  -   -  - 385 85
26014   -   -   -   -   -  -   -  - 395 95
26015}
26016do_execsql_test joinD-890 {
26017  SELECT t1.*, t2.*, t3.*, t4.*
26018  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
26019  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26020  FULL JOIN t4 ON t1.d=t4.d
26021  WHERE t4.z>0
26022  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26023} {
26024  10 110 210 310 110 10   -  - 310 10
26025  20 120 220 320 120 20   -  - 320 20
26026  30 130 230 330 130 30 230 30 330 30
26027  40 140 240 340 140 40   -  - 340 40
26028  50 150 250 350 150 50   -  - 350 50
26029  60 160 260 360 160 60 260 60 360 60
26030  70 170 270 370 170 70   -  - 370 70
26031  80 180 280 380 180 80   -  - 380 80
26032  90 190 290 390 190 90 290 90 390 90
26033   -   -   -   -   -  -   -  - 305  5
26034   -   -   -   -   -  -   -  - 315 15
26035   -   -   -   -   -  -   -  - 325 25
26036   -   -   -   -   -  -   -  - 335 35
26037   -   -   -   -   -  -   -  - 345 45
26038   -   -   -   -   -  -   -  - 355 55
26039   -   -   -   -   -  -   -  - 365 65
26040   -   -   -   -   -  -   -  - 375 75
26041   -   -   -   -   -  -   -  - 385 85
26042   -   -   -   -   -  -   -  - 395 95
26043}
26044do_execsql_test joinD-891 {
26045  SELECT t1.*, t2.*, t3.*, t4.*
26046  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
26047  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26048  FULL JOIN t4 ON t1.d=t4.d
26049  WHERE t4.z IS NULL OR t4.z>0
26050  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26051} {
26052   2 102 202 302 102  2   -  -   -  -
26053   4 104 204 304 104  4   -  -   -  -
26054   6 106 206 306 106  6 206  6   -  -
26055   8 108 208 308 108  8   -  -   -  -
26056  10 110 210 310 110 10   -  - 310 10
26057  12 112 212 312 112 12 212 12   -  -
26058  14 114 214 314 114 14   -  -   -  -
26059  16 116 216 316 116 16   -  -   -  -
26060  18 118 218 318 118 18 218 18   -  -
26061  20 120 220 320 120 20   -  - 320 20
26062  22 122 222 322 122 22   -  -   -  -
26063  24 124 224 324 124 24 224 24   -  -
26064  26 126 226 326 126 26   -  -   -  -
26065  28 128 228 328 128 28   -  -   -  -
26066  30 130 230 330 130 30 230 30 330 30
26067  32 132 232 332 132 32   -  -   -  -
26068  34 134 234 334 134 34   -  -   -  -
26069  36 136 236 336 136 36 236 36   -  -
26070  38 138 238 338 138 38   -  -   -  -
26071  40 140 240 340 140 40   -  - 340 40
26072  42 142 242 342 142 42 242 42   -  -
26073  44 144 244 344 144 44   -  -   -  -
26074  46 146 246 346 146 46   -  -   -  -
26075  48 148 248 348 148 48 248 48   -  -
26076  50 150 250 350 150 50   -  - 350 50
26077  52 152 252 352 152 52   -  -   -  -
26078  54 154 254 354 154 54 254 54   -  -
26079  56 156 256 356 156 56   -  -   -  -
26080  58 158 258 358 158 58   -  -   -  -
26081  60 160 260 360 160 60 260 60 360 60
26082  62 162 262 362 162 62   -  -   -  -
26083  64 164 264 364 164 64   -  -   -  -
26084  66 166 266 366 166 66 266 66   -  -
26085  68 168 268 368 168 68   -  -   -  -
26086  70 170 270 370 170 70   -  - 370 70
26087  72 172 272 372 172 72 272 72   -  -
26088  74 174 274 374 174 74   -  -   -  -
26089  76 176 276 376 176 76   -  -   -  -
26090  78 178 278 378 178 78 278 78   -  -
26091  80 180 280 380 180 80   -  - 380 80
26092  82 182 282 382 182 82   -  -   -  -
26093  84 184 284 384 184 84 284 84   -  -
26094  86 186 286 386 186 86   -  -   -  -
26095  88 188 288 388 188 88   -  -   -  -
26096  90 190 290 390 190 90 290 90 390 90
26097  92 192 292 392 192 92   -  -   -  -
26098  94 194 294 394 194 94   -  -   -  -
26099   -   -   -   - 100  0   -  -   -  -
26100   -   -   -   -   -  - 200  0   -  -
26101   -   -   -   -   -  - 203  3   -  -
26102   -   -   -   -   -  - 209  9   -  -
26103   -   -   -   -   -  - 215 15   -  -
26104   -   -   -   -   -  - 221 21   -  -
26105   -   -   -   -   -  - 227 27   -  -
26106   -   -   -   -   -  - 233 33   -  -
26107   -   -   -   -   -  - 239 39   -  -
26108   -   -   -   -   -  - 245 45   -  -
26109   -   -   -   -   -  - 251 51   -  -
26110   -   -   -   -   -  - 257 57   -  -
26111   -   -   -   -   -  - 263 63   -  -
26112   -   -   -   -   -  - 269 69   -  -
26113   -   -   -   -   -  - 275 75   -  -
26114   -   -   -   -   -  - 281 81   -  -
26115   -   -   -   -   -  - 287 87   -  -
26116   -   -   -   -   -  - 293 93   -  -
26117   -   -   -   -   -  -   -  - 305  5
26118   -   -   -   -   -  -   -  - 315 15
26119   -   -   -   -   -  -   -  - 325 25
26120   -   -   -   -   -  -   -  - 335 35
26121   -   -   -   -   -  -   -  - 345 45
26122   -   -   -   -   -  -   -  - 355 55
26123   -   -   -   -   -  -   -  - 365 65
26124   -   -   -   -   -  -   -  - 375 75
26125   -   -   -   -   -  -   -  - 385 85
26126   -   -   -   -   -  -   -  - 395 95
26127}
26128do_execsql_test joinD-892 {
26129  SELECT t1.*, t2.*, t3.*, t4.*
26130  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
26131  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26132  FULL JOIN t4 ON t1.d=t4.d
26133  WHERE t2.x>0 AND t4.z>0
26134  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26135} {
26136  10 110 210 310 110 10   -  - 310 10
26137  20 120 220 320 120 20   -  - 320 20
26138  30 130 230 330 130 30 230 30 330 30
26139  40 140 240 340 140 40   -  - 340 40
26140  50 150 250 350 150 50   -  - 350 50
26141  60 160 260 360 160 60 260 60 360 60
26142  70 170 270 370 170 70   -  - 370 70
26143  80 180 280 380 180 80   -  - 380 80
26144  90 190 290 390 190 90 290 90 390 90
26145}
26146do_execsql_test joinD-893 {
26147  SELECT t1.*, t2.*, t3.*, t4.*
26148  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
26149  FULL JOIN t3 ON t1.c=t3.c
26150  FULL JOIN t4 ON t1.d=t4.d
26151  WHERE t4.z>0 AND t3.y>0
26152  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26153} {
26154  30 130 230 330 130 30 230 30 330 30
26155  60 160 260 360 160 60 260 60 360 60
26156  90 190 290 390 190 90 290 90 390 90
26157}
26158do_execsql_test joinD-894 {
26159  SELECT t1.*, t2.*, t3.*, t4.*
26160  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
26161  FULL JOIN t3 ON t1.c=t3.c
26162  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
26163  WHERE t2.x>0 AND t3.y>0
26164  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26165} {
26166   6 106 206 306 106  6 206  6   -  -
26167  12 112 212 312 112 12 212 12   -  -
26168  18 118 218 318 118 18 218 18   -  -
26169  24 124 224 324 124 24 224 24   -  -
26170  30 130 230 330 130 30 230 30 330 30
26171  36 136 236 336 136 36 236 36   -  -
26172  42 142 242 342 142 42 242 42   -  -
26173  48 148 248 348 148 48 248 48   -  -
26174  54 154 254 354 154 54 254 54   -  -
26175  60 160 260 360 160 60 260 60 360 60
26176  66 166 266 366 166 66 266 66   -  -
26177  72 172 272 372 172 72 272 72   -  -
26178  78 178 278 378 178 78 278 78   -  -
26179  84 184 284 384 184 84 284 84   -  -
26180  90 190 290 390 190 90 290 90 390 90
26181}
26182do_execsql_test joinD-895 {
26183  SELECT t1.*, t2.*, t3.*, t4.*
26184  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b
26185  FULL JOIN t3 ON t1.c=t3.c
26186  FULL JOIN t4 ON t1.d=t4.d
26187  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
26188  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26189} {
26190  30 130 230 330 130 30 230 30 330 30
26191  60 160 260 360 160 60 260 60 360 60
26192  90 190 290 390 190 90 290 90 390 90
26193}
26194do_execsql_test joinD-896 {
26195  SELECT t1.*, t2.*, t3.*, t4.*
26196  FROM t1 RIGHT JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0
26197  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
26198  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
26199  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26200} {
26201   2 102 202 302 102  2   -  -   -  -
26202   4 104 204 304 104  4   -  -   -  -
26203   6 106 206 306 106  6 206  6   -  -
26204   8 108 208 308 108  8   -  -   -  -
26205  10 110 210 310 110 10   -  - 310 10
26206  12 112 212 312 112 12 212 12   -  -
26207  14 114 214 314 114 14   -  -   -  -
26208  16 116 216 316 116 16   -  -   -  -
26209  18 118 218 318 118 18 218 18   -  -
26210  20 120 220 320 120 20   -  - 320 20
26211  22 122 222 322 122 22   -  -   -  -
26212  24 124 224 324 124 24 224 24   -  -
26213  26 126 226 326 126 26   -  -   -  -
26214  28 128 228 328 128 28   -  -   -  -
26215  30 130 230 330 130 30 230 30 330 30
26216  32 132 232 332 132 32   -  -   -  -
26217  34 134 234 334 134 34   -  -   -  -
26218  36 136 236 336 136 36 236 36   -  -
26219  38 138 238 338 138 38   -  -   -  -
26220  40 140 240 340 140 40   -  - 340 40
26221  42 142 242 342 142 42 242 42   -  -
26222  44 144 244 344 144 44   -  -   -  -
26223  46 146 246 346 146 46   -  -   -  -
26224  48 148 248 348 148 48 248 48   -  -
26225  50 150 250 350 150 50   -  - 350 50
26226  52 152 252 352 152 52   -  -   -  -
26227  54 154 254 354 154 54 254 54   -  -
26228  56 156 256 356 156 56   -  -   -  -
26229  58 158 258 358 158 58   -  -   -  -
26230  60 160 260 360 160 60 260 60 360 60
26231  62 162 262 362 162 62   -  -   -  -
26232  64 164 264 364 164 64   -  -   -  -
26233  66 166 266 366 166 66 266 66   -  -
26234  68 168 268 368 168 68   -  -   -  -
26235  70 170 270 370 170 70   -  - 370 70
26236  72 172 272 372 172 72 272 72   -  -
26237  74 174 274 374 174 74   -  -   -  -
26238  76 176 276 376 176 76   -  -   -  -
26239  78 178 278 378 178 78 278 78   -  -
26240  80 180 280 380 180 80   -  - 380 80
26241  82 182 282 382 182 82   -  -   -  -
26242  84 184 284 384 184 84 284 84   -  -
26243  86 186 286 386 186 86   -  -   -  -
26244  88 188 288 388 188 88   -  -   -  -
26245  90 190 290 390 190 90 290 90 390 90
26246  92 192 292 392 192 92   -  -   -  -
26247  94 194 294 394 194 94   -  -   -  -
26248   -   -   -   - 100  0   -  -   -  -
26249   -   -   -   -   -  - 200  0   -  -
26250   -   -   -   -   -  - 203  3   -  -
26251   -   -   -   -   -  - 209  9   -  -
26252   -   -   -   -   -  - 215 15   -  -
26253   -   -   -   -   -  - 221 21   -  -
26254   -   -   -   -   -  - 227 27   -  -
26255   -   -   -   -   -  - 233 33   -  -
26256   -   -   -   -   -  - 239 39   -  -
26257   -   -   -   -   -  - 245 45   -  -
26258   -   -   -   -   -  - 251 51   -  -
26259   -   -   -   -   -  - 257 57   -  -
26260   -   -   -   -   -  - 263 63   -  -
26261   -   -   -   -   -  - 269 69   -  -
26262   -   -   -   -   -  - 275 75   -  -
26263   -   -   -   -   -  - 281 81   -  -
26264   -   -   -   -   -  - 287 87   -  -
26265   -   -   -   -   -  - 293 93   -  -
26266   -   -   -   -   -  -   -  - 300  0
26267   -   -   -   -   -  -   -  - 305  5
26268   -   -   -   -   -  -   -  - 315 15
26269   -   -   -   -   -  -   -  - 325 25
26270   -   -   -   -   -  -   -  - 335 35
26271   -   -   -   -   -  -   -  - 345 45
26272   -   -   -   -   -  -   -  - 355 55
26273   -   -   -   -   -  -   -  - 365 65
26274   -   -   -   -   -  -   -  - 375 75
26275   -   -   -   -   -  -   -  - 385 85
26276   -   -   -   -   -  -   -  - 395 95
26277}
26278do_execsql_test joinD-897 {
26279  SELECT t1.*, t2.*, t3.*, t4.*
26280  FROM t1 RIGHT JOIN t2 ON t2.x>0
26281  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
26282  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
26283  WHERE t1.b IS NOT DISTINCT FROM t2.b
26284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26285} {
26286   2 102 202 302 102  2   -  -   -  -
26287   4 104 204 304 104  4   -  -   -  -
26288   6 106 206 306 106  6 206  6   -  -
26289   8 108 208 308 108  8   -  -   -  -
26290  10 110 210 310 110 10   -  - 310 10
26291  12 112 212 312 112 12 212 12   -  -
26292  14 114 214 314 114 14   -  -   -  -
26293  16 116 216 316 116 16   -  -   -  -
26294  18 118 218 318 118 18 218 18   -  -
26295  20 120 220 320 120 20   -  - 320 20
26296  22 122 222 322 122 22   -  -   -  -
26297  24 124 224 324 124 24 224 24   -  -
26298  26 126 226 326 126 26   -  -   -  -
26299  28 128 228 328 128 28   -  -   -  -
26300  30 130 230 330 130 30 230 30 330 30
26301  32 132 232 332 132 32   -  -   -  -
26302  34 134 234 334 134 34   -  -   -  -
26303  36 136 236 336 136 36 236 36   -  -
26304  38 138 238 338 138 38   -  -   -  -
26305  40 140 240 340 140 40   -  - 340 40
26306  42 142 242 342 142 42 242 42   -  -
26307  44 144 244 344 144 44   -  -   -  -
26308  46 146 246 346 146 46   -  -   -  -
26309  48 148 248 348 148 48 248 48   -  -
26310  50 150 250 350 150 50   -  - 350 50
26311  52 152 252 352 152 52   -  -   -  -
26312  54 154 254 354 154 54 254 54   -  -
26313  56 156 256 356 156 56   -  -   -  -
26314  58 158 258 358 158 58   -  -   -  -
26315  60 160 260 360 160 60 260 60 360 60
26316  62 162 262 362 162 62   -  -   -  -
26317  64 164 264 364 164 64   -  -   -  -
26318  66 166 266 366 166 66 266 66   -  -
26319  68 168 268 368 168 68   -  -   -  -
26320  70 170 270 370 170 70   -  - 370 70
26321  72 172 272 372 172 72 272 72   -  -
26322  74 174 274 374 174 74   -  -   -  -
26323  76 176 276 376 176 76   -  -   -  -
26324  78 178 278 378 178 78 278 78   -  -
26325  80 180 280 380 180 80   -  - 380 80
26326  82 182 282 382 182 82   -  -   -  -
26327  84 184 284 384 184 84 284 84   -  -
26328  86 186 286 386 186 86   -  -   -  -
26329  88 188 288 388 188 88   -  -   -  -
26330  90 190 290 390 190 90 290 90 390 90
26331  92 192 292 392 192 92   -  -   -  -
26332  94 194 294 394 194 94   -  -   -  -
26333   -   -   -   -   -  - 200  0   -  -
26334   -   -   -   -   -  -   -  - 300  0
26335}
26336do_execsql_test joinD-898 {
26337  SELECT t1.*, t2.*, t3.*, t4.*
26338  FROM t1 RIGHT JOIN t2 ON t2.x>0
26339  FULL JOIN t3 ON t3.y>0
26340  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
26341  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.c = t3.c
26342  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26343} {
26344   6 106 206 306 106  6 206  6   -  -
26345  12 112 212 312 112 12 212 12   -  -
26346  18 118 218 318 118 18 218 18   -  -
26347  24 124 224 324 124 24 224 24   -  -
26348  30 130 230 330 130 30 230 30 330 30
26349  36 136 236 336 136 36 236 36   -  -
26350  42 142 242 342 142 42 242 42   -  -
26351  48 148 248 348 148 48 248 48   -  -
26352  54 154 254 354 154 54 254 54   -  -
26353  60 160 260 360 160 60 260 60 360 60
26354  66 166 266 366 166 66 266 66   -  -
26355  72 172 272 372 172 72 272 72   -  -
26356  78 178 278 378 178 78 278 78   -  -
26357  84 184 284 384 184 84 284 84   -  -
26358  90 190 290 390 190 90 290 90 390 90
26359}
26360do_execsql_test joinD-899 {
26361  SELECT t1.*, t2.*, t3.*, t4.*
26362  FROM t1 RIGHT JOIN t2 ON t2.x>0
26363  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
26364  FULL JOIN t4 ON t4.z>0
26365  WHERE t1.b IS NOT DISTINCT FROM t2.b AND t1.d = t4.d
26366  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26367} {
26368  10 110 210 310 110 10   -  - 310 10
26369  20 120 220 320 120 20   -  - 320 20
26370  30 130 230 330 130 30 230 30 330 30
26371  40 140 240 340 140 40   -  - 340 40
26372  50 150 250 350 150 50   -  - 350 50
26373  60 160 260 360 160 60 260 60 360 60
26374  70 170 270 370 170 70   -  - 370 70
26375  80 180 280 380 180 80   -  - 380 80
26376  90 190 290 390 190 90 290 90 390 90
26377}
26378do_execsql_test joinD-900 {
26379  SELECT t1.*, t2.*, t3.*, t4.*
26380  FROM t1 RIGHT JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0
26381  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
26382  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
26383  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26384} {
26385   2 102 202 302 102  2   -  -   -  -
26386   4 104 204 304 104  4   -  -   -  -
26387   6 106 206 306 106  6 206  6   -  -
26388   8 108 208 308 108  8   -  -   -  -
26389  10 110 210 310 110 10   -  - 310 10
26390  12 112 212 312 112 12 212 12   -  -
26391  14 114 214 314 114 14   -  -   -  -
26392  16 116 216 316 116 16   -  -   -  -
26393  18 118 218 318 118 18 218 18   -  -
26394  20 120 220 320 120 20   -  - 320 20
26395  22 122 222 322 122 22   -  -   -  -
26396  24 124 224 324 124 24 224 24   -  -
26397  26 126 226 326 126 26   -  -   -  -
26398  28 128 228 328 128 28   -  -   -  -
26399  30 130 230 330 130 30 230 30 330 30
26400  32 132 232 332 132 32   -  -   -  -
26401  34 134 234 334 134 34   -  -   -  -
26402  36 136 236 336 136 36 236 36   -  -
26403  38 138 238 338 138 38   -  -   -  -
26404  40 140 240 340 140 40   -  - 340 40
26405  42 142 242 342 142 42 242 42   -  -
26406  44 144 244 344 144 44   -  -   -  -
26407  46 146 246 346 146 46   -  -   -  -
26408  48 148 248 348 148 48 248 48   -  -
26409  50 150 250 350 150 50   -  - 350 50
26410  52 152 252 352 152 52   -  -   -  -
26411  54 154 254 354 154 54 254 54   -  -
26412  56 156 256 356 156 56   -  -   -  -
26413  58 158 258 358 158 58   -  -   -  -
26414  60 160 260 360 160 60 260 60 360 60
26415  62 162 262 362 162 62   -  -   -  -
26416  64 164 264 364 164 64   -  -   -  -
26417  66 166 266 366 166 66 266 66   -  -
26418  68 168 268 368 168 68   -  -   -  -
26419  70 170 270 370 170 70   -  - 370 70
26420  72 172 272 372 172 72 272 72   -  -
26421  74 174 274 374 174 74   -  -   -  -
26422  76 176 276 376 176 76   -  -   -  -
26423  78 178 278 378 178 78 278 78   -  -
26424  80 180 280 380 180 80   -  - 380 80
26425  82 182 282 382 182 82   -  -   -  -
26426  84 184 284 384 184 84 284 84   -  -
26427  86 186 286 386 186 86   -  -   -  -
26428  88 188 288 388 188 88   -  -   -  -
26429  90 190 290 390 190 90 290 90 390 90
26430  92 192 292 392 192 92   -  -   -  -
26431  94 194 294 394 194 94   -  -   -  -
26432   -   -   -   - 100  0   -  -   -  -
26433   -   -   -   -   -  - 200  0   -  -
26434   -   -   -   -   -  - 203  3   -  -
26435   -   -   -   -   -  - 209  9   -  -
26436   -   -   -   -   -  - 215 15   -  -
26437   -   -   -   -   -  - 221 21   -  -
26438   -   -   -   -   -  - 227 27   -  -
26439   -   -   -   -   -  - 233 33   -  -
26440   -   -   -   -   -  - 239 39   -  -
26441   -   -   -   -   -  - 245 45   -  -
26442   -   -   -   -   -  - 251 51   -  -
26443   -   -   -   -   -  - 257 57   -  -
26444   -   -   -   -   -  - 263 63   -  -
26445   -   -   -   -   -  - 269 69   -  -
26446   -   -   -   -   -  - 275 75   -  -
26447   -   -   -   -   -  - 281 81   -  -
26448   -   -   -   -   -  - 287 87   -  -
26449   -   -   -   -   -  - 293 93   -  -
26450   -   -   -   -   -  -   -  - 300  0
26451   -   -   -   -   -  -   -  - 305  5
26452   -   -   -   -   -  -   -  - 315 15
26453   -   -   -   -   -  -   -  - 325 25
26454   -   -   -   -   -  -   -  - 335 35
26455   -   -   -   -   -  -   -  - 345 45
26456   -   -   -   -   -  -   -  - 355 55
26457   -   -   -   -   -  -   -  - 365 65
26458   -   -   -   -   -  -   -  - 375 75
26459   -   -   -   -   -  -   -  - 385 85
26460   -   -   -   -   -  -   -  - 395 95
26461}
26462do_execsql_test joinD-901 {
26463  SELECT t1.*, t2.*, t3.*, t4.*
26464  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26465  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26466  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26467  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26468} {
26469  15 115 215 315   -  - 215 15 315 15
26470  30 130 230 330 130 30 230 30 330 30
26471  45 145 245 345   -  - 245 45 345 45
26472  60 160 260 360 160 60 260 60 360 60
26473  75 175 275 375   -  - 275 75 375 75
26474  90 190 290 390 190 90 290 90 390 90
26475}
26476do_execsql_test joinD-902 {
26477  SELECT t1.*, t2.*, t3.*, t4.*
26478  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26479  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26480  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26481  WHERE t2.x>0
26482  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26483} {
26484  30 130 230 330 130 30 230 30 330 30
26485  60 160 260 360 160 60 260 60 360 60
26486  90 190 290 390 190 90 290 90 390 90
26487}
26488do_execsql_test joinD-903 {
26489  SELECT t1.*, t2.*, t3.*, t4.*
26490  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26491  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26492  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26493  WHERE (t2.x>0 OR t2.x IS NULL)
26494  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26495} {
26496  15 115 215 315   -  - 215 15 315 15
26497  30 130 230 330 130 30 230 30 330 30
26498  45 145 245 345   -  - 245 45 345 45
26499  60 160 260 360 160 60 260 60 360 60
26500  75 175 275 375   -  - 275 75 375 75
26501  90 190 290 390 190 90 290 90 390 90
26502}
26503do_execsql_test joinD-904 {
26504  SELECT t1.*, t2.*, t3.*, t4.*
26505  FROM t1 FULL JOIN t2 ON true
26506  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26507  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26508  WHERE t1.b=t2.b AND t2.x>0
26509  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26510} {
26511  30 130 230 330 130 30 230 30 330 30
26512  60 160 260 360 160 60 260 60 360 60
26513  90 190 290 390 190 90 290 90 390 90
26514}
26515do_execsql_test joinD-905 {
26516  SELECT t1.*, t2.*, t3.*, t4.*
26517  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26518  INNER JOIN t3 ON t1.c=t3.c
26519  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26520  WHERE t3.y>0
26521  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26522} {
26523  15 115 215 315   -  - 215 15 315 15
26524  30 130 230 330 130 30 230 30 330 30
26525  45 145 245 345   -  - 245 45 345 45
26526  60 160 260 360 160 60 260 60 360 60
26527  75 175 275 375   -  - 275 75 375 75
26528  90 190 290 390 190 90 290 90 390 90
26529}
26530do_execsql_test joinD-906 {
26531  SELECT t1.*, t2.*, t3.*, t4.*
26532  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26533  INNER JOIN t3 ON t1.c=t3.c
26534  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26535  WHERE t3.y>0 OR t3.y IS NULL
26536  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26537} {
26538  15 115 215 315   -  - 215 15 315 15
26539  30 130 230 330 130 30 230 30 330 30
26540  45 145 245 345   -  - 245 45 345 45
26541  60 160 260 360 160 60 260 60 360 60
26542  75 175 275 375   -  - 275 75 375 75
26543  90 190 290 390 190 90 290 90 390 90
26544}
26545do_execsql_test joinD-907 {
26546  SELECT t1.*, t2.*, t3.*, t4.*
26547  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26548  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26549  INNER JOIN t4 ON t1.d=t4.d
26550  WHERE t4.z>0
26551  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26552} {
26553  15 115 215 315   -  - 215 15 315 15
26554  30 130 230 330 130 30 230 30 330 30
26555  45 145 245 345   -  - 245 45 345 45
26556  60 160 260 360 160 60 260 60 360 60
26557  75 175 275 375   -  - 275 75 375 75
26558  90 190 290 390 190 90 290 90 390 90
26559}
26560do_execsql_test joinD-908 {
26561  SELECT t1.*, t2.*, t3.*, t4.*
26562  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26563  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26564  INNER JOIN t4 ON t1.d=t4.d
26565  WHERE t4.z IS NULL OR t4.z>0
26566  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26567} {
26568  15 115 215 315   -  - 215 15 315 15
26569  30 130 230 330 130 30 230 30 330 30
26570  45 145 245 345   -  - 245 45 345 45
26571  60 160 260 360 160 60 260 60 360 60
26572  75 175 275 375   -  - 275 75 375 75
26573  90 190 290 390 190 90 290 90 390 90
26574}
26575do_execsql_test joinD-909 {
26576  SELECT t1.*, t2.*, t3.*, t4.*
26577  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26578  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26579  INNER JOIN t4 ON t1.d=t4.d
26580  WHERE t2.x>0 AND t4.z>0
26581  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26582} {
26583  30 130 230 330 130 30 230 30 330 30
26584  60 160 260 360 160 60 260 60 360 60
26585  90 190 290 390 190 90 290 90 390 90
26586}
26587do_execsql_test joinD-910 {
26588  SELECT t1.*, t2.*, t3.*, t4.*
26589  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26590  INNER JOIN t3 ON t1.c=t3.c
26591  INNER JOIN t4 ON t1.d=t4.d
26592  WHERE t4.z>0 AND t3.y>0
26593  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26594} {
26595  15 115 215 315   -  - 215 15 315 15
26596  30 130 230 330 130 30 230 30 330 30
26597  45 145 245 345   -  - 245 45 345 45
26598  60 160 260 360 160 60 260 60 360 60
26599  75 175 275 375   -  - 275 75 375 75
26600  90 190 290 390 190 90 290 90 390 90
26601}
26602do_execsql_test joinD-911 {
26603  SELECT t1.*, t2.*, t3.*, t4.*
26604  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26605  INNER JOIN t3 ON t1.c=t3.c
26606  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26607  WHERE t2.x>0 AND t3.y>0
26608  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26609} {
26610  30 130 230 330 130 30 230 30 330 30
26611  60 160 260 360 160 60 260 60 360 60
26612  90 190 290 390 190 90 290 90 390 90
26613}
26614do_execsql_test joinD-912 {
26615  SELECT t1.*, t2.*, t3.*, t4.*
26616  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26617  INNER JOIN t3 ON t1.c=t3.c
26618  INNER JOIN t4 ON t1.d=t4.d
26619  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
26620  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26621} {
26622  30 130 230 330 130 30 230 30 330 30
26623  60 160 260 360 160 60 260 60 360 60
26624  90 190 290 390 190 90 290 90 390 90
26625}
26626do_execsql_test joinD-913 {
26627  SELECT t1.*, t2.*, t3.*, t4.*
26628  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
26629  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
26630  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
26631  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26632} {
26633  15 115 215 315   -  - 215 15 315 15
26634  30 130 230 330 130 30 230 30 330 30
26635  45 145 245 345   -  - 245 45 345 45
26636  60 160 260 360 160 60 260 60 360 60
26637  75 175 275 375   -  - 275 75 375 75
26638  90 190 290 390 190 90 290 90 390 90
26639}
26640do_execsql_test joinD-914 {
26641  SELECT t1.*, t2.*, t3.*, t4.*
26642  FROM t1 FULL JOIN t2 ON t2.x>0
26643  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
26644  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
26645  WHERE t1.b = t2.b
26646  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26647} {
26648  30 130 230 330 130 30 230 30 330 30
26649  60 160 260 360 160 60 260 60 360 60
26650  90 190 290 390 190 90 290 90 390 90
26651}
26652do_execsql_test joinD-915 {
26653  SELECT t1.*, t2.*, t3.*, t4.*
26654  FROM t1 FULL JOIN t2 ON t2.x>0
26655  INNER JOIN t3 ON t3.y>0
26656  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
26657  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
26658  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26659} {
26660  30 130 230 330 130 30 230 30 330 30
26661  60 160 260 360 160 60 260 60 360 60
26662  90 190 290 390 190 90 290 90 390 90
26663}
26664do_execsql_test joinD-916 {
26665  SELECT t1.*, t2.*, t3.*, t4.*
26666  FROM t1 FULL JOIN t2 ON t2.x>0
26667  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
26668  INNER JOIN t4 ON t4.z>0
26669  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
26670  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26671} {
26672  30 130 230 330 130 30 230 30 330 30
26673  60 160 260 360 160 60 260 60 360 60
26674  90 190 290 390 190 90 290 90 390 90
26675}
26676do_execsql_test joinD-917 {
26677  SELECT t1.*, t2.*, t3.*, t4.*
26678  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26679  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
26680  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
26681  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26682} {
26683  15 115 215 315   -  - 215 15 315 15
26684  30 130 230 330 130 30 230 30 330 30
26685  45 145 245 345   -  - 245 45 345 45
26686  60 160 260 360 160 60 260 60 360 60
26687  75 175 275 375   -  - 275 75 375 75
26688  90 190 290 390 190 90 290 90 390 90
26689}
26690do_execsql_test joinD-918 {
26691  SELECT t1.*, t2.*, t3.*, t4.*
26692  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26693  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26694  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26695  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26696} {
26697   3 103 203 303   -  - 203  3   -  -
26698   6 106 206 306 106  6 206  6   -  -
26699   9 109 209 309   -  - 209  9   -  -
26700  12 112 212 312 112 12 212 12   -  -
26701  15 115 215 315   -  - 215 15 315 15
26702  18 118 218 318 118 18 218 18   -  -
26703  21 121 221 321   -  - 221 21   -  -
26704  24 124 224 324 124 24 224 24   -  -
26705  27 127 227 327   -  - 227 27   -  -
26706  30 130 230 330 130 30 230 30 330 30
26707  33 133 233 333   -  - 233 33   -  -
26708  36 136 236 336 136 36 236 36   -  -
26709  39 139 239 339   -  - 239 39   -  -
26710  42 142 242 342 142 42 242 42   -  -
26711  45 145 245 345   -  - 245 45 345 45
26712  48 148 248 348 148 48 248 48   -  -
26713  51 151 251 351   -  - 251 51   -  -
26714  54 154 254 354 154 54 254 54   -  -
26715  57 157 257 357   -  - 257 57   -  -
26716  60 160 260 360 160 60 260 60 360 60
26717  63 163 263 363   -  - 263 63   -  -
26718  66 166 266 366 166 66 266 66   -  -
26719  69 169 269 369   -  - 269 69   -  -
26720  72 172 272 372 172 72 272 72   -  -
26721  75 175 275 375   -  - 275 75 375 75
26722  78 178 278 378 178 78 278 78   -  -
26723  81 181 281 381   -  - 281 81   -  -
26724  84 184 284 384 184 84 284 84   -  -
26725  87 187 287 387   -  - 287 87   -  -
26726  90 190 290 390 190 90 290 90 390 90
26727  93 193 293 393   -  - 293 93   -  -
26728}
26729do_execsql_test joinD-919 {
26730  SELECT t1.*, t2.*, t3.*, t4.*
26731  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26732  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26733  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26734  WHERE t2.x>0
26735  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26736} {
26737   6 106 206 306 106  6 206  6   -  -
26738  12 112 212 312 112 12 212 12   -  -
26739  18 118 218 318 118 18 218 18   -  -
26740  24 124 224 324 124 24 224 24   -  -
26741  30 130 230 330 130 30 230 30 330 30
26742  36 136 236 336 136 36 236 36   -  -
26743  42 142 242 342 142 42 242 42   -  -
26744  48 148 248 348 148 48 248 48   -  -
26745  54 154 254 354 154 54 254 54   -  -
26746  60 160 260 360 160 60 260 60 360 60
26747  66 166 266 366 166 66 266 66   -  -
26748  72 172 272 372 172 72 272 72   -  -
26749  78 178 278 378 178 78 278 78   -  -
26750  84 184 284 384 184 84 284 84   -  -
26751  90 190 290 390 190 90 290 90 390 90
26752}
26753do_execsql_test joinD-920 {
26754  SELECT t1.*, t2.*, t3.*, t4.*
26755  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26756  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26757  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26758  WHERE (t2.x>0 OR t2.x IS NULL)
26759  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26760} {
26761   3 103 203 303   -  - 203  3   -  -
26762   6 106 206 306 106  6 206  6   -  -
26763   9 109 209 309   -  - 209  9   -  -
26764  12 112 212 312 112 12 212 12   -  -
26765  15 115 215 315   -  - 215 15 315 15
26766  18 118 218 318 118 18 218 18   -  -
26767  21 121 221 321   -  - 221 21   -  -
26768  24 124 224 324 124 24 224 24   -  -
26769  27 127 227 327   -  - 227 27   -  -
26770  30 130 230 330 130 30 230 30 330 30
26771  33 133 233 333   -  - 233 33   -  -
26772  36 136 236 336 136 36 236 36   -  -
26773  39 139 239 339   -  - 239 39   -  -
26774  42 142 242 342 142 42 242 42   -  -
26775  45 145 245 345   -  - 245 45 345 45
26776  48 148 248 348 148 48 248 48   -  -
26777  51 151 251 351   -  - 251 51   -  -
26778  54 154 254 354 154 54 254 54   -  -
26779  57 157 257 357   -  - 257 57   -  -
26780  60 160 260 360 160 60 260 60 360 60
26781  63 163 263 363   -  - 263 63   -  -
26782  66 166 266 366 166 66 266 66   -  -
26783  69 169 269 369   -  - 269 69   -  -
26784  72 172 272 372 172 72 272 72   -  -
26785  75 175 275 375   -  - 275 75 375 75
26786  78 178 278 378 178 78 278 78   -  -
26787  81 181 281 381   -  - 281 81   -  -
26788  84 184 284 384 184 84 284 84   -  -
26789  87 187 287 387   -  - 287 87   -  -
26790  90 190 290 390 190 90 290 90 390 90
26791  93 193 293 393   -  - 293 93   -  -
26792}
26793do_execsql_test joinD-921 {
26794  SELECT t1.*, t2.*, t3.*, t4.*
26795  FROM t1 FULL JOIN t2 ON true
26796  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26797  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26798  WHERE t1.b=t2.b AND t2.x>0
26799  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26800} {
26801   6 106 206 306 106  6 206  6   -  -
26802  12 112 212 312 112 12 212 12   -  -
26803  18 118 218 318 118 18 218 18   -  -
26804  24 124 224 324 124 24 224 24   -  -
26805  30 130 230 330 130 30 230 30 330 30
26806  36 136 236 336 136 36 236 36   -  -
26807  42 142 242 342 142 42 242 42   -  -
26808  48 148 248 348 148 48 248 48   -  -
26809  54 154 254 354 154 54 254 54   -  -
26810  60 160 260 360 160 60 260 60 360 60
26811  66 166 266 366 166 66 266 66   -  -
26812  72 172 272 372 172 72 272 72   -  -
26813  78 178 278 378 178 78 278 78   -  -
26814  84 184 284 384 184 84 284 84   -  -
26815  90 190 290 390 190 90 290 90 390 90
26816}
26817do_execsql_test joinD-922 {
26818  SELECT t1.*, t2.*, t3.*, t4.*
26819  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26820  INNER JOIN t3 ON t1.c=t3.c
26821  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26822  WHERE t3.y>0
26823  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26824} {
26825   3 103 203 303   -  - 203  3   -  -
26826   6 106 206 306 106  6 206  6   -  -
26827   9 109 209 309   -  - 209  9   -  -
26828  12 112 212 312 112 12 212 12   -  -
26829  15 115 215 315   -  - 215 15 315 15
26830  18 118 218 318 118 18 218 18   -  -
26831  21 121 221 321   -  - 221 21   -  -
26832  24 124 224 324 124 24 224 24   -  -
26833  27 127 227 327   -  - 227 27   -  -
26834  30 130 230 330 130 30 230 30 330 30
26835  33 133 233 333   -  - 233 33   -  -
26836  36 136 236 336 136 36 236 36   -  -
26837  39 139 239 339   -  - 239 39   -  -
26838  42 142 242 342 142 42 242 42   -  -
26839  45 145 245 345   -  - 245 45 345 45
26840  48 148 248 348 148 48 248 48   -  -
26841  51 151 251 351   -  - 251 51   -  -
26842  54 154 254 354 154 54 254 54   -  -
26843  57 157 257 357   -  - 257 57   -  -
26844  60 160 260 360 160 60 260 60 360 60
26845  63 163 263 363   -  - 263 63   -  -
26846  66 166 266 366 166 66 266 66   -  -
26847  69 169 269 369   -  - 269 69   -  -
26848  72 172 272 372 172 72 272 72   -  -
26849  75 175 275 375   -  - 275 75 375 75
26850  78 178 278 378 178 78 278 78   -  -
26851  81 181 281 381   -  - 281 81   -  -
26852  84 184 284 384 184 84 284 84   -  -
26853  87 187 287 387   -  - 287 87   -  -
26854  90 190 290 390 190 90 290 90 390 90
26855  93 193 293 393   -  - 293 93   -  -
26856}
26857do_execsql_test joinD-923 {
26858  SELECT t1.*, t2.*, t3.*, t4.*
26859  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26860  INNER JOIN t3 ON t1.c=t3.c
26861  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26862  WHERE t3.y>0 OR t3.y IS NULL
26863  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26864} {
26865   3 103 203 303   -  - 203  3   -  -
26866   6 106 206 306 106  6 206  6   -  -
26867   9 109 209 309   -  - 209  9   -  -
26868  12 112 212 312 112 12 212 12   -  -
26869  15 115 215 315   -  - 215 15 315 15
26870  18 118 218 318 118 18 218 18   -  -
26871  21 121 221 321   -  - 221 21   -  -
26872  24 124 224 324 124 24 224 24   -  -
26873  27 127 227 327   -  - 227 27   -  -
26874  30 130 230 330 130 30 230 30 330 30
26875  33 133 233 333   -  - 233 33   -  -
26876  36 136 236 336 136 36 236 36   -  -
26877  39 139 239 339   -  - 239 39   -  -
26878  42 142 242 342 142 42 242 42   -  -
26879  45 145 245 345   -  - 245 45 345 45
26880  48 148 248 348 148 48 248 48   -  -
26881  51 151 251 351   -  - 251 51   -  -
26882  54 154 254 354 154 54 254 54   -  -
26883  57 157 257 357   -  - 257 57   -  -
26884  60 160 260 360 160 60 260 60 360 60
26885  63 163 263 363   -  - 263 63   -  -
26886  66 166 266 366 166 66 266 66   -  -
26887  69 169 269 369   -  - 269 69   -  -
26888  72 172 272 372 172 72 272 72   -  -
26889  75 175 275 375   -  - 275 75 375 75
26890  78 178 278 378 178 78 278 78   -  -
26891  81 181 281 381   -  - 281 81   -  -
26892  84 184 284 384 184 84 284 84   -  -
26893  87 187 287 387   -  - 287 87   -  -
26894  90 190 290 390 190 90 290 90 390 90
26895  93 193 293 393   -  - 293 93   -  -
26896}
26897do_execsql_test joinD-924 {
26898  SELECT t1.*, t2.*, t3.*, t4.*
26899  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26900  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26901  LEFT JOIN t4 ON t1.d=t4.d
26902  WHERE t4.z>0
26903  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26904} {
26905  15 115 215 315   -  - 215 15 315 15
26906  30 130 230 330 130 30 230 30 330 30
26907  45 145 245 345   -  - 245 45 345 45
26908  60 160 260 360 160 60 260 60 360 60
26909  75 175 275 375   -  - 275 75 375 75
26910  90 190 290 390 190 90 290 90 390 90
26911}
26912do_execsql_test joinD-925 {
26913  SELECT t1.*, t2.*, t3.*, t4.*
26914  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26915  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26916  LEFT JOIN t4 ON t1.d=t4.d
26917  WHERE t4.z IS NULL OR t4.z>0
26918  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26919} {
26920   3 103 203 303   -  - 203  3   -  -
26921   6 106 206 306 106  6 206  6   -  -
26922   9 109 209 309   -  - 209  9   -  -
26923  12 112 212 312 112 12 212 12   -  -
26924  15 115 215 315   -  - 215 15 315 15
26925  18 118 218 318 118 18 218 18   -  -
26926  21 121 221 321   -  - 221 21   -  -
26927  24 124 224 324 124 24 224 24   -  -
26928  27 127 227 327   -  - 227 27   -  -
26929  30 130 230 330 130 30 230 30 330 30
26930  33 133 233 333   -  - 233 33   -  -
26931  36 136 236 336 136 36 236 36   -  -
26932  39 139 239 339   -  - 239 39   -  -
26933  42 142 242 342 142 42 242 42   -  -
26934  45 145 245 345   -  - 245 45 345 45
26935  48 148 248 348 148 48 248 48   -  -
26936  51 151 251 351   -  - 251 51   -  -
26937  54 154 254 354 154 54 254 54   -  -
26938  57 157 257 357   -  - 257 57   -  -
26939  60 160 260 360 160 60 260 60 360 60
26940  63 163 263 363   -  - 263 63   -  -
26941  66 166 266 366 166 66 266 66   -  -
26942  69 169 269 369   -  - 269 69   -  -
26943  72 172 272 372 172 72 272 72   -  -
26944  75 175 275 375   -  - 275 75 375 75
26945  78 178 278 378 178 78 278 78   -  -
26946  81 181 281 381   -  - 281 81   -  -
26947  84 184 284 384 184 84 284 84   -  -
26948  87 187 287 387   -  - 287 87   -  -
26949  90 190 290 390 190 90 290 90 390 90
26950  93 193 293 393   -  - 293 93   -  -
26951}
26952do_execsql_test joinD-926 {
26953  SELECT t1.*, t2.*, t3.*, t4.*
26954  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26955  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
26956  LEFT JOIN t4 ON t1.d=t4.d
26957  WHERE t2.x>0 AND t4.z>0
26958  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26959} {
26960  30 130 230 330 130 30 230 30 330 30
26961  60 160 260 360 160 60 260 60 360 60
26962  90 190 290 390 190 90 290 90 390 90
26963}
26964do_execsql_test joinD-927 {
26965  SELECT t1.*, t2.*, t3.*, t4.*
26966  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
26967  INNER JOIN t3 ON t1.c=t3.c
26968  LEFT JOIN t4 ON t1.d=t4.d
26969  WHERE t4.z>0 AND t3.y>0
26970  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26971} {
26972  15 115 215 315   -  - 215 15 315 15
26973  30 130 230 330 130 30 230 30 330 30
26974  45 145 245 345   -  - 245 45 345 45
26975  60 160 260 360 160 60 260 60 360 60
26976  75 175 275 375   -  - 275 75 375 75
26977  90 190 290 390 190 90 290 90 390 90
26978}
26979do_execsql_test joinD-928 {
26980  SELECT t1.*, t2.*, t3.*, t4.*
26981  FROM t1 FULL JOIN t2 ON t1.b=t2.b
26982  INNER JOIN t3 ON t1.c=t3.c
26983  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
26984  WHERE t2.x>0 AND t3.y>0
26985  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
26986} {
26987   6 106 206 306 106  6 206  6   -  -
26988  12 112 212 312 112 12 212 12   -  -
26989  18 118 218 318 118 18 218 18   -  -
26990  24 124 224 324 124 24 224 24   -  -
26991  30 130 230 330 130 30 230 30 330 30
26992  36 136 236 336 136 36 236 36   -  -
26993  42 142 242 342 142 42 242 42   -  -
26994  48 148 248 348 148 48 248 48   -  -
26995  54 154 254 354 154 54 254 54   -  -
26996  60 160 260 360 160 60 260 60 360 60
26997  66 166 266 366 166 66 266 66   -  -
26998  72 172 272 372 172 72 272 72   -  -
26999  78 178 278 378 178 78 278 78   -  -
27000  84 184 284 384 184 84 284 84   -  -
27001  90 190 290 390 190 90 290 90 390 90
27002}
27003do_execsql_test joinD-929 {
27004  SELECT t1.*, t2.*, t3.*, t4.*
27005  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27006  INNER JOIN t3 ON t1.c=t3.c
27007  LEFT JOIN t4 ON t1.d=t4.d
27008  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
27009  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27010} {
27011  30 130 230 330 130 30 230 30 330 30
27012  60 160 260 360 160 60 260 60 360 60
27013  90 190 290 390 190 90 290 90 390 90
27014}
27015do_execsql_test joinD-930 {
27016  SELECT t1.*, t2.*, t3.*, t4.*
27017  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
27018  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27019  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27020  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27021} {
27022   3 103 203 303   -  - 203  3   -  -
27023   6 106 206 306 106  6 206  6   -  -
27024   9 109 209 309   -  - 209  9   -  -
27025  12 112 212 312 112 12 212 12   -  -
27026  15 115 215 315   -  - 215 15 315 15
27027  18 118 218 318 118 18 218 18   -  -
27028  21 121 221 321   -  - 221 21   -  -
27029  24 124 224 324 124 24 224 24   -  -
27030  27 127 227 327   -  - 227 27   -  -
27031  30 130 230 330 130 30 230 30 330 30
27032  33 133 233 333   -  - 233 33   -  -
27033  36 136 236 336 136 36 236 36   -  -
27034  39 139 239 339   -  - 239 39   -  -
27035  42 142 242 342 142 42 242 42   -  -
27036  45 145 245 345   -  - 245 45 345 45
27037  48 148 248 348 148 48 248 48   -  -
27038  51 151 251 351   -  - 251 51   -  -
27039  54 154 254 354 154 54 254 54   -  -
27040  57 157 257 357   -  - 257 57   -  -
27041  60 160 260 360 160 60 260 60 360 60
27042  63 163 263 363   -  - 263 63   -  -
27043  66 166 266 366 166 66 266 66   -  -
27044  69 169 269 369   -  - 269 69   -  -
27045  72 172 272 372 172 72 272 72   -  -
27046  75 175 275 375   -  - 275 75 375 75
27047  78 178 278 378 178 78 278 78   -  -
27048  81 181 281 381   -  - 281 81   -  -
27049  84 184 284 384 184 84 284 84   -  -
27050  87 187 287 387   -  - 287 87   -  -
27051  90 190 290 390 190 90 290 90 390 90
27052  93 193 293 393   -  - 293 93   -  -
27053}
27054do_execsql_test joinD-931 {
27055  SELECT t1.*, t2.*, t3.*, t4.*
27056  FROM t1 FULL JOIN t2 ON t2.x>0
27057  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27058  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27059  WHERE t1.b = t2.b
27060  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27061} {
27062   6 106 206 306 106  6 206  6   -  -
27063  12 112 212 312 112 12 212 12   -  -
27064  18 118 218 318 118 18 218 18   -  -
27065  24 124 224 324 124 24 224 24   -  -
27066  30 130 230 330 130 30 230 30 330 30
27067  36 136 236 336 136 36 236 36   -  -
27068  42 142 242 342 142 42 242 42   -  -
27069  48 148 248 348 148 48 248 48   -  -
27070  54 154 254 354 154 54 254 54   -  -
27071  60 160 260 360 160 60 260 60 360 60
27072  66 166 266 366 166 66 266 66   -  -
27073  72 172 272 372 172 72 272 72   -  -
27074  78 178 278 378 178 78 278 78   -  -
27075  84 184 284 384 184 84 284 84   -  -
27076  90 190 290 390 190 90 290 90 390 90
27077}
27078do_execsql_test joinD-932 {
27079  SELECT t1.*, t2.*, t3.*, t4.*
27080  FROM t1 FULL JOIN t2 ON t2.x>0
27081  INNER JOIN t3 ON t3.y>0
27082  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27083  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
27084  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27085} {
27086   6 106 206 306 106  6 206  6   -  -
27087  12 112 212 312 112 12 212 12   -  -
27088  18 118 218 318 118 18 218 18   -  -
27089  24 124 224 324 124 24 224 24   -  -
27090  30 130 230 330 130 30 230 30 330 30
27091  36 136 236 336 136 36 236 36   -  -
27092  42 142 242 342 142 42 242 42   -  -
27093  48 148 248 348 148 48 248 48   -  -
27094  54 154 254 354 154 54 254 54   -  -
27095  60 160 260 360 160 60 260 60 360 60
27096  66 166 266 366 166 66 266 66   -  -
27097  72 172 272 372 172 72 272 72   -  -
27098  78 178 278 378 178 78 278 78   -  -
27099  84 184 284 384 184 84 284 84   -  -
27100  90 190 290 390 190 90 290 90 390 90
27101}
27102do_execsql_test joinD-933 {
27103  SELECT t1.*, t2.*, t3.*, t4.*
27104  FROM t1 FULL JOIN t2 ON t2.x>0
27105  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27106  LEFT JOIN t4 ON t4.z>0
27107  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
27108  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27109} {
27110  30 130 230 330 130 30 230 30 330 30
27111  60 160 260 360 160 60 260 60 360 60
27112  90 190 290 390 190 90 290 90 390 90
27113}
27114do_execsql_test joinD-934 {
27115  SELECT t1.*, t2.*, t3.*, t4.*
27116  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27117  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
27118  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
27119  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27120} {
27121   3 103 203 303   -  - 203  3   -  -
27122   6 106 206 306 106  6 206  6   -  -
27123   9 109 209 309   -  - 209  9   -  -
27124  12 112 212 312 112 12 212 12   -  -
27125  15 115 215 315   -  - 215 15 315 15
27126  18 118 218 318 118 18 218 18   -  -
27127  21 121 221 321   -  - 221 21   -  -
27128  24 124 224 324 124 24 224 24   -  -
27129  27 127 227 327   -  - 227 27   -  -
27130  30 130 230 330 130 30 230 30 330 30
27131  33 133 233 333   -  - 233 33   -  -
27132  36 136 236 336 136 36 236 36   -  -
27133  39 139 239 339   -  - 239 39   -  -
27134  42 142 242 342 142 42 242 42   -  -
27135  45 145 245 345   -  - 245 45 345 45
27136  48 148 248 348 148 48 248 48   -  -
27137  51 151 251 351   -  - 251 51   -  -
27138  54 154 254 354 154 54 254 54   -  -
27139  57 157 257 357   -  - 257 57   -  -
27140  60 160 260 360 160 60 260 60 360 60
27141  63 163 263 363   -  - 263 63   -  -
27142  66 166 266 366 166 66 266 66   -  -
27143  69 169 269 369   -  - 269 69   -  -
27144  72 172 272 372 172 72 272 72   -  -
27145  75 175 275 375   -  - 275 75 375 75
27146  78 178 278 378 178 78 278 78   -  -
27147  81 181 281 381   -  - 281 81   -  -
27148  84 184 284 384 184 84 284 84   -  -
27149  87 187 287 387   -  - 287 87   -  -
27150  90 190 290 390 190 90 290 90 390 90
27151  93 193 293 393   -  - 293 93   -  -
27152}
27153do_execsql_test joinD-935 {
27154  SELECT t1.*, t2.*, t3.*, t4.*
27155  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27156  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27157  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27158  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27159} {
27160  15 115 215 315   -  - 215 15 315 15
27161  30 130 230 330 130 30 230 30 330 30
27162  45 145 245 345   -  - 245 45 345 45
27163  60 160 260 360 160 60 260 60 360 60
27164  75 175 275 375   -  - 275 75 375 75
27165  90 190 290 390 190 90 290 90 390 90
27166   -   -   -   -   -  -   -  - 300  0
27167   -   -   -   -   -  -   -  - 305  5
27168   -   -   -   -   -  -   -  - 310 10
27169   -   -   -   -   -  -   -  - 320 20
27170   -   -   -   -   -  -   -  - 325 25
27171   -   -   -   -   -  -   -  - 335 35
27172   -   -   -   -   -  -   -  - 340 40
27173   -   -   -   -   -  -   -  - 350 50
27174   -   -   -   -   -  -   -  - 355 55
27175   -   -   -   -   -  -   -  - 365 65
27176   -   -   -   -   -  -   -  - 370 70
27177   -   -   -   -   -  -   -  - 380 80
27178   -   -   -   -   -  -   -  - 385 85
27179   -   -   -   -   -  -   -  - 395 95
27180}
27181do_execsql_test joinD-936 {
27182  SELECT t1.*, t2.*, t3.*, t4.*
27183  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27184  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27185  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27186  WHERE t2.x>0
27187  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27188} {
27189  30 130 230 330 130 30 230 30 330 30
27190  60 160 260 360 160 60 260 60 360 60
27191  90 190 290 390 190 90 290 90 390 90
27192}
27193do_execsql_test joinD-937 {
27194  SELECT t1.*, t2.*, t3.*, t4.*
27195  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27196  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27197  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27198  WHERE (t2.x>0 OR t2.x IS NULL)
27199  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27200} {
27201  15 115 215 315   -  - 215 15 315 15
27202  30 130 230 330 130 30 230 30 330 30
27203  45 145 245 345   -  - 245 45 345 45
27204  60 160 260 360 160 60 260 60 360 60
27205  75 175 275 375   -  - 275 75 375 75
27206  90 190 290 390 190 90 290 90 390 90
27207   -   -   -   -   -  -   -  - 300  0
27208   -   -   -   -   -  -   -  - 305  5
27209   -   -   -   -   -  -   -  - 310 10
27210   -   -   -   -   -  -   -  - 320 20
27211   -   -   -   -   -  -   -  - 325 25
27212   -   -   -   -   -  -   -  - 335 35
27213   -   -   -   -   -  -   -  - 340 40
27214   -   -   -   -   -  -   -  - 350 50
27215   -   -   -   -   -  -   -  - 355 55
27216   -   -   -   -   -  -   -  - 365 65
27217   -   -   -   -   -  -   -  - 370 70
27218   -   -   -   -   -  -   -  - 380 80
27219   -   -   -   -   -  -   -  - 385 85
27220   -   -   -   -   -  -   -  - 395 95
27221}
27222do_execsql_test joinD-938 {
27223  SELECT t1.*, t2.*, t3.*, t4.*
27224  FROM t1 FULL JOIN t2 ON true
27225  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27226  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27227  WHERE t1.b=t2.b AND t2.x>0
27228  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27229} {
27230  30 130 230 330 130 30 230 30 330 30
27231  60 160 260 360 160 60 260 60 360 60
27232  90 190 290 390 190 90 290 90 390 90
27233}
27234do_execsql_test joinD-939 {
27235  SELECT t1.*, t2.*, t3.*, t4.*
27236  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27237  INNER JOIN t3 ON t1.c=t3.c
27238  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27239  WHERE t3.y>0
27240  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27241} {
27242  15 115 215 315   -  - 215 15 315 15
27243  30 130 230 330 130 30 230 30 330 30
27244  45 145 245 345   -  - 245 45 345 45
27245  60 160 260 360 160 60 260 60 360 60
27246  75 175 275 375   -  - 275 75 375 75
27247  90 190 290 390 190 90 290 90 390 90
27248}
27249do_execsql_test joinD-940 {
27250  SELECT t1.*, t2.*, t3.*, t4.*
27251  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27252  INNER JOIN t3 ON t1.c=t3.c
27253  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27254  WHERE t3.y>0 OR t3.y IS NULL
27255  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27256} {
27257  15 115 215 315   -  - 215 15 315 15
27258  30 130 230 330 130 30 230 30 330 30
27259  45 145 245 345   -  - 245 45 345 45
27260  60 160 260 360 160 60 260 60 360 60
27261  75 175 275 375   -  - 275 75 375 75
27262  90 190 290 390 190 90 290 90 390 90
27263   -   -   -   -   -  -   -  - 300  0
27264   -   -   -   -   -  -   -  - 305  5
27265   -   -   -   -   -  -   -  - 310 10
27266   -   -   -   -   -  -   -  - 320 20
27267   -   -   -   -   -  -   -  - 325 25
27268   -   -   -   -   -  -   -  - 335 35
27269   -   -   -   -   -  -   -  - 340 40
27270   -   -   -   -   -  -   -  - 350 50
27271   -   -   -   -   -  -   -  - 355 55
27272   -   -   -   -   -  -   -  - 365 65
27273   -   -   -   -   -  -   -  - 370 70
27274   -   -   -   -   -  -   -  - 380 80
27275   -   -   -   -   -  -   -  - 385 85
27276   -   -   -   -   -  -   -  - 395 95
27277}
27278do_execsql_test joinD-941 {
27279  SELECT t1.*, t2.*, t3.*, t4.*
27280  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27281  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27282  RIGHT JOIN t4 ON t1.d=t4.d
27283  WHERE t4.z>0
27284  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27285} {
27286  15 115 215 315   -  - 215 15 315 15
27287  30 130 230 330 130 30 230 30 330 30
27288  45 145 245 345   -  - 245 45 345 45
27289  60 160 260 360 160 60 260 60 360 60
27290  75 175 275 375   -  - 275 75 375 75
27291  90 190 290 390 190 90 290 90 390 90
27292   -   -   -   -   -  -   -  - 305  5
27293   -   -   -   -   -  -   -  - 310 10
27294   -   -   -   -   -  -   -  - 320 20
27295   -   -   -   -   -  -   -  - 325 25
27296   -   -   -   -   -  -   -  - 335 35
27297   -   -   -   -   -  -   -  - 340 40
27298   -   -   -   -   -  -   -  - 350 50
27299   -   -   -   -   -  -   -  - 355 55
27300   -   -   -   -   -  -   -  - 365 65
27301   -   -   -   -   -  -   -  - 370 70
27302   -   -   -   -   -  -   -  - 380 80
27303   -   -   -   -   -  -   -  - 385 85
27304   -   -   -   -   -  -   -  - 395 95
27305}
27306do_execsql_test joinD-942 {
27307  SELECT t1.*, t2.*, t3.*, t4.*
27308  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27309  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27310  RIGHT JOIN t4 ON t1.d=t4.d
27311  WHERE t4.z IS NULL OR t4.z>0
27312  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27313} {
27314  15 115 215 315   -  - 215 15 315 15
27315  30 130 230 330 130 30 230 30 330 30
27316  45 145 245 345   -  - 245 45 345 45
27317  60 160 260 360 160 60 260 60 360 60
27318  75 175 275 375   -  - 275 75 375 75
27319  90 190 290 390 190 90 290 90 390 90
27320   -   -   -   -   -  -   -  - 305  5
27321   -   -   -   -   -  -   -  - 310 10
27322   -   -   -   -   -  -   -  - 320 20
27323   -   -   -   -   -  -   -  - 325 25
27324   -   -   -   -   -  -   -  - 335 35
27325   -   -   -   -   -  -   -  - 340 40
27326   -   -   -   -   -  -   -  - 350 50
27327   -   -   -   -   -  -   -  - 355 55
27328   -   -   -   -   -  -   -  - 365 65
27329   -   -   -   -   -  -   -  - 370 70
27330   -   -   -   -   -  -   -  - 380 80
27331   -   -   -   -   -  -   -  - 385 85
27332   -   -   -   -   -  -   -  - 395 95
27333}
27334do_execsql_test joinD-943 {
27335  SELECT t1.*, t2.*, t3.*, t4.*
27336  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27337  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27338  RIGHT JOIN t4 ON t1.d=t4.d
27339  WHERE t2.x>0 AND t4.z>0
27340  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27341} {
27342  30 130 230 330 130 30 230 30 330 30
27343  60 160 260 360 160 60 260 60 360 60
27344  90 190 290 390 190 90 290 90 390 90
27345}
27346do_execsql_test joinD-944 {
27347  SELECT t1.*, t2.*, t3.*, t4.*
27348  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27349  INNER JOIN t3 ON t1.c=t3.c
27350  RIGHT JOIN t4 ON t1.d=t4.d
27351  WHERE t4.z>0 AND t3.y>0
27352  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27353} {
27354  15 115 215 315   -  - 215 15 315 15
27355  30 130 230 330 130 30 230 30 330 30
27356  45 145 245 345   -  - 245 45 345 45
27357  60 160 260 360 160 60 260 60 360 60
27358  75 175 275 375   -  - 275 75 375 75
27359  90 190 290 390 190 90 290 90 390 90
27360}
27361do_execsql_test joinD-945 {
27362  SELECT t1.*, t2.*, t3.*, t4.*
27363  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27364  INNER JOIN t3 ON t1.c=t3.c
27365  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27366  WHERE t2.x>0 AND t3.y>0
27367  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27368} {
27369  30 130 230 330 130 30 230 30 330 30
27370  60 160 260 360 160 60 260 60 360 60
27371  90 190 290 390 190 90 290 90 390 90
27372}
27373do_execsql_test joinD-946 {
27374  SELECT t1.*, t2.*, t3.*, t4.*
27375  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27376  INNER JOIN t3 ON t1.c=t3.c
27377  RIGHT JOIN t4 ON t1.d=t4.d
27378  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
27379  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27380} {
27381  30 130 230 330 130 30 230 30 330 30
27382  60 160 260 360 160 60 260 60 360 60
27383  90 190 290 390 190 90 290 90 390 90
27384}
27385do_execsql_test joinD-947 {
27386  SELECT t1.*, t2.*, t3.*, t4.*
27387  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
27388  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27389  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27391} {
27392  15 115 215 315   -  - 215 15 315 15
27393  30 130 230 330 130 30 230 30 330 30
27394  45 145 245 345   -  - 245 45 345 45
27395  60 160 260 360 160 60 260 60 360 60
27396  75 175 275 375   -  - 275 75 375 75
27397  90 190 290 390 190 90 290 90 390 90
27398   -   -   -   -   -  -   -  - 300  0
27399   -   -   -   -   -  -   -  - 305  5
27400   -   -   -   -   -  -   -  - 310 10
27401   -   -   -   -   -  -   -  - 320 20
27402   -   -   -   -   -  -   -  - 325 25
27403   -   -   -   -   -  -   -  - 335 35
27404   -   -   -   -   -  -   -  - 340 40
27405   -   -   -   -   -  -   -  - 350 50
27406   -   -   -   -   -  -   -  - 355 55
27407   -   -   -   -   -  -   -  - 365 65
27408   -   -   -   -   -  -   -  - 370 70
27409   -   -   -   -   -  -   -  - 380 80
27410   -   -   -   -   -  -   -  - 385 85
27411   -   -   -   -   -  -   -  - 395 95
27412}
27413do_execsql_test joinD-948 {
27414  SELECT t1.*, t2.*, t3.*, t4.*
27415  FROM t1 FULL JOIN t2 ON t2.x>0
27416  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27417  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27418  WHERE t1.b = t2.b
27419  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27420} {
27421  30 130 230 330 130 30 230 30 330 30
27422  60 160 260 360 160 60 260 60 360 60
27423  90 190 290 390 190 90 290 90 390 90
27424}
27425do_execsql_test joinD-949 {
27426  SELECT t1.*, t2.*, t3.*, t4.*
27427  FROM t1 FULL JOIN t2 ON t2.x>0
27428  INNER JOIN t3 ON t3.y>0
27429  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
27430  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
27431  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27432} {
27433  30 130 230 330 130 30 230 30 330 30
27434  60 160 260 360 160 60 260 60 360 60
27435  90 190 290 390 190 90 290 90 390 90
27436}
27437do_execsql_test joinD-950 {
27438  SELECT t1.*, t2.*, t3.*, t4.*
27439  FROM t1 FULL JOIN t2 ON t2.x>0
27440  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27441  RIGHT JOIN t4 ON t4.z>0
27442  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
27443  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27444} {
27445  30 130 230 330 130 30 230 30 330 30
27446  60 160 260 360 160 60 260 60 360 60
27447  90 190 290 390 190 90 290 90 390 90
27448}
27449do_execsql_test joinD-951 {
27450  SELECT t1.*, t2.*, t3.*, t4.*
27451  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27452  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
27453  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
27454  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27455} {
27456  15 115 215 315   -  - 215 15 315 15
27457  30 130 230 330 130 30 230 30 330 30
27458  45 145 245 345   -  - 245 45 345 45
27459  60 160 260 360 160 60 260 60 360 60
27460  75 175 275 375   -  - 275 75 375 75
27461  90 190 290 390 190 90 290 90 390 90
27462   -   -   -   -   -  -   -  - 300  0
27463   -   -   -   -   -  -   -  - 305  5
27464   -   -   -   -   -  -   -  - 310 10
27465   -   -   -   -   -  -   -  - 320 20
27466   -   -   -   -   -  -   -  - 325 25
27467   -   -   -   -   -  -   -  - 335 35
27468   -   -   -   -   -  -   -  - 340 40
27469   -   -   -   -   -  -   -  - 350 50
27470   -   -   -   -   -  -   -  - 355 55
27471   -   -   -   -   -  -   -  - 365 65
27472   -   -   -   -   -  -   -  - 370 70
27473   -   -   -   -   -  -   -  - 380 80
27474   -   -   -   -   -  -   -  - 385 85
27475   -   -   -   -   -  -   -  - 395 95
27476}
27477do_execsql_test joinD-952 {
27478  SELECT t1.*, t2.*, t3.*, t4.*
27479  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27480  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27481  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27482  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27483} {
27484   3 103 203 303   -  - 203  3   -  -
27485   6 106 206 306 106  6 206  6   -  -
27486   9 109 209 309   -  - 209  9   -  -
27487  12 112 212 312 112 12 212 12   -  -
27488  15 115 215 315   -  - 215 15 315 15
27489  18 118 218 318 118 18 218 18   -  -
27490  21 121 221 321   -  - 221 21   -  -
27491  24 124 224 324 124 24 224 24   -  -
27492  27 127 227 327   -  - 227 27   -  -
27493  30 130 230 330 130 30 230 30 330 30
27494  33 133 233 333   -  - 233 33   -  -
27495  36 136 236 336 136 36 236 36   -  -
27496  39 139 239 339   -  - 239 39   -  -
27497  42 142 242 342 142 42 242 42   -  -
27498  45 145 245 345   -  - 245 45 345 45
27499  48 148 248 348 148 48 248 48   -  -
27500  51 151 251 351   -  - 251 51   -  -
27501  54 154 254 354 154 54 254 54   -  -
27502  57 157 257 357   -  - 257 57   -  -
27503  60 160 260 360 160 60 260 60 360 60
27504  63 163 263 363   -  - 263 63   -  -
27505  66 166 266 366 166 66 266 66   -  -
27506  69 169 269 369   -  - 269 69   -  -
27507  72 172 272 372 172 72 272 72   -  -
27508  75 175 275 375   -  - 275 75 375 75
27509  78 178 278 378 178 78 278 78   -  -
27510  81 181 281 381   -  - 281 81   -  -
27511  84 184 284 384 184 84 284 84   -  -
27512  87 187 287 387   -  - 287 87   -  -
27513  90 190 290 390 190 90 290 90 390 90
27514  93 193 293 393   -  - 293 93   -  -
27515   -   -   -   -   -  -   -  - 300  0
27516   -   -   -   -   -  -   -  - 305  5
27517   -   -   -   -   -  -   -  - 310 10
27518   -   -   -   -   -  -   -  - 320 20
27519   -   -   -   -   -  -   -  - 325 25
27520   -   -   -   -   -  -   -  - 335 35
27521   -   -   -   -   -  -   -  - 340 40
27522   -   -   -   -   -  -   -  - 350 50
27523   -   -   -   -   -  -   -  - 355 55
27524   -   -   -   -   -  -   -  - 365 65
27525   -   -   -   -   -  -   -  - 370 70
27526   -   -   -   -   -  -   -  - 380 80
27527   -   -   -   -   -  -   -  - 385 85
27528   -   -   -   -   -  -   -  - 395 95
27529}
27530do_execsql_test joinD-953 {
27531  SELECT t1.*, t2.*, t3.*, t4.*
27532  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27533  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27534  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27535  WHERE t2.x>0
27536  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27537} {
27538   6 106 206 306 106  6 206  6   -  -
27539  12 112 212 312 112 12 212 12   -  -
27540  18 118 218 318 118 18 218 18   -  -
27541  24 124 224 324 124 24 224 24   -  -
27542  30 130 230 330 130 30 230 30 330 30
27543  36 136 236 336 136 36 236 36   -  -
27544  42 142 242 342 142 42 242 42   -  -
27545  48 148 248 348 148 48 248 48   -  -
27546  54 154 254 354 154 54 254 54   -  -
27547  60 160 260 360 160 60 260 60 360 60
27548  66 166 266 366 166 66 266 66   -  -
27549  72 172 272 372 172 72 272 72   -  -
27550  78 178 278 378 178 78 278 78   -  -
27551  84 184 284 384 184 84 284 84   -  -
27552  90 190 290 390 190 90 290 90 390 90
27553}
27554do_execsql_test joinD-954 {
27555  SELECT t1.*, t2.*, t3.*, t4.*
27556  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27557  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27558  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27559  WHERE (t2.x>0 OR t2.x IS NULL)
27560  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27561} {
27562   3 103 203 303   -  - 203  3   -  -
27563   6 106 206 306 106  6 206  6   -  -
27564   9 109 209 309   -  - 209  9   -  -
27565  12 112 212 312 112 12 212 12   -  -
27566  15 115 215 315   -  - 215 15 315 15
27567  18 118 218 318 118 18 218 18   -  -
27568  21 121 221 321   -  - 221 21   -  -
27569  24 124 224 324 124 24 224 24   -  -
27570  27 127 227 327   -  - 227 27   -  -
27571  30 130 230 330 130 30 230 30 330 30
27572  33 133 233 333   -  - 233 33   -  -
27573  36 136 236 336 136 36 236 36   -  -
27574  39 139 239 339   -  - 239 39   -  -
27575  42 142 242 342 142 42 242 42   -  -
27576  45 145 245 345   -  - 245 45 345 45
27577  48 148 248 348 148 48 248 48   -  -
27578  51 151 251 351   -  - 251 51   -  -
27579  54 154 254 354 154 54 254 54   -  -
27580  57 157 257 357   -  - 257 57   -  -
27581  60 160 260 360 160 60 260 60 360 60
27582  63 163 263 363   -  - 263 63   -  -
27583  66 166 266 366 166 66 266 66   -  -
27584  69 169 269 369   -  - 269 69   -  -
27585  72 172 272 372 172 72 272 72   -  -
27586  75 175 275 375   -  - 275 75 375 75
27587  78 178 278 378 178 78 278 78   -  -
27588  81 181 281 381   -  - 281 81   -  -
27589  84 184 284 384 184 84 284 84   -  -
27590  87 187 287 387   -  - 287 87   -  -
27591  90 190 290 390 190 90 290 90 390 90
27592  93 193 293 393   -  - 293 93   -  -
27593   -   -   -   -   -  -   -  - 300  0
27594   -   -   -   -   -  -   -  - 305  5
27595   -   -   -   -   -  -   -  - 310 10
27596   -   -   -   -   -  -   -  - 320 20
27597   -   -   -   -   -  -   -  - 325 25
27598   -   -   -   -   -  -   -  - 335 35
27599   -   -   -   -   -  -   -  - 340 40
27600   -   -   -   -   -  -   -  - 350 50
27601   -   -   -   -   -  -   -  - 355 55
27602   -   -   -   -   -  -   -  - 365 65
27603   -   -   -   -   -  -   -  - 370 70
27604   -   -   -   -   -  -   -  - 380 80
27605   -   -   -   -   -  -   -  - 385 85
27606   -   -   -   -   -  -   -  - 395 95
27607}
27608do_execsql_test joinD-955 {
27609  SELECT t1.*, t2.*, t3.*, t4.*
27610  FROM t1 FULL JOIN t2 ON true
27611  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27612  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27613  WHERE t1.b=t2.b AND t2.x>0
27614  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27615} {
27616   6 106 206 306 106  6 206  6   -  -
27617  12 112 212 312 112 12 212 12   -  -
27618  18 118 218 318 118 18 218 18   -  -
27619  24 124 224 324 124 24 224 24   -  -
27620  30 130 230 330 130 30 230 30 330 30
27621  36 136 236 336 136 36 236 36   -  -
27622  42 142 242 342 142 42 242 42   -  -
27623  48 148 248 348 148 48 248 48   -  -
27624  54 154 254 354 154 54 254 54   -  -
27625  60 160 260 360 160 60 260 60 360 60
27626  66 166 266 366 166 66 266 66   -  -
27627  72 172 272 372 172 72 272 72   -  -
27628  78 178 278 378 178 78 278 78   -  -
27629  84 184 284 384 184 84 284 84   -  -
27630  90 190 290 390 190 90 290 90 390 90
27631}
27632do_execsql_test joinD-956 {
27633  SELECT t1.*, t2.*, t3.*, t4.*
27634  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27635  INNER JOIN t3 ON t1.c=t3.c
27636  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27637  WHERE t3.y>0
27638  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27639} {
27640   3 103 203 303   -  - 203  3   -  -
27641   6 106 206 306 106  6 206  6   -  -
27642   9 109 209 309   -  - 209  9   -  -
27643  12 112 212 312 112 12 212 12   -  -
27644  15 115 215 315   -  - 215 15 315 15
27645  18 118 218 318 118 18 218 18   -  -
27646  21 121 221 321   -  - 221 21   -  -
27647  24 124 224 324 124 24 224 24   -  -
27648  27 127 227 327   -  - 227 27   -  -
27649  30 130 230 330 130 30 230 30 330 30
27650  33 133 233 333   -  - 233 33   -  -
27651  36 136 236 336 136 36 236 36   -  -
27652  39 139 239 339   -  - 239 39   -  -
27653  42 142 242 342 142 42 242 42   -  -
27654  45 145 245 345   -  - 245 45 345 45
27655  48 148 248 348 148 48 248 48   -  -
27656  51 151 251 351   -  - 251 51   -  -
27657  54 154 254 354 154 54 254 54   -  -
27658  57 157 257 357   -  - 257 57   -  -
27659  60 160 260 360 160 60 260 60 360 60
27660  63 163 263 363   -  - 263 63   -  -
27661  66 166 266 366 166 66 266 66   -  -
27662  69 169 269 369   -  - 269 69   -  -
27663  72 172 272 372 172 72 272 72   -  -
27664  75 175 275 375   -  - 275 75 375 75
27665  78 178 278 378 178 78 278 78   -  -
27666  81 181 281 381   -  - 281 81   -  -
27667  84 184 284 384 184 84 284 84   -  -
27668  87 187 287 387   -  - 287 87   -  -
27669  90 190 290 390 190 90 290 90 390 90
27670  93 193 293 393   -  - 293 93   -  -
27671}
27672do_execsql_test joinD-957 {
27673  SELECT t1.*, t2.*, t3.*, t4.*
27674  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27675  INNER JOIN t3 ON t1.c=t3.c
27676  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27677  WHERE t3.y>0 OR t3.y IS NULL
27678  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27679} {
27680   3 103 203 303   -  - 203  3   -  -
27681   6 106 206 306 106  6 206  6   -  -
27682   9 109 209 309   -  - 209  9   -  -
27683  12 112 212 312 112 12 212 12   -  -
27684  15 115 215 315   -  - 215 15 315 15
27685  18 118 218 318 118 18 218 18   -  -
27686  21 121 221 321   -  - 221 21   -  -
27687  24 124 224 324 124 24 224 24   -  -
27688  27 127 227 327   -  - 227 27   -  -
27689  30 130 230 330 130 30 230 30 330 30
27690  33 133 233 333   -  - 233 33   -  -
27691  36 136 236 336 136 36 236 36   -  -
27692  39 139 239 339   -  - 239 39   -  -
27693  42 142 242 342 142 42 242 42   -  -
27694  45 145 245 345   -  - 245 45 345 45
27695  48 148 248 348 148 48 248 48   -  -
27696  51 151 251 351   -  - 251 51   -  -
27697  54 154 254 354 154 54 254 54   -  -
27698  57 157 257 357   -  - 257 57   -  -
27699  60 160 260 360 160 60 260 60 360 60
27700  63 163 263 363   -  - 263 63   -  -
27701  66 166 266 366 166 66 266 66   -  -
27702  69 169 269 369   -  - 269 69   -  -
27703  72 172 272 372 172 72 272 72   -  -
27704  75 175 275 375   -  - 275 75 375 75
27705  78 178 278 378 178 78 278 78   -  -
27706  81 181 281 381   -  - 281 81   -  -
27707  84 184 284 384 184 84 284 84   -  -
27708  87 187 287 387   -  - 287 87   -  -
27709  90 190 290 390 190 90 290 90 390 90
27710  93 193 293 393   -  - 293 93   -  -
27711   -   -   -   -   -  -   -  - 300  0
27712   -   -   -   -   -  -   -  - 305  5
27713   -   -   -   -   -  -   -  - 310 10
27714   -   -   -   -   -  -   -  - 320 20
27715   -   -   -   -   -  -   -  - 325 25
27716   -   -   -   -   -  -   -  - 335 35
27717   -   -   -   -   -  -   -  - 340 40
27718   -   -   -   -   -  -   -  - 350 50
27719   -   -   -   -   -  -   -  - 355 55
27720   -   -   -   -   -  -   -  - 365 65
27721   -   -   -   -   -  -   -  - 370 70
27722   -   -   -   -   -  -   -  - 380 80
27723   -   -   -   -   -  -   -  - 385 85
27724   -   -   -   -   -  -   -  - 395 95
27725}
27726do_execsql_test joinD-958 {
27727  SELECT t1.*, t2.*, t3.*, t4.*
27728  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27729  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27730  FULL JOIN t4 ON t1.d=t4.d
27731  WHERE t4.z>0
27732  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27733} {
27734  15 115 215 315   -  - 215 15 315 15
27735  30 130 230 330 130 30 230 30 330 30
27736  45 145 245 345   -  - 245 45 345 45
27737  60 160 260 360 160 60 260 60 360 60
27738  75 175 275 375   -  - 275 75 375 75
27739  90 190 290 390 190 90 290 90 390 90
27740   -   -   -   -   -  -   -  - 305  5
27741   -   -   -   -   -  -   -  - 310 10
27742   -   -   -   -   -  -   -  - 320 20
27743   -   -   -   -   -  -   -  - 325 25
27744   -   -   -   -   -  -   -  - 335 35
27745   -   -   -   -   -  -   -  - 340 40
27746   -   -   -   -   -  -   -  - 350 50
27747   -   -   -   -   -  -   -  - 355 55
27748   -   -   -   -   -  -   -  - 365 65
27749   -   -   -   -   -  -   -  - 370 70
27750   -   -   -   -   -  -   -  - 380 80
27751   -   -   -   -   -  -   -  - 385 85
27752   -   -   -   -   -  -   -  - 395 95
27753}
27754do_execsql_test joinD-959 {
27755  SELECT t1.*, t2.*, t3.*, t4.*
27756  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27757  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27758  FULL JOIN t4 ON t1.d=t4.d
27759  WHERE t4.z IS NULL OR t4.z>0
27760  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27761} {
27762   3 103 203 303   -  - 203  3   -  -
27763   6 106 206 306 106  6 206  6   -  -
27764   9 109 209 309   -  - 209  9   -  -
27765  12 112 212 312 112 12 212 12   -  -
27766  15 115 215 315   -  - 215 15 315 15
27767  18 118 218 318 118 18 218 18   -  -
27768  21 121 221 321   -  - 221 21   -  -
27769  24 124 224 324 124 24 224 24   -  -
27770  27 127 227 327   -  - 227 27   -  -
27771  30 130 230 330 130 30 230 30 330 30
27772  33 133 233 333   -  - 233 33   -  -
27773  36 136 236 336 136 36 236 36   -  -
27774  39 139 239 339   -  - 239 39   -  -
27775  42 142 242 342 142 42 242 42   -  -
27776  45 145 245 345   -  - 245 45 345 45
27777  48 148 248 348 148 48 248 48   -  -
27778  51 151 251 351   -  - 251 51   -  -
27779  54 154 254 354 154 54 254 54   -  -
27780  57 157 257 357   -  - 257 57   -  -
27781  60 160 260 360 160 60 260 60 360 60
27782  63 163 263 363   -  - 263 63   -  -
27783  66 166 266 366 166 66 266 66   -  -
27784  69 169 269 369   -  - 269 69   -  -
27785  72 172 272 372 172 72 272 72   -  -
27786  75 175 275 375   -  - 275 75 375 75
27787  78 178 278 378 178 78 278 78   -  -
27788  81 181 281 381   -  - 281 81   -  -
27789  84 184 284 384 184 84 284 84   -  -
27790  87 187 287 387   -  - 287 87   -  -
27791  90 190 290 390 190 90 290 90 390 90
27792  93 193 293 393   -  - 293 93   -  -
27793   -   -   -   -   -  -   -  - 305  5
27794   -   -   -   -   -  -   -  - 310 10
27795   -   -   -   -   -  -   -  - 320 20
27796   -   -   -   -   -  -   -  - 325 25
27797   -   -   -   -   -  -   -  - 335 35
27798   -   -   -   -   -  -   -  - 340 40
27799   -   -   -   -   -  -   -  - 350 50
27800   -   -   -   -   -  -   -  - 355 55
27801   -   -   -   -   -  -   -  - 365 65
27802   -   -   -   -   -  -   -  - 370 70
27803   -   -   -   -   -  -   -  - 380 80
27804   -   -   -   -   -  -   -  - 385 85
27805   -   -   -   -   -  -   -  - 395 95
27806}
27807do_execsql_test joinD-960 {
27808  SELECT t1.*, t2.*, t3.*, t4.*
27809  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27810  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
27811  FULL JOIN t4 ON t1.d=t4.d
27812  WHERE t2.x>0 AND t4.z>0
27813  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27814} {
27815  30 130 230 330 130 30 230 30 330 30
27816  60 160 260 360 160 60 260 60 360 60
27817  90 190 290 390 190 90 290 90 390 90
27818}
27819do_execsql_test joinD-961 {
27820  SELECT t1.*, t2.*, t3.*, t4.*
27821  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27822  INNER JOIN t3 ON t1.c=t3.c
27823  FULL JOIN t4 ON t1.d=t4.d
27824  WHERE t4.z>0 AND t3.y>0
27825  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27826} {
27827  15 115 215 315   -  - 215 15 315 15
27828  30 130 230 330 130 30 230 30 330 30
27829  45 145 245 345   -  - 245 45 345 45
27830  60 160 260 360 160 60 260 60 360 60
27831  75 175 275 375   -  - 275 75 375 75
27832  90 190 290 390 190 90 290 90 390 90
27833}
27834do_execsql_test joinD-962 {
27835  SELECT t1.*, t2.*, t3.*, t4.*
27836  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27837  INNER JOIN t3 ON t1.c=t3.c
27838  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27839  WHERE t2.x>0 AND t3.y>0
27840  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27841} {
27842   6 106 206 306 106  6 206  6   -  -
27843  12 112 212 312 112 12 212 12   -  -
27844  18 118 218 318 118 18 218 18   -  -
27845  24 124 224 324 124 24 224 24   -  -
27846  30 130 230 330 130 30 230 30 330 30
27847  36 136 236 336 136 36 236 36   -  -
27848  42 142 242 342 142 42 242 42   -  -
27849  48 148 248 348 148 48 248 48   -  -
27850  54 154 254 354 154 54 254 54   -  -
27851  60 160 260 360 160 60 260 60 360 60
27852  66 166 266 366 166 66 266 66   -  -
27853  72 172 272 372 172 72 272 72   -  -
27854  78 178 278 378 178 78 278 78   -  -
27855  84 184 284 384 184 84 284 84   -  -
27856  90 190 290 390 190 90 290 90 390 90
27857}
27858do_execsql_test joinD-963 {
27859  SELECT t1.*, t2.*, t3.*, t4.*
27860  FROM t1 FULL JOIN t2 ON t1.b=t2.b
27861  INNER JOIN t3 ON t1.c=t3.c
27862  FULL JOIN t4 ON t1.d=t4.d
27863  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
27864  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27865} {
27866  30 130 230 330 130 30 230 30 330 30
27867  60 160 260 360 160 60 260 60 360 60
27868  90 190 290 390 190 90 290 90 390 90
27869}
27870do_execsql_test joinD-964 {
27871  SELECT t1.*, t2.*, t3.*, t4.*
27872  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
27873  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27874  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
27875  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27876} {
27877   3 103 203 303   -  - 203  3   -  -
27878   6 106 206 306 106  6 206  6   -  -
27879   9 109 209 309   -  - 209  9   -  -
27880  12 112 212 312 112 12 212 12   -  -
27881  15 115 215 315   -  - 215 15 315 15
27882  18 118 218 318 118 18 218 18   -  -
27883  21 121 221 321   -  - 221 21   -  -
27884  24 124 224 324 124 24 224 24   -  -
27885  27 127 227 327   -  - 227 27   -  -
27886  30 130 230 330 130 30 230 30 330 30
27887  33 133 233 333   -  - 233 33   -  -
27888  36 136 236 336 136 36 236 36   -  -
27889  39 139 239 339   -  - 239 39   -  -
27890  42 142 242 342 142 42 242 42   -  -
27891  45 145 245 345   -  - 245 45 345 45
27892  48 148 248 348 148 48 248 48   -  -
27893  51 151 251 351   -  - 251 51   -  -
27894  54 154 254 354 154 54 254 54   -  -
27895  57 157 257 357   -  - 257 57   -  -
27896  60 160 260 360 160 60 260 60 360 60
27897  63 163 263 363   -  - 263 63   -  -
27898  66 166 266 366 166 66 266 66   -  -
27899  69 169 269 369   -  - 269 69   -  -
27900  72 172 272 372 172 72 272 72   -  -
27901  75 175 275 375   -  - 275 75 375 75
27902  78 178 278 378 178 78 278 78   -  -
27903  81 181 281 381   -  - 281 81   -  -
27904  84 184 284 384 184 84 284 84   -  -
27905  87 187 287 387   -  - 287 87   -  -
27906  90 190 290 390 190 90 290 90 390 90
27907  93 193 293 393   -  - 293 93   -  -
27908   -   -   -   -   -  -   -  - 300  0
27909   -   -   -   -   -  -   -  - 305  5
27910   -   -   -   -   -  -   -  - 310 10
27911   -   -   -   -   -  -   -  - 320 20
27912   -   -   -   -   -  -   -  - 325 25
27913   -   -   -   -   -  -   -  - 335 35
27914   -   -   -   -   -  -   -  - 340 40
27915   -   -   -   -   -  -   -  - 350 50
27916   -   -   -   -   -  -   -  - 355 55
27917   -   -   -   -   -  -   -  - 365 65
27918   -   -   -   -   -  -   -  - 370 70
27919   -   -   -   -   -  -   -  - 380 80
27920   -   -   -   -   -  -   -  - 385 85
27921   -   -   -   -   -  -   -  - 395 95
27922}
27923do_execsql_test joinD-965 {
27924  SELECT t1.*, t2.*, t3.*, t4.*
27925  FROM t1 FULL JOIN t2 ON t2.x>0
27926  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27927  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
27928  WHERE t1.b = t2.b
27929  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27930} {
27931   6 106 206 306 106  6 206  6   -  -
27932  12 112 212 312 112 12 212 12   -  -
27933  18 118 218 318 118 18 218 18   -  -
27934  24 124 224 324 124 24 224 24   -  -
27935  30 130 230 330 130 30 230 30 330 30
27936  36 136 236 336 136 36 236 36   -  -
27937  42 142 242 342 142 42 242 42   -  -
27938  48 148 248 348 148 48 248 48   -  -
27939  54 154 254 354 154 54 254 54   -  -
27940  60 160 260 360 160 60 260 60 360 60
27941  66 166 266 366 166 66 266 66   -  -
27942  72 172 272 372 172 72 272 72   -  -
27943  78 178 278 378 178 78 278 78   -  -
27944  84 184 284 384 184 84 284 84   -  -
27945  90 190 290 390 190 90 290 90 390 90
27946}
27947do_execsql_test joinD-966 {
27948  SELECT t1.*, t2.*, t3.*, t4.*
27949  FROM t1 FULL JOIN t2 ON t2.x>0
27950  INNER JOIN t3 ON t3.y>0
27951  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
27952  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
27953  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27954} {
27955   6 106 206 306 106  6 206  6   -  -
27956  12 112 212 312 112 12 212 12   -  -
27957  18 118 218 318 118 18 218 18   -  -
27958  24 124 224 324 124 24 224 24   -  -
27959  30 130 230 330 130 30 230 30 330 30
27960  36 136 236 336 136 36 236 36   -  -
27961  42 142 242 342 142 42 242 42   -  -
27962  48 148 248 348 148 48 248 48   -  -
27963  54 154 254 354 154 54 254 54   -  -
27964  60 160 260 360 160 60 260 60 360 60
27965  66 166 266 366 166 66 266 66   -  -
27966  72 172 272 372 172 72 272 72   -  -
27967  78 178 278 378 178 78 278 78   -  -
27968  84 184 284 384 184 84 284 84   -  -
27969  90 190 290 390 190 90 290 90 390 90
27970}
27971do_execsql_test joinD-967 {
27972  SELECT t1.*, t2.*, t3.*, t4.*
27973  FROM t1 FULL JOIN t2 ON t2.x>0
27974  INNER JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
27975  FULL JOIN t4 ON t4.z>0
27976  WHERE t1.b = t2.b AND t1.d = t4.d
27977  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27978} {
27979  30 130 230 330 130 30 230 30 330 30
27980  60 160 260 360 160 60 260 60 360 60
27981  90 190 290 390 190 90 290 90 390 90
27982}
27983do_execsql_test joinD-968 {
27984  SELECT t1.*, t2.*, t3.*, t4.*
27985  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
27986  INNER JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
27987  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
27988  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
27989} {
27990   3 103 203 303   -  - 203  3   -  -
27991   6 106 206 306 106  6 206  6   -  -
27992   9 109 209 309   -  - 209  9   -  -
27993  12 112 212 312 112 12 212 12   -  -
27994  15 115 215 315   -  - 215 15 315 15
27995  18 118 218 318 118 18 218 18   -  -
27996  21 121 221 321   -  - 221 21   -  -
27997  24 124 224 324 124 24 224 24   -  -
27998  27 127 227 327   -  - 227 27   -  -
27999  30 130 230 330 130 30 230 30 330 30
28000  33 133 233 333   -  - 233 33   -  -
28001  36 136 236 336 136 36 236 36   -  -
28002  39 139 239 339   -  - 239 39   -  -
28003  42 142 242 342 142 42 242 42   -  -
28004  45 145 245 345   -  - 245 45 345 45
28005  48 148 248 348 148 48 248 48   -  -
28006  51 151 251 351   -  - 251 51   -  -
28007  54 154 254 354 154 54 254 54   -  -
28008  57 157 257 357   -  - 257 57   -  -
28009  60 160 260 360 160 60 260 60 360 60
28010  63 163 263 363   -  - 263 63   -  -
28011  66 166 266 366 166 66 266 66   -  -
28012  69 169 269 369   -  - 269 69   -  -
28013  72 172 272 372 172 72 272 72   -  -
28014  75 175 275 375   -  - 275 75 375 75
28015  78 178 278 378 178 78 278 78   -  -
28016  81 181 281 381   -  - 281 81   -  -
28017  84 184 284 384 184 84 284 84   -  -
28018  87 187 287 387   -  - 287 87   -  -
28019  90 190 290 390 190 90 290 90 390 90
28020  93 193 293 393   -  - 293 93   -  -
28021   -   -   -   -   -  -   -  - 300  0
28022   -   -   -   -   -  -   -  - 305  5
28023   -   -   -   -   -  -   -  - 310 10
28024   -   -   -   -   -  -   -  - 320 20
28025   -   -   -   -   -  -   -  - 325 25
28026   -   -   -   -   -  -   -  - 335 35
28027   -   -   -   -   -  -   -  - 340 40
28028   -   -   -   -   -  -   -  - 350 50
28029   -   -   -   -   -  -   -  - 355 55
28030   -   -   -   -   -  -   -  - 365 65
28031   -   -   -   -   -  -   -  - 370 70
28032   -   -   -   -   -  -   -  - 380 80
28033   -   -   -   -   -  -   -  - 385 85
28034   -   -   -   -   -  -   -  - 395 95
28035}
28036do_execsql_test joinD-969 {
28037  SELECT t1.*, t2.*, t3.*, t4.*
28038  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28039  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28040  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28041  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28042} {
28043   5 105 205 305   -  -   -  - 305  5
28044  10 110 210 310 110 10   -  - 310 10
28045  15 115 215 315   -  - 215 15 315 15
28046  20 120 220 320 120 20   -  - 320 20
28047  25 125 225 325   -  -   -  - 325 25
28048  30 130 230 330 130 30 230 30 330 30
28049  35 135 235 335   -  -   -  - 335 35
28050  40 140 240 340 140 40   -  - 340 40
28051  45 145 245 345   -  - 245 45 345 45
28052  50 150 250 350 150 50   -  - 350 50
28053  55 155 255 355   -  -   -  - 355 55
28054  60 160 260 360 160 60 260 60 360 60
28055  65 165 265 365   -  -   -  - 365 65
28056  70 170 270 370 170 70   -  - 370 70
28057  75 175 275 375   -  - 275 75 375 75
28058  80 180 280 380 180 80   -  - 380 80
28059  85 185 285 385   -  -   -  - 385 85
28060  90 190 290 390 190 90 290 90 390 90
28061  95 195 295 395   -  -   -  - 395 95
28062}
28063do_execsql_test joinD-970 {
28064  SELECT t1.*, t2.*, t3.*, t4.*
28065  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28066  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28067  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28068  WHERE t2.x>0
28069  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28070} {
28071  10 110 210 310 110 10   -  - 310 10
28072  20 120 220 320 120 20   -  - 320 20
28073  30 130 230 330 130 30 230 30 330 30
28074  40 140 240 340 140 40   -  - 340 40
28075  50 150 250 350 150 50   -  - 350 50
28076  60 160 260 360 160 60 260 60 360 60
28077  70 170 270 370 170 70   -  - 370 70
28078  80 180 280 380 180 80   -  - 380 80
28079  90 190 290 390 190 90 290 90 390 90
28080}
28081do_execsql_test joinD-971 {
28082  SELECT t1.*, t2.*, t3.*, t4.*
28083  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28084  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28085  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28086  WHERE (t2.x>0 OR t2.x IS NULL)
28087  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28088} {
28089   5 105 205 305   -  -   -  - 305  5
28090  10 110 210 310 110 10   -  - 310 10
28091  15 115 215 315   -  - 215 15 315 15
28092  20 120 220 320 120 20   -  - 320 20
28093  25 125 225 325   -  -   -  - 325 25
28094  30 130 230 330 130 30 230 30 330 30
28095  35 135 235 335   -  -   -  - 335 35
28096  40 140 240 340 140 40   -  - 340 40
28097  45 145 245 345   -  - 245 45 345 45
28098  50 150 250 350 150 50   -  - 350 50
28099  55 155 255 355   -  -   -  - 355 55
28100  60 160 260 360 160 60 260 60 360 60
28101  65 165 265 365   -  -   -  - 365 65
28102  70 170 270 370 170 70   -  - 370 70
28103  75 175 275 375   -  - 275 75 375 75
28104  80 180 280 380 180 80   -  - 380 80
28105  85 185 285 385   -  -   -  - 385 85
28106  90 190 290 390 190 90 290 90 390 90
28107  95 195 295 395   -  -   -  - 395 95
28108}
28109do_execsql_test joinD-972 {
28110  SELECT t1.*, t2.*, t3.*, t4.*
28111  FROM t1 FULL JOIN t2 ON true
28112  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28113  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28114  WHERE t1.b=t2.b AND t2.x>0
28115  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28116} {
28117  10 110 210 310 110 10   -  - 310 10
28118  20 120 220 320 120 20   -  - 320 20
28119  30 130 230 330 130 30 230 30 330 30
28120  40 140 240 340 140 40   -  - 340 40
28121  50 150 250 350 150 50   -  - 350 50
28122  60 160 260 360 160 60 260 60 360 60
28123  70 170 270 370 170 70   -  - 370 70
28124  80 180 280 380 180 80   -  - 380 80
28125  90 190 290 390 190 90 290 90 390 90
28126}
28127do_execsql_test joinD-973 {
28128  SELECT t1.*, t2.*, t3.*, t4.*
28129  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28130  LEFT JOIN t3 ON t1.c=t3.c
28131  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28132  WHERE t3.y>0
28133  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28134} {
28135  15 115 215 315   -  - 215 15 315 15
28136  30 130 230 330 130 30 230 30 330 30
28137  45 145 245 345   -  - 245 45 345 45
28138  60 160 260 360 160 60 260 60 360 60
28139  75 175 275 375   -  - 275 75 375 75
28140  90 190 290 390 190 90 290 90 390 90
28141}
28142do_execsql_test joinD-974 {
28143  SELECT t1.*, t2.*, t3.*, t4.*
28144  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28145  LEFT JOIN t3 ON t1.c=t3.c
28146  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28147  WHERE t3.y>0 OR t3.y IS NULL
28148  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28149} {
28150   5 105 205 305   -  -   -  - 305  5
28151  10 110 210 310 110 10   -  - 310 10
28152  15 115 215 315   -  - 215 15 315 15
28153  20 120 220 320 120 20   -  - 320 20
28154  25 125 225 325   -  -   -  - 325 25
28155  30 130 230 330 130 30 230 30 330 30
28156  35 135 235 335   -  -   -  - 335 35
28157  40 140 240 340 140 40   -  - 340 40
28158  45 145 245 345   -  - 245 45 345 45
28159  50 150 250 350 150 50   -  - 350 50
28160  55 155 255 355   -  -   -  - 355 55
28161  60 160 260 360 160 60 260 60 360 60
28162  65 165 265 365   -  -   -  - 365 65
28163  70 170 270 370 170 70   -  - 370 70
28164  75 175 275 375   -  - 275 75 375 75
28165  80 180 280 380 180 80   -  - 380 80
28166  85 185 285 385   -  -   -  - 385 85
28167  90 190 290 390 190 90 290 90 390 90
28168  95 195 295 395   -  -   -  - 395 95
28169}
28170do_execsql_test joinD-975 {
28171  SELECT t1.*, t2.*, t3.*, t4.*
28172  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28173  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28174  INNER JOIN t4 ON t1.d=t4.d
28175  WHERE t4.z>0
28176  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28177} {
28178   5 105 205 305   -  -   -  - 305  5
28179  10 110 210 310 110 10   -  - 310 10
28180  15 115 215 315   -  - 215 15 315 15
28181  20 120 220 320 120 20   -  - 320 20
28182  25 125 225 325   -  -   -  - 325 25
28183  30 130 230 330 130 30 230 30 330 30
28184  35 135 235 335   -  -   -  - 335 35
28185  40 140 240 340 140 40   -  - 340 40
28186  45 145 245 345   -  - 245 45 345 45
28187  50 150 250 350 150 50   -  - 350 50
28188  55 155 255 355   -  -   -  - 355 55
28189  60 160 260 360 160 60 260 60 360 60
28190  65 165 265 365   -  -   -  - 365 65
28191  70 170 270 370 170 70   -  - 370 70
28192  75 175 275 375   -  - 275 75 375 75
28193  80 180 280 380 180 80   -  - 380 80
28194  85 185 285 385   -  -   -  - 385 85
28195  90 190 290 390 190 90 290 90 390 90
28196  95 195 295 395   -  -   -  - 395 95
28197}
28198do_execsql_test joinD-976 {
28199  SELECT t1.*, t2.*, t3.*, t4.*
28200  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28201  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28202  INNER JOIN t4 ON t1.d=t4.d
28203  WHERE t4.z IS NULL OR t4.z>0
28204  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28205} {
28206   5 105 205 305   -  -   -  - 305  5
28207  10 110 210 310 110 10   -  - 310 10
28208  15 115 215 315   -  - 215 15 315 15
28209  20 120 220 320 120 20   -  - 320 20
28210  25 125 225 325   -  -   -  - 325 25
28211  30 130 230 330 130 30 230 30 330 30
28212  35 135 235 335   -  -   -  - 335 35
28213  40 140 240 340 140 40   -  - 340 40
28214  45 145 245 345   -  - 245 45 345 45
28215  50 150 250 350 150 50   -  - 350 50
28216  55 155 255 355   -  -   -  - 355 55
28217  60 160 260 360 160 60 260 60 360 60
28218  65 165 265 365   -  -   -  - 365 65
28219  70 170 270 370 170 70   -  - 370 70
28220  75 175 275 375   -  - 275 75 375 75
28221  80 180 280 380 180 80   -  - 380 80
28222  85 185 285 385   -  -   -  - 385 85
28223  90 190 290 390 190 90 290 90 390 90
28224  95 195 295 395   -  -   -  - 395 95
28225}
28226do_execsql_test joinD-977 {
28227  SELECT t1.*, t2.*, t3.*, t4.*
28228  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28229  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28230  INNER JOIN t4 ON t1.d=t4.d
28231  WHERE t2.x>0 AND t4.z>0
28232  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28233} {
28234  10 110 210 310 110 10   -  - 310 10
28235  20 120 220 320 120 20   -  - 320 20
28236  30 130 230 330 130 30 230 30 330 30
28237  40 140 240 340 140 40   -  - 340 40
28238  50 150 250 350 150 50   -  - 350 50
28239  60 160 260 360 160 60 260 60 360 60
28240  70 170 270 370 170 70   -  - 370 70
28241  80 180 280 380 180 80   -  - 380 80
28242  90 190 290 390 190 90 290 90 390 90
28243}
28244do_execsql_test joinD-978 {
28245  SELECT t1.*, t2.*, t3.*, t4.*
28246  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28247  LEFT JOIN t3 ON t1.c=t3.c
28248  INNER JOIN t4 ON t1.d=t4.d
28249  WHERE t4.z>0 AND t3.y>0
28250  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28251} {
28252  15 115 215 315   -  - 215 15 315 15
28253  30 130 230 330 130 30 230 30 330 30
28254  45 145 245 345   -  - 245 45 345 45
28255  60 160 260 360 160 60 260 60 360 60
28256  75 175 275 375   -  - 275 75 375 75
28257  90 190 290 390 190 90 290 90 390 90
28258}
28259do_execsql_test joinD-979 {
28260  SELECT t1.*, t2.*, t3.*, t4.*
28261  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28262  LEFT JOIN t3 ON t1.c=t3.c
28263  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28264  WHERE t2.x>0 AND t3.y>0
28265  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28266} {
28267  30 130 230 330 130 30 230 30 330 30
28268  60 160 260 360 160 60 260 60 360 60
28269  90 190 290 390 190 90 290 90 390 90
28270}
28271do_execsql_test joinD-980 {
28272  SELECT t1.*, t2.*, t3.*, t4.*
28273  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28274  LEFT JOIN t3 ON t1.c=t3.c
28275  INNER JOIN t4 ON t1.d=t4.d
28276  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
28277  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28278} {
28279  30 130 230 330 130 30 230 30 330 30
28280  60 160 260 360 160 60 260 60 360 60
28281  90 190 290 390 190 90 290 90 390 90
28282}
28283do_execsql_test joinD-981 {
28284  SELECT t1.*, t2.*, t3.*, t4.*
28285  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
28286  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
28287  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
28288  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28289} {
28290   5 105 205 305   -  -   -  - 305  5
28291  10 110 210 310 110 10   -  - 310 10
28292  15 115 215 315   -  - 215 15 315 15
28293  20 120 220 320 120 20   -  - 320 20
28294  25 125 225 325   -  -   -  - 325 25
28295  30 130 230 330 130 30 230 30 330 30
28296  35 135 235 335   -  -   -  - 335 35
28297  40 140 240 340 140 40   -  - 340 40
28298  45 145 245 345   -  - 245 45 345 45
28299  50 150 250 350 150 50   -  - 350 50
28300  55 155 255 355   -  -   -  - 355 55
28301  60 160 260 360 160 60 260 60 360 60
28302  65 165 265 365   -  -   -  - 365 65
28303  70 170 270 370 170 70   -  - 370 70
28304  75 175 275 375   -  - 275 75 375 75
28305  80 180 280 380 180 80   -  - 380 80
28306  85 185 285 385   -  -   -  - 385 85
28307  90 190 290 390 190 90 290 90 390 90
28308  95 195 295 395   -  -   -  - 395 95
28309}
28310do_execsql_test joinD-982 {
28311  SELECT t1.*, t2.*, t3.*, t4.*
28312  FROM t1 FULL JOIN t2 ON t2.x>0
28313  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
28314  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
28315  WHERE t1.b = t2.b
28316  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28317} {
28318  10 110 210 310 110 10   -  - 310 10
28319  20 120 220 320 120 20   -  - 320 20
28320  30 130 230 330 130 30 230 30 330 30
28321  40 140 240 340 140 40   -  - 340 40
28322  50 150 250 350 150 50   -  - 350 50
28323  60 160 260 360 160 60 260 60 360 60
28324  70 170 270 370 170 70   -  - 370 70
28325  80 180 280 380 180 80   -  - 380 80
28326  90 190 290 390 190 90 290 90 390 90
28327}
28328do_execsql_test joinD-983 {
28329  SELECT t1.*, t2.*, t3.*, t4.*
28330  FROM t1 FULL JOIN t2 ON t2.x>0
28331  LEFT JOIN t3 ON t3.y>0
28332  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
28333  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
28334  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28335} {
28336  30 130 230 330 130 30 230 30 330 30
28337  60 160 260 360 160 60 260 60 360 60
28338  90 190 290 390 190 90 290 90 390 90
28339}
28340do_execsql_test joinD-984 {
28341  SELECT t1.*, t2.*, t3.*, t4.*
28342  FROM t1 FULL JOIN t2 ON t2.x>0
28343  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
28344  INNER JOIN t4 ON t4.z>0
28345  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
28346  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28347} {
28348  10 110 210 310 110 10   -  - 310 10
28349  20 120 220 320 120 20   -  - 320 20
28350  30 130 230 330 130 30 230 30 330 30
28351  40 140 240 340 140 40   -  - 340 40
28352  50 150 250 350 150 50   -  - 350 50
28353  60 160 260 360 160 60 260 60 360 60
28354  70 170 270 370 170 70   -  - 370 70
28355  80 180 280 380 180 80   -  - 380 80
28356  90 190 290 390 190 90 290 90 390 90
28357}
28358do_execsql_test joinD-985 {
28359  SELECT t1.*, t2.*, t3.*, t4.*
28360  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28361  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
28362  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
28363  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28364} {
28365   5 105 205 305   -  -   -  - 305  5
28366  10 110 210 310 110 10   -  - 310 10
28367  15 115 215 315   -  - 215 15 315 15
28368  20 120 220 320 120 20   -  - 320 20
28369  25 125 225 325   -  -   -  - 325 25
28370  30 130 230 330 130 30 230 30 330 30
28371  35 135 235 335   -  -   -  - 335 35
28372  40 140 240 340 140 40   -  - 340 40
28373  45 145 245 345   -  - 245 45 345 45
28374  50 150 250 350 150 50   -  - 350 50
28375  55 155 255 355   -  -   -  - 355 55
28376  60 160 260 360 160 60 260 60 360 60
28377  65 165 265 365   -  -   -  - 365 65
28378  70 170 270 370 170 70   -  - 370 70
28379  75 175 275 375   -  - 275 75 375 75
28380  80 180 280 380 180 80   -  - 380 80
28381  85 185 285 385   -  -   -  - 385 85
28382  90 190 290 390 190 90 290 90 390 90
28383  95 195 295 395   -  -   -  - 395 95
28384}
28385do_execsql_test joinD-986 {
28386  SELECT t1.*, t2.*, t3.*, t4.*
28387  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28388  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28389  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28391} {
28392   0 100 200 300   -  -   -  -   -  -
28393   1 101 201 301   -  -   -  -   -  -
28394   2 102 202 302 102  2   -  -   -  -
28395   3 103 203 303   -  - 203  3   -  -
28396   4 104 204 304 104  4   -  -   -  -
28397   5 105 205 305   -  -   -  - 305  5
28398   6 106 206 306 106  6 206  6   -  -
28399   7 107 207 307   -  -   -  -   -  -
28400   8 108 208 308 108  8   -  -   -  -
28401   9 109 209 309   -  - 209  9   -  -
28402  10 110 210 310 110 10   -  - 310 10
28403  11 111 211 311   -  -   -  -   -  -
28404  12 112 212 312 112 12 212 12   -  -
28405  13 113 213 313   -  -   -  -   -  -
28406  14 114 214 314 114 14   -  -   -  -
28407  15 115 215 315   -  - 215 15 315 15
28408  16 116 216 316 116 16   -  -   -  -
28409  17 117 217 317   -  -   -  -   -  -
28410  18 118 218 318 118 18 218 18   -  -
28411  19 119 219 319   -  -   -  -   -  -
28412  20 120 220 320 120 20   -  - 320 20
28413  21 121 221 321   -  - 221 21   -  -
28414  22 122 222 322 122 22   -  -   -  -
28415  23 123 223 323   -  -   -  -   -  -
28416  24 124 224 324 124 24 224 24   -  -
28417  25 125 225 325   -  -   -  - 325 25
28418  26 126 226 326 126 26   -  -   -  -
28419  27 127 227 327   -  - 227 27   -  -
28420  28 128 228 328 128 28   -  -   -  -
28421  29 129 229 329   -  -   -  -   -  -
28422  30 130 230 330 130 30 230 30 330 30
28423  31 131 231 331   -  -   -  -   -  -
28424  32 132 232 332 132 32   -  -   -  -
28425  33 133 233 333   -  - 233 33   -  -
28426  34 134 234 334 134 34   -  -   -  -
28427  35 135 235 335   -  -   -  - 335 35
28428  36 136 236 336 136 36 236 36   -  -
28429  37 137 237 337   -  -   -  -   -  -
28430  38 138 238 338 138 38   -  -   -  -
28431  39 139 239 339   -  - 239 39   -  -
28432  40 140 240 340 140 40   -  - 340 40
28433  41 141 241 341   -  -   -  -   -  -
28434  42 142 242 342 142 42 242 42   -  -
28435  43 143 243 343   -  -   -  -   -  -
28436  44 144 244 344 144 44   -  -   -  -
28437  45 145 245 345   -  - 245 45 345 45
28438  46 146 246 346 146 46   -  -   -  -
28439  47 147 247 347   -  -   -  -   -  -
28440  48 148 248 348 148 48 248 48   -  -
28441  49 149 249 349   -  -   -  -   -  -
28442  50 150 250 350 150 50   -  - 350 50
28443  51 151 251 351   -  - 251 51   -  -
28444  52 152 252 352 152 52   -  -   -  -
28445  53 153 253 353   -  -   -  -   -  -
28446  54 154 254 354 154 54 254 54   -  -
28447  55 155 255 355   -  -   -  - 355 55
28448  56 156 256 356 156 56   -  -   -  -
28449  57 157 257 357   -  - 257 57   -  -
28450  58 158 258 358 158 58   -  -   -  -
28451  59 159 259 359   -  -   -  -   -  -
28452  60 160 260 360 160 60 260 60 360 60
28453  61 161 261 361   -  -   -  -   -  -
28454  62 162 262 362 162 62   -  -   -  -
28455  63 163 263 363   -  - 263 63   -  -
28456  64 164 264 364 164 64   -  -   -  -
28457  65 165 265 365   -  -   -  - 365 65
28458  66 166 266 366 166 66 266 66   -  -
28459  67 167 267 367   -  -   -  -   -  -
28460  68 168 268 368 168 68   -  -   -  -
28461  69 169 269 369   -  - 269 69   -  -
28462  70 170 270 370 170 70   -  - 370 70
28463  71 171 271 371   -  -   -  -   -  -
28464  72 172 272 372 172 72 272 72   -  -
28465  73 173 273 373   -  -   -  -   -  -
28466  74 174 274 374 174 74   -  -   -  -
28467  75 175 275 375   -  - 275 75 375 75
28468  76 176 276 376 176 76   -  -   -  -
28469  77 177 277 377   -  -   -  -   -  -
28470  78 178 278 378 178 78 278 78   -  -
28471  79 179 279 379   -  -   -  -   -  -
28472  80 180 280 380 180 80   -  - 380 80
28473  81 181 281 381   -  - 281 81   -  -
28474  82 182 282 382 182 82   -  -   -  -
28475  83 183 283 383   -  -   -  -   -  -
28476  84 184 284 384 184 84 284 84   -  -
28477  85 185 285 385   -  -   -  - 385 85
28478  86 186 286 386 186 86   -  -   -  -
28479  87 187 287 387   -  - 287 87   -  -
28480  88 188 288 388 188 88   -  -   -  -
28481  89 189 289 389   -  -   -  -   -  -
28482  90 190 290 390 190 90 290 90 390 90
28483  91 191 291 391   -  -   -  -   -  -
28484  92 192 292 392 192 92   -  -   -  -
28485  93 193 293 393   -  - 293 93   -  -
28486  94 194 294 394 194 94   -  -   -  -
28487  95 195 295 395   -  -   -  - 395 95
28488  96   - 296 396   -  -   -  -   -  -
28489  97 197   - 397   -  -   -  -   -  -
28490  98 198 298   -   -  -   -  -   -  -
28491  99   -   -   -   -  -   -  -   -  -
28492   -   -   -   - 100  0   -  -   -  -
28493}
28494do_execsql_test joinD-987 {
28495  SELECT t1.*, t2.*, t3.*, t4.*
28496  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28497  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28498  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28499  WHERE t2.x>0
28500  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28501} {
28502   2 102 202 302 102  2   -  -   -  -
28503   4 104 204 304 104  4   -  -   -  -
28504   6 106 206 306 106  6 206  6   -  -
28505   8 108 208 308 108  8   -  -   -  -
28506  10 110 210 310 110 10   -  - 310 10
28507  12 112 212 312 112 12 212 12   -  -
28508  14 114 214 314 114 14   -  -   -  -
28509  16 116 216 316 116 16   -  -   -  -
28510  18 118 218 318 118 18 218 18   -  -
28511  20 120 220 320 120 20   -  - 320 20
28512  22 122 222 322 122 22   -  -   -  -
28513  24 124 224 324 124 24 224 24   -  -
28514  26 126 226 326 126 26   -  -   -  -
28515  28 128 228 328 128 28   -  -   -  -
28516  30 130 230 330 130 30 230 30 330 30
28517  32 132 232 332 132 32   -  -   -  -
28518  34 134 234 334 134 34   -  -   -  -
28519  36 136 236 336 136 36 236 36   -  -
28520  38 138 238 338 138 38   -  -   -  -
28521  40 140 240 340 140 40   -  - 340 40
28522  42 142 242 342 142 42 242 42   -  -
28523  44 144 244 344 144 44   -  -   -  -
28524  46 146 246 346 146 46   -  -   -  -
28525  48 148 248 348 148 48 248 48   -  -
28526  50 150 250 350 150 50   -  - 350 50
28527  52 152 252 352 152 52   -  -   -  -
28528  54 154 254 354 154 54 254 54   -  -
28529  56 156 256 356 156 56   -  -   -  -
28530  58 158 258 358 158 58   -  -   -  -
28531  60 160 260 360 160 60 260 60 360 60
28532  62 162 262 362 162 62   -  -   -  -
28533  64 164 264 364 164 64   -  -   -  -
28534  66 166 266 366 166 66 266 66   -  -
28535  68 168 268 368 168 68   -  -   -  -
28536  70 170 270 370 170 70   -  - 370 70
28537  72 172 272 372 172 72 272 72   -  -
28538  74 174 274 374 174 74   -  -   -  -
28539  76 176 276 376 176 76   -  -   -  -
28540  78 178 278 378 178 78 278 78   -  -
28541  80 180 280 380 180 80   -  - 380 80
28542  82 182 282 382 182 82   -  -   -  -
28543  84 184 284 384 184 84 284 84   -  -
28544  86 186 286 386 186 86   -  -   -  -
28545  88 188 288 388 188 88   -  -   -  -
28546  90 190 290 390 190 90 290 90 390 90
28547  92 192 292 392 192 92   -  -   -  -
28548  94 194 294 394 194 94   -  -   -  -
28549}
28550do_execsql_test joinD-988 {
28551  SELECT t1.*, t2.*, t3.*, t4.*
28552  FROM t1 FULL JOIN t2 ON t1.b=t2.b
28553  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28554  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28555  WHERE (t2.x>0 OR t2.x IS NULL)
28556  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28557} {
28558   1 101 201 301   -  -   -  -   -  -
28559   2 102 202 302 102  2   -  -   -  -
28560   3 103 203 303   -  - 203  3   -  -
28561   4 104 204 304 104  4   -  -   -  -
28562   5 105 205 305   -  -   -  - 305  5
28563   6 106 206 306 106  6 206  6   -  -
28564   7 107 207 307   -  -   -  -   -  -
28565   8 108 208 308 108  8   -  -   -  -
28566   9 109 209 309   -  - 209  9   -  -
28567  10 110 210 310 110 10   -  - 310 10
28568  11 111 211 311   -  -   -  -   -  -
28569  12 112 212 312 112 12 212 12   -  -
28570  13 113 213 313   -  -   -  -   -  -
28571  14 114 214 314 114 14   -  -   -  -
28572  15 115 215 315   -  - 215 15 315 15
28573  16 116 216 316 116 16   -  -   -  -
28574  17 117 217 317   -  -   -  -   -  -
28575  18 118 218 318 118 18 218 18   -  -
28576  19 119 219 319   -  -   -  -   -  -
28577  20 120 220 320 120 20   -  - 320 20
28578  21 121 221 321   -  - 221 21   -  -
28579  22 122 222 322 122 22   -  -   -  -
28580  23 123 223 323   -  -   -  -   -  -
28581  24 124 224 324 124 24 224 24   -  -
28582  25 125 225 325   -  -   -  - 325 25
28583  26 126 226 326 126 26   -  -   -  -
28584  27 127 227 327   -  - 227 27   -  -
28585  28 128 228 328 128 28   -  -   -  -
28586  29 129 229 329   -  -   -  -   -  -
28587  30 130 230 330 130 30 230 30 330 30
28588  31 131 231 331   -  -   -  -   -  -
28589  32 132 232 332 132 32   -  -   -  -
28590  33 133 233 333   -  - 233 33   -  -
28591  34 134 234 334 134 34   -  -   -  -
28592  35 135 235 335   -  -   -  - 335 35
28593  36 136 236 336 136 36 236 36   -  -
28594  37 137 237 337   -  -   -  -   -  -
28595  38 138 238 338 138 38   -  -   -  -
28596  39 139 239 339   -  - 239 39   -  -
28597  40 140 240 340 140 40   -  - 340 40
28598  41 141 241 341   -  -   -  -   -  -
28599  42 142 242 342 142 42 242 42   -  -
28600  43 143 243 343   -  -   -  -   -  -
28601  44 144 244 344 144 44   -  -   -  -
28602  45 145 245 345   -  - 245 45 345 45
28603  46 146 246 346 146 46   -  -   -  -
28604  47 147 247 347   -  -   -  -   -  -
28605  48 148 248 348 148 48 248 48   -  -
28606  49 149 249 349   -  -   -  -   -  -
28607  50 150 250 350 150 50   -  - 350 50
28608  51 151 251 351   -  - 251 51   -  -
28609  52 152 252 352 152 52   -  -   -  -
28610  53 153 253 353   -  -   -  -   -  -
28611  54 154 254 354 154 54 254 54   -  -
28612  55 155 255 355   -  -   -  - 355 55
28613  56 156 256 356 156 56   -  -   -  -
28614  57 157 257 357   -  - 257 57   -  -
28615  58 158 258 358 158 58   -  -   -  -
28616  59 159 259 359   -  -   -  -   -  -
28617  60 160 260 360 160 60 260 60 360 60
28618  61 161 261 361   -  -   -  -   -  -
28619  62 162 262 362 162 62   -  -   -  -
28620  63 163 263 363   -  - 263 63   -  -
28621  64 164 264 364 164 64   -  -   -  -
28622  65 165 265 365   -  -   -  - 365 65
28623  66 166 266 366 166 66 266 66   -  -
28624  67 167 267 367   -  -   -  -   -  -
28625  68 168 268 368 168 68   -  -   -  -
28626  69 169 269 369   -  - 269 69   -  -
28627  70 170 270 370 170 70   -  - 370 70
28628  71 171 271 371   -  -   -  -   -  -
28629  72 172 272 372 172 72 272 72   -  -
28630  73 173 273 373   -  -   -  -   -  -
28631  74 174 274 374 174 74   -  -   -  -
28632  75 175 275 375   -  - 275 75 375 75
28633  76 176 276 376 176 76   -  -   -  -
28634  77 177 277 377   -  -   -  -   -  -
28635  78 178 278 378 178 78 278 78   -  -
28636  79 179 279 379   -  -   -  -   -  -
28637  80 180 280 380 180 80   -  - 380 80
28638  81 181 281 381   -  - 281 81   -  -
28639  82 182 282 382 182 82   -  -   -  -
28640  83 183 283 383   -  -   -  -   -  -
28641  84 184 284 384 184 84 284 84   -  -
28642  85 185 285 385   -  -   -  - 385 85
28643  86 186 286 386 186 86   -  -   -  -
28644  87 187 287 387   -  - 287 87   -  -
28645  88 188 288 388 188 88   -  -   -  -
28646  89 189 289 389   -  -   -  -   -  -
28647  90 190 290 390 190 90 290 90 390 90
28648  91 191 291 391   -  -   -  -   -  -
28649  92 192 292 392 192 92   -  -   -  -
28650  93 193 293 393   -  - 293 93   -  -
28651  94 194 294 394 194 94   -  -   -  -
28652  95 195 295 395   -  -   -  - 395 95
28653  96   - 296 396   -  -   -  -   -  -
28654  97 197   - 397   -  -   -  -   -  -
28655  98 198 298   -   -  -   -  -   -  -
28656  99   -   -   -   -  -   -  -   -  -
28657}
28658do_execsql_test joinD-989 {
28659  SELECT t1.*, t2.*, t3.*, t4.*
28660  FROM t1 FULL JOIN t2 ON true
28661  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28662  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28663  WHERE t1.b=t2.b AND t2.x>0
28664  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28665} {
28666   2 102 202 302 102  2   -  -   -  -
28667   4 104 204 304 104  4   -  -   -  -
28668   6 106 206 306 106  6 206  6   -  -
28669   8 108 208 308 108  8   -  -   -  -
28670  10 110 210 310 110 10   -  - 310 10
28671  12 112 212 312 112 12 212 12   -  -
28672  14 114 214 314 114 14   -  -   -  -
28673  16 116 216 316 116 16   -  -   -  -
28674  18 118 218 318 118 18 218 18   -  -
28675  20 120 220 320 120 20   -  - 320 20
28676  22 122 222 322 122 22   -  -   -  -
28677  24 124 224 324 124 24 224 24   -  -
28678  26 126 226 326 126 26   -  -   -  -
28679  28 128 228 328 128 28   -  -   -  -
28680  30 130 230 330 130 30 230 30 330 30
28681  32 132 232 332 132 32   -  -   -  -
28682  34 134 234 334 134 34   -  -   -  -
28683  36 136 236 336 136 36 236 36   -  -
28684  38 138 238 338 138 38   -  -   -  -
28685  40 140 240 340 140 40   -  - 340 40
28686  42 142 242 342 142 42 242 42   -  -
28687  44 144 244 344 144 44   -  -   -  -
28688  46 146 246 346 146 46   -  -   -  -
28689  48 148 248 348 148 48 248 48   -  -
28690  50 150 250 350 150 50   -  - 350 50
28691  52 152 252 352 152 52   -  -   -  -
28692  54 154 254 354 154 54 254 54   -  -
28693  56 156 256 356 156 56   -  -   -  -
28694  58 158 258 358 158 58   -  -   -  -
28695  60 160 260 360 160 60 260 60 360 60
28696  62 162 262 362 162 62   -  -   -  -
28697  64 164 264 364 164 64   -  -   -  -
28698  66 166 266 366 166 66 266 66   -  -
28699  68 168 268 368 168 68   -  -   -  -
28700  70 170 270 370 170 70   -  - 370 70
28701  72 172 272 372 172 72 272 72   -  -
28702  74 174 274 374 174 74   -  -   -  -
28703  76 176 276 376 176 76   -  -   -  -
28704  78 178 278 378 178 78 278 78   -  -
28705  80 180 280 380 180 80   -  - 380 80
28706  82 182 282 382 182 82   -  -   -  -
28707  84 184 284 384 184 84 284 84   -  -
28708  86 186 286 386 186 86   -  -   -  -
28709  88 188 288 388 188 88   -  -   -  -
28710  90 190 290 390 190 90 290 90 390 90
28711  92 192 292 392 192 92   -  -   -  -
28712  94 194 294 394 194 94   -  -   -  -
28713}
28714do_execsql_test joinD-990 {
28715  SELECT t1.*, t2.*, t3.*, t4.*
28716  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28717  LEFT JOIN t3 ON t1.c=t3.c
28718  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28719  WHERE t3.y>0
28720  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28721} {
28722   3 103 203 303   -  - 203  3   -  -
28723   6 106 206 306 106  6 206  6   -  -
28724   9 109 209 309   -  - 209  9   -  -
28725  12 112 212 312 112 12 212 12   -  -
28726  15 115 215 315   -  - 215 15 315 15
28727  18 118 218 318 118 18 218 18   -  -
28728  21 121 221 321   -  - 221 21   -  -
28729  24 124 224 324 124 24 224 24   -  -
28730  27 127 227 327   -  - 227 27   -  -
28731  30 130 230 330 130 30 230 30 330 30
28732  33 133 233 333   -  - 233 33   -  -
28733  36 136 236 336 136 36 236 36   -  -
28734  39 139 239 339   -  - 239 39   -  -
28735  42 142 242 342 142 42 242 42   -  -
28736  45 145 245 345   -  - 245 45 345 45
28737  48 148 248 348 148 48 248 48   -  -
28738  51 151 251 351   -  - 251 51   -  -
28739  54 154 254 354 154 54 254 54   -  -
28740  57 157 257 357   -  - 257 57   -  -
28741  60 160 260 360 160 60 260 60 360 60
28742  63 163 263 363   -  - 263 63   -  -
28743  66 166 266 366 166 66 266 66   -  -
28744  69 169 269 369   -  - 269 69   -  -
28745  72 172 272 372 172 72 272 72   -  -
28746  75 175 275 375   -  - 275 75 375 75
28747  78 178 278 378 178 78 278 78   -  -
28748  81 181 281 381   -  - 281 81   -  -
28749  84 184 284 384 184 84 284 84   -  -
28750  87 187 287 387   -  - 287 87   -  -
28751  90 190 290 390 190 90 290 90 390 90
28752  93 193 293 393   -  - 293 93   -  -
28753}
28754do_execsql_test joinD-991 {
28755  SELECT t1.*, t2.*, t3.*, t4.*
28756  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28757  LEFT JOIN t3 ON t1.c=t3.c
28758  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
28759  WHERE t3.y>0 OR t3.y IS NULL
28760  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28761} {
28762   1 101 201 301   -  -   -  -   -  -
28763   2 102 202 302 102  2   -  -   -  -
28764   3 103 203 303   -  - 203  3   -  -
28765   4 104 204 304 104  4   -  -   -  -
28766   5 105 205 305   -  -   -  - 305  5
28767   6 106 206 306 106  6 206  6   -  -
28768   7 107 207 307   -  -   -  -   -  -
28769   8 108 208 308 108  8   -  -   -  -
28770   9 109 209 309   -  - 209  9   -  -
28771  10 110 210 310 110 10   -  - 310 10
28772  11 111 211 311   -  -   -  -   -  -
28773  12 112 212 312 112 12 212 12   -  -
28774  13 113 213 313   -  -   -  -   -  -
28775  14 114 214 314 114 14   -  -   -  -
28776  15 115 215 315   -  - 215 15 315 15
28777  16 116 216 316 116 16   -  -   -  -
28778  17 117 217 317   -  -   -  -   -  -
28779  18 118 218 318 118 18 218 18   -  -
28780  19 119 219 319   -  -   -  -   -  -
28781  20 120 220 320 120 20   -  - 320 20
28782  21 121 221 321   -  - 221 21   -  -
28783  22 122 222 322 122 22   -  -   -  -
28784  23 123 223 323   -  -   -  -   -  -
28785  24 124 224 324 124 24 224 24   -  -
28786  25 125 225 325   -  -   -  - 325 25
28787  26 126 226 326 126 26   -  -   -  -
28788  27 127 227 327   -  - 227 27   -  -
28789  28 128 228 328 128 28   -  -   -  -
28790  29 129 229 329   -  -   -  -   -  -
28791  30 130 230 330 130 30 230 30 330 30
28792  31 131 231 331   -  -   -  -   -  -
28793  32 132 232 332 132 32   -  -   -  -
28794  33 133 233 333   -  - 233 33   -  -
28795  34 134 234 334 134 34   -  -   -  -
28796  35 135 235 335   -  -   -  - 335 35
28797  36 136 236 336 136 36 236 36   -  -
28798  37 137 237 337   -  -   -  -   -  -
28799  38 138 238 338 138 38   -  -   -  -
28800  39 139 239 339   -  - 239 39   -  -
28801  40 140 240 340 140 40   -  - 340 40
28802  41 141 241 341   -  -   -  -   -  -
28803  42 142 242 342 142 42 242 42   -  -
28804  43 143 243 343   -  -   -  -   -  -
28805  44 144 244 344 144 44   -  -   -  -
28806  45 145 245 345   -  - 245 45 345 45
28807  46 146 246 346 146 46   -  -   -  -
28808  47 147 247 347   -  -   -  -   -  -
28809  48 148 248 348 148 48 248 48   -  -
28810  49 149 249 349   -  -   -  -   -  -
28811  50 150 250 350 150 50   -  - 350 50
28812  51 151 251 351   -  - 251 51   -  -
28813  52 152 252 352 152 52   -  -   -  -
28814  53 153 253 353   -  -   -  -   -  -
28815  54 154 254 354 154 54 254 54   -  -
28816  55 155 255 355   -  -   -  - 355 55
28817  56 156 256 356 156 56   -  -   -  -
28818  57 157 257 357   -  - 257 57   -  -
28819  58 158 258 358 158 58   -  -   -  -
28820  59 159 259 359   -  -   -  -   -  -
28821  60 160 260 360 160 60 260 60 360 60
28822  61 161 261 361   -  -   -  -   -  -
28823  62 162 262 362 162 62   -  -   -  -
28824  63 163 263 363   -  - 263 63   -  -
28825  64 164 264 364 164 64   -  -   -  -
28826  65 165 265 365   -  -   -  - 365 65
28827  66 166 266 366 166 66 266 66   -  -
28828  67 167 267 367   -  -   -  -   -  -
28829  68 168 268 368 168 68   -  -   -  -
28830  69 169 269 369   -  - 269 69   -  -
28831  70 170 270 370 170 70   -  - 370 70
28832  71 171 271 371   -  -   -  -   -  -
28833  72 172 272 372 172 72 272 72   -  -
28834  73 173 273 373   -  -   -  -   -  -
28835  74 174 274 374 174 74   -  -   -  -
28836  75 175 275 375   -  - 275 75 375 75
28837  76 176 276 376 176 76   -  -   -  -
28838  77 177 277 377   -  -   -  -   -  -
28839  78 178 278 378 178 78 278 78   -  -
28840  79 179 279 379   -  -   -  -   -  -
28841  80 180 280 380 180 80   -  - 380 80
28842  81 181 281 381   -  - 281 81   -  -
28843  82 182 282 382 182 82   -  -   -  -
28844  83 183 283 383   -  -   -  -   -  -
28845  84 184 284 384 184 84 284 84   -  -
28846  85 185 285 385   -  -   -  - 385 85
28847  86 186 286 386 186 86   -  -   -  -
28848  87 187 287 387   -  - 287 87   -  -
28849  88 188 288 388 188 88   -  -   -  -
28850  89 189 289 389   -  -   -  -   -  -
28851  90 190 290 390 190 90 290 90 390 90
28852  91 191 291 391   -  -   -  -   -  -
28853  92 192 292 392 192 92   -  -   -  -
28854  93 193 293 393   -  - 293 93   -  -
28855  94 194 294 394 194 94   -  -   -  -
28856  95 195 295 395   -  -   -  - 395 95
28857  96   - 296 396   -  -   -  -   -  -
28858  97 197   - 397   -  -   -  -   -  -
28859  98 198 298   -   -  -   -  -   -  -
28860  99   -   -   -   -  -   -  -   -  -
28861   -   -   -   - 100  0   -  -   -  -
28862}
28863do_execsql_test joinD-992 {
28864  SELECT t1.*, t2.*, t3.*, t4.*
28865  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28866  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28867  LEFT JOIN t4 ON t1.d=t4.d
28868  WHERE t4.z>0
28869  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28870} {
28871   5 105 205 305   -  -   -  - 305  5
28872  10 110 210 310 110 10   -  - 310 10
28873  15 115 215 315   -  - 215 15 315 15
28874  20 120 220 320 120 20   -  - 320 20
28875  25 125 225 325   -  -   -  - 325 25
28876  30 130 230 330 130 30 230 30 330 30
28877  35 135 235 335   -  -   -  - 335 35
28878  40 140 240 340 140 40   -  - 340 40
28879  45 145 245 345   -  - 245 45 345 45
28880  50 150 250 350 150 50   -  - 350 50
28881  55 155 255 355   -  -   -  - 355 55
28882  60 160 260 360 160 60 260 60 360 60
28883  65 165 265 365   -  -   -  - 365 65
28884  70 170 270 370 170 70   -  - 370 70
28885  75 175 275 375   -  - 275 75 375 75
28886  80 180 280 380 180 80   -  - 380 80
28887  85 185 285 385   -  -   -  - 385 85
28888  90 190 290 390 190 90 290 90 390 90
28889  95 195 295 395   -  -   -  - 395 95
28890}
28891do_execsql_test joinD-993 {
28892  SELECT t1.*, t2.*, t3.*, t4.*
28893  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
28894  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
28895  LEFT JOIN t4 ON t1.d=t4.d
28896  WHERE t4.z IS NULL OR t4.z>0
28897  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
28898} {
28899   1 101 201 301   -  -   -  -   -  -
28900   2 102 202 302 102  2   -  -   -  -
28901   3 103 203 303   -  - 203  3   -  -
28902   4 104 204 304 104  4   -  -   -  -
28903   5 105 205 305   -  -   -  - 305  5
28904   6 106 206 306 106  6 206  6   -  -
28905   7 107 207 307   -  -   -  -   -  -
28906   8 108 208 308 108  8   -  -   -  -
28907   9 109 209 309   -  - 209  9   -  -
28908  10 110 210 310 110 10   -  - 310 10
28909  11 111 211 311   -  -   -  -   -  -
28910  12 112 212 312 112 12 212 12   -  -
28911  13 113 213 313   -  -   -  -   -  -
28912  14 114 214 314 114 14   -  -   -  -
28913  15 115 215 315   -  - 215 15 315 15
28914  16 116 216 316 116 16   -  -   -  -
28915  17 117 217 317   -  -   -  -   -  -
28916  18 118 218 318 118 18 218 18   -  -
28917  19 119 219 319   -  -   -  -   -  -
28918  20 120 220 320 120 20   -  - 320 20
28919  21 121 221 321   -  - 221 21   -  -
28920  22 122 222 322 122 22   -  -   -  -
28921  23 123 223 323   -  -   -  -   -  -
28922  24 124 224 324 124 24 224 24   -  -
28923  25 125 225 325   -  -   -  - 325 25
28924  26 126 226 326 126 26   -  -   -  -
28925  27 127 227 327   -  - 227 27   -  -
28926  28 128 228 328 128 28   -  -   -  -
28927  29 129 229 329   -  -   -  -   -  -
28928  30 130 230 330 130 30 230 30 330 30
28929  31 131 231 331   -  -   -  -   -  -
28930  32 132 232 332 132 32   -  -   -  -
28931  33 133 233 333   -  - 233 33   -  -
28932  34 134 234 334 134 34   -  -   -  -
28933  35 135 235 335   -  -   -  - 335 35
28934  36 136 236 336 136 36 236 36   -  -
28935  37 137 237 337   -  -   -  -   -  -
28936  38 138 238 338 138 38   -  -   -  -
28937  39 139 239 339   -  - 239 39   -  -
28938  40 140 240 340 140 40   -  - 340 40
28939  41 141 241 341   -  -   -  -   -  -
28940  42 142 242 342 142 42 242 42   -  -
28941  43 143 243 343   -  -   -  -   -  -
28942  44 144 244 344 144 44   -  -   -  -
28943  45 145 245 345   -  - 245 45 345 45
28944  46 146 246 346 146 46   -  -   -  -
28945  47 147 247 347   -  -   -  -   -  -
28946  48 148 248 348 148 48 248 48   -  -
28947  49 149 249 349   -  -   -  -   -  -
28948  50 150 250 350 150 50   -  - 350 50
28949  51 151 251 351   -  - 251 51   -  -
28950  52 152 252 352 152 52   -  -   -  -
28951  53 153 253 353   -  -   -  -   -  -
28952  54 154 254 354 154 54 254 54   -  -
28953  55 155 255 355   -  -   -  - 355 55
28954  56 156 256 356 156 56   -  -   -  -
28955  57 157 257 357   -  - 257 57   -  -
28956  58 158 258 358 158 58   -  -   -  -
28957  59 159 259 359   -  -   -  -   -  -
28958  60 160 260 360 160 60 260 60 360 60
28959  61 161 261 361   -  -   -  -   -  -
28960  62 162 262 362 162 62   -  -   -  -
28961  63 163 263 363   -  - 263 63   -  -
28962  64 164 264 364 164 64   -  -   -  -
28963  65 165 265 365   -  -   -  - 365 65
28964  66 166 266 366 166 66 266 66   -  -
28965  67 167 267 367   -  -   -  -   -  -
28966  68 168 268 368 168 68   -  -   -  -
28967  69 169 269 369   -  - 269 69   -  -
28968  70 170 270 370 170 70   -  - 370 70
28969  71 171 271 371   -  -   -  -   -  -
28970  72 172 272 372 172 72 272 72   -  -
28971  73 173 273 373   -  -   -  -   -  -
28972  74 174 274 374 174 74   -  -   -  -
28973  75 175 275 375   -  - 275 75 375 75
28974  76 176 276 376 176 76   -  -   -  -
28975  77 177 277 377   -  -   -  -   -  -
28976  78 178 278 378 178 78 278 78   -  -
28977  79 179 279 379   -  -   -  -   -  -
28978  80 180 280 380 180 80   -  - 380 80
28979  81 181 281 381   -  - 281 81   -  -
28980  82 182 282 382 182 82   -  -   -  -
28981  83 183 283 383   -  -   -  -   -  -
28982  84 184 284 384 184 84 284 84   -  -
28983  85 185 285 385   -  -   -  - 385 85
28984  86 186 286 386 186 86   -  -   -  -
28985  87 187 287 387   -  - 287 87   -  -
28986  88 188 288 388 188 88   -  -   -  -
28987  89 189 289 389   -  -   -  -   -  -
28988  90 190 290 390 190 90 290 90 390 90
28989  91 191 291 391   -  -   -  -   -  -
28990  92 192 292 392 192 92   -  -   -  -
28991  93 193 293 393   -  - 293 93   -  -
28992  94 194 294 394 194 94   -  -   -  -
28993  95 195 295 395   -  -   -  - 395 95
28994  96   - 296 396   -  -   -  -   -  -
28995  97 197   - 397   -  -   -  -   -  -
28996  98 198 298   -   -  -   -  -   -  -
28997  99   -   -   -   -  -   -  -   -  -
28998   -   -   -   - 100  0   -  -   -  -
28999}
29000do_execsql_test joinD-994 {
29001  SELECT t1.*, t2.*, t3.*, t4.*
29002  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29003  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29004  LEFT JOIN t4 ON t1.d=t4.d
29005  WHERE t2.x>0 AND t4.z>0
29006  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29007} {
29008  10 110 210 310 110 10   -  - 310 10
29009  20 120 220 320 120 20   -  - 320 20
29010  30 130 230 330 130 30 230 30 330 30
29011  40 140 240 340 140 40   -  - 340 40
29012  50 150 250 350 150 50   -  - 350 50
29013  60 160 260 360 160 60 260 60 360 60
29014  70 170 270 370 170 70   -  - 370 70
29015  80 180 280 380 180 80   -  - 380 80
29016  90 190 290 390 190 90 290 90 390 90
29017}
29018do_execsql_test joinD-995 {
29019  SELECT t1.*, t2.*, t3.*, t4.*
29020  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29021  LEFT JOIN t3 ON t1.c=t3.c
29022  LEFT JOIN t4 ON t1.d=t4.d
29023  WHERE t4.z>0 AND t3.y>0
29024  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29025} {
29026  15 115 215 315   -  - 215 15 315 15
29027  30 130 230 330 130 30 230 30 330 30
29028  45 145 245 345   -  - 245 45 345 45
29029  60 160 260 360 160 60 260 60 360 60
29030  75 175 275 375   -  - 275 75 375 75
29031  90 190 290 390 190 90 290 90 390 90
29032}
29033do_execsql_test joinD-996 {
29034  SELECT t1.*, t2.*, t3.*, t4.*
29035  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29036  LEFT JOIN t3 ON t1.c=t3.c
29037  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
29038  WHERE t2.x>0 AND t3.y>0
29039  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29040} {
29041   6 106 206 306 106  6 206  6   -  -
29042  12 112 212 312 112 12 212 12   -  -
29043  18 118 218 318 118 18 218 18   -  -
29044  24 124 224 324 124 24 224 24   -  -
29045  30 130 230 330 130 30 230 30 330 30
29046  36 136 236 336 136 36 236 36   -  -
29047  42 142 242 342 142 42 242 42   -  -
29048  48 148 248 348 148 48 248 48   -  -
29049  54 154 254 354 154 54 254 54   -  -
29050  60 160 260 360 160 60 260 60 360 60
29051  66 166 266 366 166 66 266 66   -  -
29052  72 172 272 372 172 72 272 72   -  -
29053  78 178 278 378 178 78 278 78   -  -
29054  84 184 284 384 184 84 284 84   -  -
29055  90 190 290 390 190 90 290 90 390 90
29056}
29057do_execsql_test joinD-997 {
29058  SELECT t1.*, t2.*, t3.*, t4.*
29059  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29060  LEFT JOIN t3 ON t1.c=t3.c
29061  LEFT JOIN t4 ON t1.d=t4.d
29062  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
29063  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29064} {
29065  30 130 230 330 130 30 230 30 330 30
29066  60 160 260 360 160 60 260 60 360 60
29067  90 190 290 390 190 90 290 90 390 90
29068}
29069do_execsql_test joinD-998 {
29070  SELECT t1.*, t2.*, t3.*, t4.*
29071  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
29072  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29073  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29074  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29075} {
29076   0 100 200 300   -  -   -  -   -  -
29077   1 101 201 301   -  -   -  -   -  -
29078   2 102 202 302 102  2   -  -   -  -
29079   3 103 203 303   -  - 203  3   -  -
29080   4 104 204 304 104  4   -  -   -  -
29081   5 105 205 305   -  -   -  - 305  5
29082   6 106 206 306 106  6 206  6   -  -
29083   7 107 207 307   -  -   -  -   -  -
29084   8 108 208 308 108  8   -  -   -  -
29085   9 109 209 309   -  - 209  9   -  -
29086  10 110 210 310 110 10   -  - 310 10
29087  11 111 211 311   -  -   -  -   -  -
29088  12 112 212 312 112 12 212 12   -  -
29089  13 113 213 313   -  -   -  -   -  -
29090  14 114 214 314 114 14   -  -   -  -
29091  15 115 215 315   -  - 215 15 315 15
29092  16 116 216 316 116 16   -  -   -  -
29093  17 117 217 317   -  -   -  -   -  -
29094  18 118 218 318 118 18 218 18   -  -
29095  19 119 219 319   -  -   -  -   -  -
29096  20 120 220 320 120 20   -  - 320 20
29097  21 121 221 321   -  - 221 21   -  -
29098  22 122 222 322 122 22   -  -   -  -
29099  23 123 223 323   -  -   -  -   -  -
29100  24 124 224 324 124 24 224 24   -  -
29101  25 125 225 325   -  -   -  - 325 25
29102  26 126 226 326 126 26   -  -   -  -
29103  27 127 227 327   -  - 227 27   -  -
29104  28 128 228 328 128 28   -  -   -  -
29105  29 129 229 329   -  -   -  -   -  -
29106  30 130 230 330 130 30 230 30 330 30
29107  31 131 231 331   -  -   -  -   -  -
29108  32 132 232 332 132 32   -  -   -  -
29109  33 133 233 333   -  - 233 33   -  -
29110  34 134 234 334 134 34   -  -   -  -
29111  35 135 235 335   -  -   -  - 335 35
29112  36 136 236 336 136 36 236 36   -  -
29113  37 137 237 337   -  -   -  -   -  -
29114  38 138 238 338 138 38   -  -   -  -
29115  39 139 239 339   -  - 239 39   -  -
29116  40 140 240 340 140 40   -  - 340 40
29117  41 141 241 341   -  -   -  -   -  -
29118  42 142 242 342 142 42 242 42   -  -
29119  43 143 243 343   -  -   -  -   -  -
29120  44 144 244 344 144 44   -  -   -  -
29121  45 145 245 345   -  - 245 45 345 45
29122  46 146 246 346 146 46   -  -   -  -
29123  47 147 247 347   -  -   -  -   -  -
29124  48 148 248 348 148 48 248 48   -  -
29125  49 149 249 349   -  -   -  -   -  -
29126  50 150 250 350 150 50   -  - 350 50
29127  51 151 251 351   -  - 251 51   -  -
29128  52 152 252 352 152 52   -  -   -  -
29129  53 153 253 353   -  -   -  -   -  -
29130  54 154 254 354 154 54 254 54   -  -
29131  55 155 255 355   -  -   -  - 355 55
29132  56 156 256 356 156 56   -  -   -  -
29133  57 157 257 357   -  - 257 57   -  -
29134  58 158 258 358 158 58   -  -   -  -
29135  59 159 259 359   -  -   -  -   -  -
29136  60 160 260 360 160 60 260 60 360 60
29137  61 161 261 361   -  -   -  -   -  -
29138  62 162 262 362 162 62   -  -   -  -
29139  63 163 263 363   -  - 263 63   -  -
29140  64 164 264 364 164 64   -  -   -  -
29141  65 165 265 365   -  -   -  - 365 65
29142  66 166 266 366 166 66 266 66   -  -
29143  67 167 267 367   -  -   -  -   -  -
29144  68 168 268 368 168 68   -  -   -  -
29145  69 169 269 369   -  - 269 69   -  -
29146  70 170 270 370 170 70   -  - 370 70
29147  71 171 271 371   -  -   -  -   -  -
29148  72 172 272 372 172 72 272 72   -  -
29149  73 173 273 373   -  -   -  -   -  -
29150  74 174 274 374 174 74   -  -   -  -
29151  75 175 275 375   -  - 275 75 375 75
29152  76 176 276 376 176 76   -  -   -  -
29153  77 177 277 377   -  -   -  -   -  -
29154  78 178 278 378 178 78 278 78   -  -
29155  79 179 279 379   -  -   -  -   -  -
29156  80 180 280 380 180 80   -  - 380 80
29157  81 181 281 381   -  - 281 81   -  -
29158  82 182 282 382 182 82   -  -   -  -
29159  83 183 283 383   -  -   -  -   -  -
29160  84 184 284 384 184 84 284 84   -  -
29161  85 185 285 385   -  -   -  - 385 85
29162  86 186 286 386 186 86   -  -   -  -
29163  87 187 287 387   -  - 287 87   -  -
29164  88 188 288 388 188 88   -  -   -  -
29165  89 189 289 389   -  -   -  -   -  -
29166  90 190 290 390 190 90 290 90 390 90
29167  91 191 291 391   -  -   -  -   -  -
29168  92 192 292 392 192 92   -  -   -  -
29169  93 193 293 393   -  - 293 93   -  -
29170  94 194 294 394 194 94   -  -   -  -
29171  95 195 295 395   -  -   -  - 395 95
29172  96   - 296 396   -  -   -  -   -  -
29173  97 197   - 397   -  -   -  -   -  -
29174  98 198 298   -   -  -   -  -   -  -
29175  99   -   -   -   -  -   -  -   -  -
29176   -   -   -   - 100  0   -  -   -  -
29177}
29178do_execsql_test joinD-999 {
29179  SELECT t1.*, t2.*, t3.*, t4.*
29180  FROM t1 FULL JOIN t2 ON t2.x>0
29181  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29182  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29183  WHERE t1.b = t2.b
29184  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29185} {
29186   2 102 202 302 102  2   -  -   -  -
29187   4 104 204 304 104  4   -  -   -  -
29188   6 106 206 306 106  6 206  6   -  -
29189   8 108 208 308 108  8   -  -   -  -
29190  10 110 210 310 110 10   -  - 310 10
29191  12 112 212 312 112 12 212 12   -  -
29192  14 114 214 314 114 14   -  -   -  -
29193  16 116 216 316 116 16   -  -   -  -
29194  18 118 218 318 118 18 218 18   -  -
29195  20 120 220 320 120 20   -  - 320 20
29196  22 122 222 322 122 22   -  -   -  -
29197  24 124 224 324 124 24 224 24   -  -
29198  26 126 226 326 126 26   -  -   -  -
29199  28 128 228 328 128 28   -  -   -  -
29200  30 130 230 330 130 30 230 30 330 30
29201  32 132 232 332 132 32   -  -   -  -
29202  34 134 234 334 134 34   -  -   -  -
29203  36 136 236 336 136 36 236 36   -  -
29204  38 138 238 338 138 38   -  -   -  -
29205  40 140 240 340 140 40   -  - 340 40
29206  42 142 242 342 142 42 242 42   -  -
29207  44 144 244 344 144 44   -  -   -  -
29208  46 146 246 346 146 46   -  -   -  -
29209  48 148 248 348 148 48 248 48   -  -
29210  50 150 250 350 150 50   -  - 350 50
29211  52 152 252 352 152 52   -  -   -  -
29212  54 154 254 354 154 54 254 54   -  -
29213  56 156 256 356 156 56   -  -   -  -
29214  58 158 258 358 158 58   -  -   -  -
29215  60 160 260 360 160 60 260 60 360 60
29216  62 162 262 362 162 62   -  -   -  -
29217  64 164 264 364 164 64   -  -   -  -
29218  66 166 266 366 166 66 266 66   -  -
29219  68 168 268 368 168 68   -  -   -  -
29220  70 170 270 370 170 70   -  - 370 70
29221  72 172 272 372 172 72 272 72   -  -
29222  74 174 274 374 174 74   -  -   -  -
29223  76 176 276 376 176 76   -  -   -  -
29224  78 178 278 378 178 78 278 78   -  -
29225  80 180 280 380 180 80   -  - 380 80
29226  82 182 282 382 182 82   -  -   -  -
29227  84 184 284 384 184 84 284 84   -  -
29228  86 186 286 386 186 86   -  -   -  -
29229  88 188 288 388 188 88   -  -   -  -
29230  90 190 290 390 190 90 290 90 390 90
29231  92 192 292 392 192 92   -  -   -  -
29232  94 194 294 394 194 94   -  -   -  -
29233}
29234do_execsql_test joinD-1000 {
29235  SELECT t1.*, t2.*, t3.*, t4.*
29236  FROM t1 FULL JOIN t2 ON t2.x>0
29237  LEFT JOIN t3 ON t3.y>0
29238  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29239  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
29240  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29241} {
29242   6 106 206 306 106  6 206  6   -  -
29243  12 112 212 312 112 12 212 12   -  -
29244  18 118 218 318 118 18 218 18   -  -
29245  24 124 224 324 124 24 224 24   -  -
29246  30 130 230 330 130 30 230 30 330 30
29247  36 136 236 336 136 36 236 36   -  -
29248  42 142 242 342 142 42 242 42   -  -
29249  48 148 248 348 148 48 248 48   -  -
29250  54 154 254 354 154 54 254 54   -  -
29251  60 160 260 360 160 60 260 60 360 60
29252  66 166 266 366 166 66 266 66   -  -
29253  72 172 272 372 172 72 272 72   -  -
29254  78 178 278 378 178 78 278 78   -  -
29255  84 184 284 384 184 84 284 84   -  -
29256  90 190 290 390 190 90 290 90 390 90
29257}
29258do_execsql_test joinD-1001 {
29259  SELECT t1.*, t2.*, t3.*, t4.*
29260  FROM t1 FULL JOIN t2 ON t2.x>0
29261  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29262  LEFT JOIN t4 ON t4.z>0
29263  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
29264  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29265} {
29266  10 110 210 310 110 10   -  - 310 10
29267  20 120 220 320 120 20   -  - 320 20
29268  30 130 230 330 130 30 230 30 330 30
29269  40 140 240 340 140 40   -  - 340 40
29270  50 150 250 350 150 50   -  - 350 50
29271  60 160 260 360 160 60 260 60 360 60
29272  70 170 270 370 170 70   -  - 370 70
29273  80 180 280 380 180 80   -  - 380 80
29274  90 190 290 390 190 90 290 90 390 90
29275}
29276do_execsql_test joinD-1002 {
29277  SELECT t1.*, t2.*, t3.*, t4.*
29278  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29279  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
29280  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
29281  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29282} {
29283   0 100 200 300   -  -   -  -   -  -
29284   1 101 201 301   -  -   -  -   -  -
29285   2 102 202 302 102  2   -  -   -  -
29286   3 103 203 303   -  - 203  3   -  -
29287   4 104 204 304 104  4   -  -   -  -
29288   5 105 205 305   -  -   -  - 305  5
29289   6 106 206 306 106  6 206  6   -  -
29290   7 107 207 307   -  -   -  -   -  -
29291   8 108 208 308 108  8   -  -   -  -
29292   9 109 209 309   -  - 209  9   -  -
29293  10 110 210 310 110 10   -  - 310 10
29294  11 111 211 311   -  -   -  -   -  -
29295  12 112 212 312 112 12 212 12   -  -
29296  13 113 213 313   -  -   -  -   -  -
29297  14 114 214 314 114 14   -  -   -  -
29298  15 115 215 315   -  - 215 15 315 15
29299  16 116 216 316 116 16   -  -   -  -
29300  17 117 217 317   -  -   -  -   -  -
29301  18 118 218 318 118 18 218 18   -  -
29302  19 119 219 319   -  -   -  -   -  -
29303  20 120 220 320 120 20   -  - 320 20
29304  21 121 221 321   -  - 221 21   -  -
29305  22 122 222 322 122 22   -  -   -  -
29306  23 123 223 323   -  -   -  -   -  -
29307  24 124 224 324 124 24 224 24   -  -
29308  25 125 225 325   -  -   -  - 325 25
29309  26 126 226 326 126 26   -  -   -  -
29310  27 127 227 327   -  - 227 27   -  -
29311  28 128 228 328 128 28   -  -   -  -
29312  29 129 229 329   -  -   -  -   -  -
29313  30 130 230 330 130 30 230 30 330 30
29314  31 131 231 331   -  -   -  -   -  -
29315  32 132 232 332 132 32   -  -   -  -
29316  33 133 233 333   -  - 233 33   -  -
29317  34 134 234 334 134 34   -  -   -  -
29318  35 135 235 335   -  -   -  - 335 35
29319  36 136 236 336 136 36 236 36   -  -
29320  37 137 237 337   -  -   -  -   -  -
29321  38 138 238 338 138 38   -  -   -  -
29322  39 139 239 339   -  - 239 39   -  -
29323  40 140 240 340 140 40   -  - 340 40
29324  41 141 241 341   -  -   -  -   -  -
29325  42 142 242 342 142 42 242 42   -  -
29326  43 143 243 343   -  -   -  -   -  -
29327  44 144 244 344 144 44   -  -   -  -
29328  45 145 245 345   -  - 245 45 345 45
29329  46 146 246 346 146 46   -  -   -  -
29330  47 147 247 347   -  -   -  -   -  -
29331  48 148 248 348 148 48 248 48   -  -
29332  49 149 249 349   -  -   -  -   -  -
29333  50 150 250 350 150 50   -  - 350 50
29334  51 151 251 351   -  - 251 51   -  -
29335  52 152 252 352 152 52   -  -   -  -
29336  53 153 253 353   -  -   -  -   -  -
29337  54 154 254 354 154 54 254 54   -  -
29338  55 155 255 355   -  -   -  - 355 55
29339  56 156 256 356 156 56   -  -   -  -
29340  57 157 257 357   -  - 257 57   -  -
29341  58 158 258 358 158 58   -  -   -  -
29342  59 159 259 359   -  -   -  -   -  -
29343  60 160 260 360 160 60 260 60 360 60
29344  61 161 261 361   -  -   -  -   -  -
29345  62 162 262 362 162 62   -  -   -  -
29346  63 163 263 363   -  - 263 63   -  -
29347  64 164 264 364 164 64   -  -   -  -
29348  65 165 265 365   -  -   -  - 365 65
29349  66 166 266 366 166 66 266 66   -  -
29350  67 167 267 367   -  -   -  -   -  -
29351  68 168 268 368 168 68   -  -   -  -
29352  69 169 269 369   -  - 269 69   -  -
29353  70 170 270 370 170 70   -  - 370 70
29354  71 171 271 371   -  -   -  -   -  -
29355  72 172 272 372 172 72 272 72   -  -
29356  73 173 273 373   -  -   -  -   -  -
29357  74 174 274 374 174 74   -  -   -  -
29358  75 175 275 375   -  - 275 75 375 75
29359  76 176 276 376 176 76   -  -   -  -
29360  77 177 277 377   -  -   -  -   -  -
29361  78 178 278 378 178 78 278 78   -  -
29362  79 179 279 379   -  -   -  -   -  -
29363  80 180 280 380 180 80   -  - 380 80
29364  81 181 281 381   -  - 281 81   -  -
29365  82 182 282 382 182 82   -  -   -  -
29366  83 183 283 383   -  -   -  -   -  -
29367  84 184 284 384 184 84 284 84   -  -
29368  85 185 285 385   -  -   -  - 385 85
29369  86 186 286 386 186 86   -  -   -  -
29370  87 187 287 387   -  - 287 87   -  -
29371  88 188 288 388 188 88   -  -   -  -
29372  89 189 289 389   -  -   -  -   -  -
29373  90 190 290 390 190 90 290 90 390 90
29374  91 191 291 391   -  -   -  -   -  -
29375  92 192 292 392 192 92   -  -   -  -
29376  93 193 293 393   -  - 293 93   -  -
29377  94 194 294 394 194 94   -  -   -  -
29378  95 195 295 395   -  -   -  - 395 95
29379  96   - 296 396   -  -   -  -   -  -
29380  97 197   - 397   -  -   -  -   -  -
29381  98 198 298   -   -  -   -  -   -  -
29382  99   -   -   -   -  -   -  -   -  -
29383   -   -   -   - 100  0   -  -   -  -
29384}
29385do_execsql_test joinD-1003 {
29386  SELECT t1.*, t2.*, t3.*, t4.*
29387  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29388  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29389  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29390  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29391} {
29392   5 105 205 305   -  -   -  - 305  5
29393  10 110 210 310 110 10   -  - 310 10
29394  15 115 215 315   -  - 215 15 315 15
29395  20 120 220 320 120 20   -  - 320 20
29396  25 125 225 325   -  -   -  - 325 25
29397  30 130 230 330 130 30 230 30 330 30
29398  35 135 235 335   -  -   -  - 335 35
29399  40 140 240 340 140 40   -  - 340 40
29400  45 145 245 345   -  - 245 45 345 45
29401  50 150 250 350 150 50   -  - 350 50
29402  55 155 255 355   -  -   -  - 355 55
29403  60 160 260 360 160 60 260 60 360 60
29404  65 165 265 365   -  -   -  - 365 65
29405  70 170 270 370 170 70   -  - 370 70
29406  75 175 275 375   -  - 275 75 375 75
29407  80 180 280 380 180 80   -  - 380 80
29408  85 185 285 385   -  -   -  - 385 85
29409  90 190 290 390 190 90 290 90 390 90
29410  95 195 295 395   -  -   -  - 395 95
29411   -   -   -   -   -  -   -  - 300  0
29412}
29413do_execsql_test joinD-1004 {
29414  SELECT t1.*, t2.*, t3.*, t4.*
29415  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29416  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29417  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29418  WHERE t2.x>0
29419  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29420} {
29421  10 110 210 310 110 10   -  - 310 10
29422  20 120 220 320 120 20   -  - 320 20
29423  30 130 230 330 130 30 230 30 330 30
29424  40 140 240 340 140 40   -  - 340 40
29425  50 150 250 350 150 50   -  - 350 50
29426  60 160 260 360 160 60 260 60 360 60
29427  70 170 270 370 170 70   -  - 370 70
29428  80 180 280 380 180 80   -  - 380 80
29429  90 190 290 390 190 90 290 90 390 90
29430}
29431do_execsql_test joinD-1005 {
29432  SELECT t1.*, t2.*, t3.*, t4.*
29433  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29434  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29435  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29436  WHERE (t2.x>0 OR t2.x IS NULL)
29437  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29438} {
29439   5 105 205 305   -  -   -  - 305  5
29440  10 110 210 310 110 10   -  - 310 10
29441  15 115 215 315   -  - 215 15 315 15
29442  20 120 220 320 120 20   -  - 320 20
29443  25 125 225 325   -  -   -  - 325 25
29444  30 130 230 330 130 30 230 30 330 30
29445  35 135 235 335   -  -   -  - 335 35
29446  40 140 240 340 140 40   -  - 340 40
29447  45 145 245 345   -  - 245 45 345 45
29448  50 150 250 350 150 50   -  - 350 50
29449  55 155 255 355   -  -   -  - 355 55
29450  60 160 260 360 160 60 260 60 360 60
29451  65 165 265 365   -  -   -  - 365 65
29452  70 170 270 370 170 70   -  - 370 70
29453  75 175 275 375   -  - 275 75 375 75
29454  80 180 280 380 180 80   -  - 380 80
29455  85 185 285 385   -  -   -  - 385 85
29456  90 190 290 390 190 90 290 90 390 90
29457  95 195 295 395   -  -   -  - 395 95
29458   -   -   -   -   -  -   -  - 300  0
29459}
29460do_execsql_test joinD-1006 {
29461  SELECT t1.*, t2.*, t3.*, t4.*
29462  FROM t1 FULL JOIN t2 ON true
29463  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29464  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29465  WHERE t1.b=t2.b AND t2.x>0
29466  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29467} {
29468  10 110 210 310 110 10   -  - 310 10
29469  20 120 220 320 120 20   -  - 320 20
29470  30 130 230 330 130 30 230 30 330 30
29471  40 140 240 340 140 40   -  - 340 40
29472  50 150 250 350 150 50   -  - 350 50
29473  60 160 260 360 160 60 260 60 360 60
29474  70 170 270 370 170 70   -  - 370 70
29475  80 180 280 380 180 80   -  - 380 80
29476  90 190 290 390 190 90 290 90 390 90
29477}
29478do_execsql_test joinD-1007 {
29479  SELECT t1.*, t2.*, t3.*, t4.*
29480  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29481  LEFT JOIN t3 ON t1.c=t3.c
29482  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29483  WHERE t3.y>0
29484  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29485} {
29486  15 115 215 315   -  - 215 15 315 15
29487  30 130 230 330 130 30 230 30 330 30
29488  45 145 245 345   -  - 245 45 345 45
29489  60 160 260 360 160 60 260 60 360 60
29490  75 175 275 375   -  - 275 75 375 75
29491  90 190 290 390 190 90 290 90 390 90
29492}
29493do_execsql_test joinD-1008 {
29494  SELECT t1.*, t2.*, t3.*, t4.*
29495  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29496  LEFT JOIN t3 ON t1.c=t3.c
29497  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29498  WHERE t3.y>0 OR t3.y IS NULL
29499  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29500} {
29501   5 105 205 305   -  -   -  - 305  5
29502  10 110 210 310 110 10   -  - 310 10
29503  15 115 215 315   -  - 215 15 315 15
29504  20 120 220 320 120 20   -  - 320 20
29505  25 125 225 325   -  -   -  - 325 25
29506  30 130 230 330 130 30 230 30 330 30
29507  35 135 235 335   -  -   -  - 335 35
29508  40 140 240 340 140 40   -  - 340 40
29509  45 145 245 345   -  - 245 45 345 45
29510  50 150 250 350 150 50   -  - 350 50
29511  55 155 255 355   -  -   -  - 355 55
29512  60 160 260 360 160 60 260 60 360 60
29513  65 165 265 365   -  -   -  - 365 65
29514  70 170 270 370 170 70   -  - 370 70
29515  75 175 275 375   -  - 275 75 375 75
29516  80 180 280 380 180 80   -  - 380 80
29517  85 185 285 385   -  -   -  - 385 85
29518  90 190 290 390 190 90 290 90 390 90
29519  95 195 295 395   -  -   -  - 395 95
29520   -   -   -   -   -  -   -  - 300  0
29521}
29522do_execsql_test joinD-1009 {
29523  SELECT t1.*, t2.*, t3.*, t4.*
29524  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29525  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29526  RIGHT JOIN t4 ON t1.d=t4.d
29527  WHERE t4.z>0
29528  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29529} {
29530   5 105 205 305   -  -   -  - 305  5
29531  10 110 210 310 110 10   -  - 310 10
29532  15 115 215 315   -  - 215 15 315 15
29533  20 120 220 320 120 20   -  - 320 20
29534  25 125 225 325   -  -   -  - 325 25
29535  30 130 230 330 130 30 230 30 330 30
29536  35 135 235 335   -  -   -  - 335 35
29537  40 140 240 340 140 40   -  - 340 40
29538  45 145 245 345   -  - 245 45 345 45
29539  50 150 250 350 150 50   -  - 350 50
29540  55 155 255 355   -  -   -  - 355 55
29541  60 160 260 360 160 60 260 60 360 60
29542  65 165 265 365   -  -   -  - 365 65
29543  70 170 270 370 170 70   -  - 370 70
29544  75 175 275 375   -  - 275 75 375 75
29545  80 180 280 380 180 80   -  - 380 80
29546  85 185 285 385   -  -   -  - 385 85
29547  90 190 290 390 190 90 290 90 390 90
29548  95 195 295 395   -  -   -  - 395 95
29549}
29550do_execsql_test joinD-1010 {
29551  SELECT t1.*, t2.*, t3.*, t4.*
29552  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29553  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29554  RIGHT JOIN t4 ON t1.d=t4.d
29555  WHERE t4.z IS NULL OR t4.z>0
29556  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29557} {
29558   5 105 205 305   -  -   -  - 305  5
29559  10 110 210 310 110 10   -  - 310 10
29560  15 115 215 315   -  - 215 15 315 15
29561  20 120 220 320 120 20   -  - 320 20
29562  25 125 225 325   -  -   -  - 325 25
29563  30 130 230 330 130 30 230 30 330 30
29564  35 135 235 335   -  -   -  - 335 35
29565  40 140 240 340 140 40   -  - 340 40
29566  45 145 245 345   -  - 245 45 345 45
29567  50 150 250 350 150 50   -  - 350 50
29568  55 155 255 355   -  -   -  - 355 55
29569  60 160 260 360 160 60 260 60 360 60
29570  65 165 265 365   -  -   -  - 365 65
29571  70 170 270 370 170 70   -  - 370 70
29572  75 175 275 375   -  - 275 75 375 75
29573  80 180 280 380 180 80   -  - 380 80
29574  85 185 285 385   -  -   -  - 385 85
29575  90 190 290 390 190 90 290 90 390 90
29576  95 195 295 395   -  -   -  - 395 95
29577}
29578do_execsql_test joinD-1011 {
29579  SELECT t1.*, t2.*, t3.*, t4.*
29580  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29581  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29582  RIGHT JOIN t4 ON t1.d=t4.d
29583  WHERE t2.x>0 AND t4.z>0
29584  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29585} {
29586  10 110 210 310 110 10   -  - 310 10
29587  20 120 220 320 120 20   -  - 320 20
29588  30 130 230 330 130 30 230 30 330 30
29589  40 140 240 340 140 40   -  - 340 40
29590  50 150 250 350 150 50   -  - 350 50
29591  60 160 260 360 160 60 260 60 360 60
29592  70 170 270 370 170 70   -  - 370 70
29593  80 180 280 380 180 80   -  - 380 80
29594  90 190 290 390 190 90 290 90 390 90
29595}
29596do_execsql_test joinD-1012 {
29597  SELECT t1.*, t2.*, t3.*, t4.*
29598  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29599  LEFT JOIN t3 ON t1.c=t3.c
29600  RIGHT JOIN t4 ON t1.d=t4.d
29601  WHERE t4.z>0 AND t3.y>0
29602  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29603} {
29604  15 115 215 315   -  - 215 15 315 15
29605  30 130 230 330 130 30 230 30 330 30
29606  45 145 245 345   -  - 245 45 345 45
29607  60 160 260 360 160 60 260 60 360 60
29608  75 175 275 375   -  - 275 75 375 75
29609  90 190 290 390 190 90 290 90 390 90
29610}
29611do_execsql_test joinD-1013 {
29612  SELECT t1.*, t2.*, t3.*, t4.*
29613  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29614  LEFT JOIN t3 ON t1.c=t3.c
29615  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29616  WHERE t2.x>0 AND t3.y>0
29617  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29618} {
29619  30 130 230 330 130 30 230 30 330 30
29620  60 160 260 360 160 60 260 60 360 60
29621  90 190 290 390 190 90 290 90 390 90
29622}
29623do_execsql_test joinD-1014 {
29624  SELECT t1.*, t2.*, t3.*, t4.*
29625  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29626  LEFT JOIN t3 ON t1.c=t3.c
29627  RIGHT JOIN t4 ON t1.d=t4.d
29628  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
29629  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29630} {
29631  30 130 230 330 130 30 230 30 330 30
29632  60 160 260 360 160 60 260 60 360 60
29633  90 190 290 390 190 90 290 90 390 90
29634}
29635do_execsql_test joinD-1015 {
29636  SELECT t1.*, t2.*, t3.*, t4.*
29637  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
29638  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29639  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29640  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29641} {
29642   5 105 205 305   -  -   -  - 305  5
29643  10 110 210 310 110 10   -  - 310 10
29644  15 115 215 315   -  - 215 15 315 15
29645  20 120 220 320 120 20   -  - 320 20
29646  25 125 225 325   -  -   -  - 325 25
29647  30 130 230 330 130 30 230 30 330 30
29648  35 135 235 335   -  -   -  - 335 35
29649  40 140 240 340 140 40   -  - 340 40
29650  45 145 245 345   -  - 245 45 345 45
29651  50 150 250 350 150 50   -  - 350 50
29652  55 155 255 355   -  -   -  - 355 55
29653  60 160 260 360 160 60 260 60 360 60
29654  65 165 265 365   -  -   -  - 365 65
29655  70 170 270 370 170 70   -  - 370 70
29656  75 175 275 375   -  - 275 75 375 75
29657  80 180 280 380 180 80   -  - 380 80
29658  85 185 285 385   -  -   -  - 385 85
29659  90 190 290 390 190 90 290 90 390 90
29660  95 195 295 395   -  -   -  - 395 95
29661   -   -   -   -   -  -   -  - 300  0
29662}
29663do_execsql_test joinD-1016 {
29664  SELECT t1.*, t2.*, t3.*, t4.*
29665  FROM t1 FULL JOIN t2 ON t2.x>0
29666  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29667  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29668  WHERE t1.b = t2.b
29669  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29670} {
29671  10 110 210 310 110 10   -  - 310 10
29672  20 120 220 320 120 20   -  - 320 20
29673  30 130 230 330 130 30 230 30 330 30
29674  40 140 240 340 140 40   -  - 340 40
29675  50 150 250 350 150 50   -  - 350 50
29676  60 160 260 360 160 60 260 60 360 60
29677  70 170 270 370 170 70   -  - 370 70
29678  80 180 280 380 180 80   -  - 380 80
29679  90 190 290 390 190 90 290 90 390 90
29680}
29681do_execsql_test joinD-1017 {
29682  SELECT t1.*, t2.*, t3.*, t4.*
29683  FROM t1 FULL JOIN t2 ON t2.x>0
29684  LEFT JOIN t3 ON t3.y>0
29685  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
29686  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
29687  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29688} {
29689  30 130 230 330 130 30 230 30 330 30
29690  60 160 260 360 160 60 260 60 360 60
29691  90 190 290 390 190 90 290 90 390 90
29692}
29693do_execsql_test joinD-1018 {
29694  SELECT t1.*, t2.*, t3.*, t4.*
29695  FROM t1 FULL JOIN t2 ON t2.x>0
29696  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
29697  RIGHT JOIN t4 ON t4.z>0
29698  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
29699  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29700} {
29701  10 110 210 310 110 10   -  - 310 10
29702  20 120 220 320 120 20   -  - 320 20
29703  30 130 230 330 130 30 230 30 330 30
29704  40 140 240 340 140 40   -  - 340 40
29705  50 150 250 350 150 50   -  - 350 50
29706  60 160 260 360 160 60 260 60 360 60
29707  70 170 270 370 170 70   -  - 370 70
29708  80 180 280 380 180 80   -  - 380 80
29709  90 190 290 390 190 90 290 90 390 90
29710}
29711do_execsql_test joinD-1019 {
29712  SELECT t1.*, t2.*, t3.*, t4.*
29713  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29714  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
29715  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
29716  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29717} {
29718   5 105 205 305   -  -   -  - 305  5
29719  10 110 210 310 110 10   -  - 310 10
29720  15 115 215 315   -  - 215 15 315 15
29721  20 120 220 320 120 20   -  - 320 20
29722  25 125 225 325   -  -   -  - 325 25
29723  30 130 230 330 130 30 230 30 330 30
29724  35 135 235 335   -  -   -  - 335 35
29725  40 140 240 340 140 40   -  - 340 40
29726  45 145 245 345   -  - 245 45 345 45
29727  50 150 250 350 150 50   -  - 350 50
29728  55 155 255 355   -  -   -  - 355 55
29729  60 160 260 360 160 60 260 60 360 60
29730  65 165 265 365   -  -   -  - 365 65
29731  70 170 270 370 170 70   -  - 370 70
29732  75 175 275 375   -  - 275 75 375 75
29733  80 180 280 380 180 80   -  - 380 80
29734  85 185 285 385   -  -   -  - 385 85
29735  90 190 290 390 190 90 290 90 390 90
29736  95 195 295 395   -  -   -  - 395 95
29737   -   -   -   -   -  -   -  - 300  0
29738}
29739do_execsql_test joinD-1020 {
29740  SELECT t1.*, t2.*, t3.*, t4.*
29741  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
29742  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29743  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
29744  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29745} {
29746   0 100 200 300   -  -   -  -   -  -
29747   1 101 201 301   -  -   -  -   -  -
29748   2 102 202 302 102  2   -  -   -  -
29749   3 103 203 303   -  - 203  3   -  -
29750   4 104 204 304 104  4   -  -   -  -
29751   5 105 205 305   -  -   -  - 305  5
29752   6 106 206 306 106  6 206  6   -  -
29753   7 107 207 307   -  -   -  -   -  -
29754   8 108 208 308 108  8   -  -   -  -
29755   9 109 209 309   -  - 209  9   -  -
29756  10 110 210 310 110 10   -  - 310 10
29757  11 111 211 311   -  -   -  -   -  -
29758  12 112 212 312 112 12 212 12   -  -
29759  13 113 213 313   -  -   -  -   -  -
29760  14 114 214 314 114 14   -  -   -  -
29761  15 115 215 315   -  - 215 15 315 15
29762  16 116 216 316 116 16   -  -   -  -
29763  17 117 217 317   -  -   -  -   -  -
29764  18 118 218 318 118 18 218 18   -  -
29765  19 119 219 319   -  -   -  -   -  -
29766  20 120 220 320 120 20   -  - 320 20
29767  21 121 221 321   -  - 221 21   -  -
29768  22 122 222 322 122 22   -  -   -  -
29769  23 123 223 323   -  -   -  -   -  -
29770  24 124 224 324 124 24 224 24   -  -
29771  25 125 225 325   -  -   -  - 325 25
29772  26 126 226 326 126 26   -  -   -  -
29773  27 127 227 327   -  - 227 27   -  -
29774  28 128 228 328 128 28   -  -   -  -
29775  29 129 229 329   -  -   -  -   -  -
29776  30 130 230 330 130 30 230 30 330 30
29777  31 131 231 331   -  -   -  -   -  -
29778  32 132 232 332 132 32   -  -   -  -
29779  33 133 233 333   -  - 233 33   -  -
29780  34 134 234 334 134 34   -  -   -  -
29781  35 135 235 335   -  -   -  - 335 35
29782  36 136 236 336 136 36 236 36   -  -
29783  37 137 237 337   -  -   -  -   -  -
29784  38 138 238 338 138 38   -  -   -  -
29785  39 139 239 339   -  - 239 39   -  -
29786  40 140 240 340 140 40   -  - 340 40
29787  41 141 241 341   -  -   -  -   -  -
29788  42 142 242 342 142 42 242 42   -  -
29789  43 143 243 343   -  -   -  -   -  -
29790  44 144 244 344 144 44   -  -   -  -
29791  45 145 245 345   -  - 245 45 345 45
29792  46 146 246 346 146 46   -  -   -  -
29793  47 147 247 347   -  -   -  -   -  -
29794  48 148 248 348 148 48 248 48   -  -
29795  49 149 249 349   -  -   -  -   -  -
29796  50 150 250 350 150 50   -  - 350 50
29797  51 151 251 351   -  - 251 51   -  -
29798  52 152 252 352 152 52   -  -   -  -
29799  53 153 253 353   -  -   -  -   -  -
29800  54 154 254 354 154 54 254 54   -  -
29801  55 155 255 355   -  -   -  - 355 55
29802  56 156 256 356 156 56   -  -   -  -
29803  57 157 257 357   -  - 257 57   -  -
29804  58 158 258 358 158 58   -  -   -  -
29805  59 159 259 359   -  -   -  -   -  -
29806  60 160 260 360 160 60 260 60 360 60
29807  61 161 261 361   -  -   -  -   -  -
29808  62 162 262 362 162 62   -  -   -  -
29809  63 163 263 363   -  - 263 63   -  -
29810  64 164 264 364 164 64   -  -   -  -
29811  65 165 265 365   -  -   -  - 365 65
29812  66 166 266 366 166 66 266 66   -  -
29813  67 167 267 367   -  -   -  -   -  -
29814  68 168 268 368 168 68   -  -   -  -
29815  69 169 269 369   -  - 269 69   -  -
29816  70 170 270 370 170 70   -  - 370 70
29817  71 171 271 371   -  -   -  -   -  -
29818  72 172 272 372 172 72 272 72   -  -
29819  73 173 273 373   -  -   -  -   -  -
29820  74 174 274 374 174 74   -  -   -  -
29821  75 175 275 375   -  - 275 75 375 75
29822  76 176 276 376 176 76   -  -   -  -
29823  77 177 277 377   -  -   -  -   -  -
29824  78 178 278 378 178 78 278 78   -  -
29825  79 179 279 379   -  -   -  -   -  -
29826  80 180 280 380 180 80   -  - 380 80
29827  81 181 281 381   -  - 281 81   -  -
29828  82 182 282 382 182 82   -  -   -  -
29829  83 183 283 383   -  -   -  -   -  -
29830  84 184 284 384 184 84 284 84   -  -
29831  85 185 285 385   -  -   -  - 385 85
29832  86 186 286 386 186 86   -  -   -  -
29833  87 187 287 387   -  - 287 87   -  -
29834  88 188 288 388 188 88   -  -   -  -
29835  89 189 289 389   -  -   -  -   -  -
29836  90 190 290 390 190 90 290 90 390 90
29837  91 191 291 391   -  -   -  -   -  -
29838  92 192 292 392 192 92   -  -   -  -
29839  93 193 293 393   -  - 293 93   -  -
29840  94 194 294 394 194 94   -  -   -  -
29841  95 195 295 395   -  -   -  - 395 95
29842  96   - 296 396   -  -   -  -   -  -
29843  97 197   - 397   -  -   -  -   -  -
29844  98 198 298   -   -  -   -  -   -  -
29845  99   -   -   -   -  -   -  -   -  -
29846   -   -   -   - 100  0   -  -   -  -
29847   -   -   -   -   -  -   -  - 300  0
29848}
29849do_execsql_test joinD-1021 {
29850  SELECT t1.*, t2.*, t3.*, t4.*
29851  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29852  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29853  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
29854  WHERE t2.x>0
29855  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29856} {
29857   2 102 202 302 102  2   -  -   -  -
29858   4 104 204 304 104  4   -  -   -  -
29859   6 106 206 306 106  6 206  6   -  -
29860   8 108 208 308 108  8   -  -   -  -
29861  10 110 210 310 110 10   -  - 310 10
29862  12 112 212 312 112 12 212 12   -  -
29863  14 114 214 314 114 14   -  -   -  -
29864  16 116 216 316 116 16   -  -   -  -
29865  18 118 218 318 118 18 218 18   -  -
29866  20 120 220 320 120 20   -  - 320 20
29867  22 122 222 322 122 22   -  -   -  -
29868  24 124 224 324 124 24 224 24   -  -
29869  26 126 226 326 126 26   -  -   -  -
29870  28 128 228 328 128 28   -  -   -  -
29871  30 130 230 330 130 30 230 30 330 30
29872  32 132 232 332 132 32   -  -   -  -
29873  34 134 234 334 134 34   -  -   -  -
29874  36 136 236 336 136 36 236 36   -  -
29875  38 138 238 338 138 38   -  -   -  -
29876  40 140 240 340 140 40   -  - 340 40
29877  42 142 242 342 142 42 242 42   -  -
29878  44 144 244 344 144 44   -  -   -  -
29879  46 146 246 346 146 46   -  -   -  -
29880  48 148 248 348 148 48 248 48   -  -
29881  50 150 250 350 150 50   -  - 350 50
29882  52 152 252 352 152 52   -  -   -  -
29883  54 154 254 354 154 54 254 54   -  -
29884  56 156 256 356 156 56   -  -   -  -
29885  58 158 258 358 158 58   -  -   -  -
29886  60 160 260 360 160 60 260 60 360 60
29887  62 162 262 362 162 62   -  -   -  -
29888  64 164 264 364 164 64   -  -   -  -
29889  66 166 266 366 166 66 266 66   -  -
29890  68 168 268 368 168 68   -  -   -  -
29891  70 170 270 370 170 70   -  - 370 70
29892  72 172 272 372 172 72 272 72   -  -
29893  74 174 274 374 174 74   -  -   -  -
29894  76 176 276 376 176 76   -  -   -  -
29895  78 178 278 378 178 78 278 78   -  -
29896  80 180 280 380 180 80   -  - 380 80
29897  82 182 282 382 182 82   -  -   -  -
29898  84 184 284 384 184 84 284 84   -  -
29899  86 186 286 386 186 86   -  -   -  -
29900  88 188 288 388 188 88   -  -   -  -
29901  90 190 290 390 190 90 290 90 390 90
29902  92 192 292 392 192 92   -  -   -  -
29903  94 194 294 394 194 94   -  -   -  -
29904}
29905do_execsql_test joinD-1022 {
29906  SELECT t1.*, t2.*, t3.*, t4.*
29907  FROM t1 FULL JOIN t2 ON t1.b=t2.b
29908  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
29909  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
29910  WHERE (t2.x>0 OR t2.x IS NULL)
29911  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
29912} {
29913   1 101 201 301   -  -   -  -   -  -
29914   2 102 202 302 102  2   -  -   -  -
29915   3 103 203 303   -  - 203  3   -  -
29916   4 104 204 304 104  4   -  -   -  -
29917   5 105 205 305   -  -   -  - 305  5
29918   6 106 206 306 106  6 206  6   -  -
29919   7 107 207 307   -  -   -  -   -  -
29920   8 108 208 308 108  8   -  -   -  -
29921   9 109 209 309   -  - 209  9   -  -
29922  10 110 210 310 110 10   -  - 310 10
29923  11 111 211 311   -  -   -  -   -  -
29924  12 112 212 312 112 12 212 12   -  -
29925  13 113 213 313   -  -   -  -   -  -
29926  14 114 214 314 114 14   -  -   -  -
29927  15 115 215 315   -  - 215 15 315 15
29928  16 116 216 316 116 16   -  -   -  -
29929  17 117 217 317   -  -   -  -   -  -
29930  18 118 218 318 118 18 218 18   -  -
29931  19 119 219 319   -  -   -  -   -  -
29932  20 120 220 320 120 20   -  - 320 20
29933  21 121 221 321   -  - 221 21   -  -
29934  22 122 222 322 122 22   -  -   -  -
29935  23 123 223 323   -  -   -  -   -  -
29936  24 124 224 324 124 24 224 24   -  -
29937  25 125 225 325   -  -   -  - 325 25
29938  26 126 226 326 126 26   -  -   -  -
29939  27 127 227 327   -  - 227 27   -  -
29940  28 128 228 328 128 28   -  -   -  -
29941  29 129 229 329   -  -   -  -   -  -
29942  30 130 230 330 130 30 230 30 330 30
29943  31 131 231 331   -  -   -  -   -  -
29944  32 132 232 332 132 32   -  -   -  -
29945  33 133 233 333   -  - 233 33   -  -
29946  34 134 234 334 134 34   -  -   -  -
29947  35 135 235 335   -  -   -  - 335 35
29948  36 136 236 336 136 36 236 36   -  -
29949  37 137 237 337   -  -   -  -   -  -
29950  38 138 238 338 138 38   -  -   -  -
29951  39 139 239 339   -  - 239 39   -  -
29952  40 140 240 340 140 40   -  - 340 40
29953  41 141 241 341   -  -   -  -   -  -
29954  42 142 242 342 142 42 242 42   -  -
29955  43 143 243 343   -  -   -  -   -  -
29956  44 144 244 344 144 44   -  -   -  -
29957  45 145 245 345   -  - 245 45 345 45
29958  46 146 246 346 146 46   -  -   -  -
29959  47 147 247 347   -  -   -  -   -  -
29960  48 148 248 348 148 48 248 48   -  -
29961  49 149 249 349   -  -   -  -   -  -
29962  50 150 250 350 150 50   -  - 350 50
29963  51 151 251 351   -  - 251 51   -  -
29964  52 152 252 352 152 52   -  -   -  -
29965  53 153 253 353   -  -   -  -   -  -
29966  54 154 254 354 154 54 254 54   -  -
29967  55 155 255 355   -  -   -  - 355 55
29968  56 156 256 356 156 56   -  -   -  -
29969  57 157 257 357   -  - 257 57   -  -
29970  58 158 258 358 158 58   -  -   -  -
29971  59 159 259 359   -  -   -  -   -  -
29972  60 160 260 360 160 60 260 60 360 60
29973  61 161 261 361   -  -   -  -   -  -
29974  62 162 262 362 162 62   -  -   -  -
29975  63 163 263 363   -  - 263 63   -  -
29976  64 164 264 364 164 64   -  -   -  -
29977  65 165 265 365   -  -   -  - 365 65
29978  66 166 266 366 166 66 266 66   -  -
29979  67 167 267 367   -  -   -  -   -  -
29980  68 168 268 368 168 68   -  -   -  -
29981  69 169 269 369   -  - 269 69   -  -
29982  70 170 270 370 170 70   -  - 370 70
29983  71 171 271 371   -  -   -  -   -  -
29984  72 172 272 372 172 72 272 72   -  -
29985  73 173 273 373   -  -   -  -   -  -
29986  74 174 274 374 174 74   -  -   -  -
29987  75 175 275 375   -  - 275 75 375 75
29988  76 176 276 376 176 76   -  -   -  -
29989  77 177 277 377   -  -   -  -   -  -
29990  78 178 278 378 178 78 278 78   -  -
29991  79 179 279 379   -  -   -  -   -  -
29992  80 180 280 380 180 80   -  - 380 80
29993  81 181 281 381   -  - 281 81   -  -
29994  82 182 282 382 182 82   -  -   -  -
29995  83 183 283 383   -  -   -  -   -  -
29996  84 184 284 384 184 84 284 84   -  -
29997  85 185 285 385   -  -   -  - 385 85
29998  86 186 286 386 186 86   -  -   -  -
29999  87 187 287 387   -  - 287 87   -  -
30000  88 188 288 388 188 88   -  -   -  -
30001  89 189 289 389   -  -   -  -   -  -
30002  90 190 290 390 190 90 290 90 390 90
30003  91 191 291 391   -  -   -  -   -  -
30004  92 192 292 392 192 92   -  -   -  -
30005  93 193 293 393   -  - 293 93   -  -
30006  94 194 294 394 194 94   -  -   -  -
30007  95 195 295 395   -  -   -  - 395 95
30008  96   - 296 396   -  -   -  -   -  -
30009  97 197   - 397   -  -   -  -   -  -
30010  98 198 298   -   -  -   -  -   -  -
30011  99   -   -   -   -  -   -  -   -  -
30012   -   -   -   -   -  -   -  - 300  0
30013}
30014do_execsql_test joinD-1023 {
30015  SELECT t1.*, t2.*, t3.*, t4.*
30016  FROM t1 FULL JOIN t2 ON true
30017  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30018  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30019  WHERE t1.b=t2.b AND t2.x>0
30020  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30021} {
30022   2 102 202 302 102  2   -  -   -  -
30023   4 104 204 304 104  4   -  -   -  -
30024   6 106 206 306 106  6 206  6   -  -
30025   8 108 208 308 108  8   -  -   -  -
30026  10 110 210 310 110 10   -  - 310 10
30027  12 112 212 312 112 12 212 12   -  -
30028  14 114 214 314 114 14   -  -   -  -
30029  16 116 216 316 116 16   -  -   -  -
30030  18 118 218 318 118 18 218 18   -  -
30031  20 120 220 320 120 20   -  - 320 20
30032  22 122 222 322 122 22   -  -   -  -
30033  24 124 224 324 124 24 224 24   -  -
30034  26 126 226 326 126 26   -  -   -  -
30035  28 128 228 328 128 28   -  -   -  -
30036  30 130 230 330 130 30 230 30 330 30
30037  32 132 232 332 132 32   -  -   -  -
30038  34 134 234 334 134 34   -  -   -  -
30039  36 136 236 336 136 36 236 36   -  -
30040  38 138 238 338 138 38   -  -   -  -
30041  40 140 240 340 140 40   -  - 340 40
30042  42 142 242 342 142 42 242 42   -  -
30043  44 144 244 344 144 44   -  -   -  -
30044  46 146 246 346 146 46   -  -   -  -
30045  48 148 248 348 148 48 248 48   -  -
30046  50 150 250 350 150 50   -  - 350 50
30047  52 152 252 352 152 52   -  -   -  -
30048  54 154 254 354 154 54 254 54   -  -
30049  56 156 256 356 156 56   -  -   -  -
30050  58 158 258 358 158 58   -  -   -  -
30051  60 160 260 360 160 60 260 60 360 60
30052  62 162 262 362 162 62   -  -   -  -
30053  64 164 264 364 164 64   -  -   -  -
30054  66 166 266 366 166 66 266 66   -  -
30055  68 168 268 368 168 68   -  -   -  -
30056  70 170 270 370 170 70   -  - 370 70
30057  72 172 272 372 172 72 272 72   -  -
30058  74 174 274 374 174 74   -  -   -  -
30059  76 176 276 376 176 76   -  -   -  -
30060  78 178 278 378 178 78 278 78   -  -
30061  80 180 280 380 180 80   -  - 380 80
30062  82 182 282 382 182 82   -  -   -  -
30063  84 184 284 384 184 84 284 84   -  -
30064  86 186 286 386 186 86   -  -   -  -
30065  88 188 288 388 188 88   -  -   -  -
30066  90 190 290 390 190 90 290 90 390 90
30067  92 192 292 392 192 92   -  -   -  -
30068  94 194 294 394 194 94   -  -   -  -
30069}
30070do_execsql_test joinD-1024 {
30071  SELECT t1.*, t2.*, t3.*, t4.*
30072  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30073  LEFT JOIN t3 ON t1.c=t3.c
30074  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30075  WHERE t3.y>0
30076  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30077} {
30078   3 103 203 303   -  - 203  3   -  -
30079   6 106 206 306 106  6 206  6   -  -
30080   9 109 209 309   -  - 209  9   -  -
30081  12 112 212 312 112 12 212 12   -  -
30082  15 115 215 315   -  - 215 15 315 15
30083  18 118 218 318 118 18 218 18   -  -
30084  21 121 221 321   -  - 221 21   -  -
30085  24 124 224 324 124 24 224 24   -  -
30086  27 127 227 327   -  - 227 27   -  -
30087  30 130 230 330 130 30 230 30 330 30
30088  33 133 233 333   -  - 233 33   -  -
30089  36 136 236 336 136 36 236 36   -  -
30090  39 139 239 339   -  - 239 39   -  -
30091  42 142 242 342 142 42 242 42   -  -
30092  45 145 245 345   -  - 245 45 345 45
30093  48 148 248 348 148 48 248 48   -  -
30094  51 151 251 351   -  - 251 51   -  -
30095  54 154 254 354 154 54 254 54   -  -
30096  57 157 257 357   -  - 257 57   -  -
30097  60 160 260 360 160 60 260 60 360 60
30098  63 163 263 363   -  - 263 63   -  -
30099  66 166 266 366 166 66 266 66   -  -
30100  69 169 269 369   -  - 269 69   -  -
30101  72 172 272 372 172 72 272 72   -  -
30102  75 175 275 375   -  - 275 75 375 75
30103  78 178 278 378 178 78 278 78   -  -
30104  81 181 281 381   -  - 281 81   -  -
30105  84 184 284 384 184 84 284 84   -  -
30106  87 187 287 387   -  - 287 87   -  -
30107  90 190 290 390 190 90 290 90 390 90
30108  93 193 293 393   -  - 293 93   -  -
30109}
30110do_execsql_test joinD-1025 {
30111  SELECT t1.*, t2.*, t3.*, t4.*
30112  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30113  LEFT JOIN t3 ON t1.c=t3.c
30114  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30115  WHERE t3.y>0 OR t3.y IS NULL
30116  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30117} {
30118   1 101 201 301   -  -   -  -   -  -
30119   2 102 202 302 102  2   -  -   -  -
30120   3 103 203 303   -  - 203  3   -  -
30121   4 104 204 304 104  4   -  -   -  -
30122   5 105 205 305   -  -   -  - 305  5
30123   6 106 206 306 106  6 206  6   -  -
30124   7 107 207 307   -  -   -  -   -  -
30125   8 108 208 308 108  8   -  -   -  -
30126   9 109 209 309   -  - 209  9   -  -
30127  10 110 210 310 110 10   -  - 310 10
30128  11 111 211 311   -  -   -  -   -  -
30129  12 112 212 312 112 12 212 12   -  -
30130  13 113 213 313   -  -   -  -   -  -
30131  14 114 214 314 114 14   -  -   -  -
30132  15 115 215 315   -  - 215 15 315 15
30133  16 116 216 316 116 16   -  -   -  -
30134  17 117 217 317   -  -   -  -   -  -
30135  18 118 218 318 118 18 218 18   -  -
30136  19 119 219 319   -  -   -  -   -  -
30137  20 120 220 320 120 20   -  - 320 20
30138  21 121 221 321   -  - 221 21   -  -
30139  22 122 222 322 122 22   -  -   -  -
30140  23 123 223 323   -  -   -  -   -  -
30141  24 124 224 324 124 24 224 24   -  -
30142  25 125 225 325   -  -   -  - 325 25
30143  26 126 226 326 126 26   -  -   -  -
30144  27 127 227 327   -  - 227 27   -  -
30145  28 128 228 328 128 28   -  -   -  -
30146  29 129 229 329   -  -   -  -   -  -
30147  30 130 230 330 130 30 230 30 330 30
30148  31 131 231 331   -  -   -  -   -  -
30149  32 132 232 332 132 32   -  -   -  -
30150  33 133 233 333   -  - 233 33   -  -
30151  34 134 234 334 134 34   -  -   -  -
30152  35 135 235 335   -  -   -  - 335 35
30153  36 136 236 336 136 36 236 36   -  -
30154  37 137 237 337   -  -   -  -   -  -
30155  38 138 238 338 138 38   -  -   -  -
30156  39 139 239 339   -  - 239 39   -  -
30157  40 140 240 340 140 40   -  - 340 40
30158  41 141 241 341   -  -   -  -   -  -
30159  42 142 242 342 142 42 242 42   -  -
30160  43 143 243 343   -  -   -  -   -  -
30161  44 144 244 344 144 44   -  -   -  -
30162  45 145 245 345   -  - 245 45 345 45
30163  46 146 246 346 146 46   -  -   -  -
30164  47 147 247 347   -  -   -  -   -  -
30165  48 148 248 348 148 48 248 48   -  -
30166  49 149 249 349   -  -   -  -   -  -
30167  50 150 250 350 150 50   -  - 350 50
30168  51 151 251 351   -  - 251 51   -  -
30169  52 152 252 352 152 52   -  -   -  -
30170  53 153 253 353   -  -   -  -   -  -
30171  54 154 254 354 154 54 254 54   -  -
30172  55 155 255 355   -  -   -  - 355 55
30173  56 156 256 356 156 56   -  -   -  -
30174  57 157 257 357   -  - 257 57   -  -
30175  58 158 258 358 158 58   -  -   -  -
30176  59 159 259 359   -  -   -  -   -  -
30177  60 160 260 360 160 60 260 60 360 60
30178  61 161 261 361   -  -   -  -   -  -
30179  62 162 262 362 162 62   -  -   -  -
30180  63 163 263 363   -  - 263 63   -  -
30181  64 164 264 364 164 64   -  -   -  -
30182  65 165 265 365   -  -   -  - 365 65
30183  66 166 266 366 166 66 266 66   -  -
30184  67 167 267 367   -  -   -  -   -  -
30185  68 168 268 368 168 68   -  -   -  -
30186  69 169 269 369   -  - 269 69   -  -
30187  70 170 270 370 170 70   -  - 370 70
30188  71 171 271 371   -  -   -  -   -  -
30189  72 172 272 372 172 72 272 72   -  -
30190  73 173 273 373   -  -   -  -   -  -
30191  74 174 274 374 174 74   -  -   -  -
30192  75 175 275 375   -  - 275 75 375 75
30193  76 176 276 376 176 76   -  -   -  -
30194  77 177 277 377   -  -   -  -   -  -
30195  78 178 278 378 178 78 278 78   -  -
30196  79 179 279 379   -  -   -  -   -  -
30197  80 180 280 380 180 80   -  - 380 80
30198  81 181 281 381   -  - 281 81   -  -
30199  82 182 282 382 182 82   -  -   -  -
30200  83 183 283 383   -  -   -  -   -  -
30201  84 184 284 384 184 84 284 84   -  -
30202  85 185 285 385   -  -   -  - 385 85
30203  86 186 286 386 186 86   -  -   -  -
30204  87 187 287 387   -  - 287 87   -  -
30205  88 188 288 388 188 88   -  -   -  -
30206  89 189 289 389   -  -   -  -   -  -
30207  90 190 290 390 190 90 290 90 390 90
30208  91 191 291 391   -  -   -  -   -  -
30209  92 192 292 392 192 92   -  -   -  -
30210  93 193 293 393   -  - 293 93   -  -
30211  94 194 294 394 194 94   -  -   -  -
30212  95 195 295 395   -  -   -  - 395 95
30213  96   - 296 396   -  -   -  -   -  -
30214  97 197   - 397   -  -   -  -   -  -
30215  98 198 298   -   -  -   -  -   -  -
30216  99   -   -   -   -  -   -  -   -  -
30217   -   -   -   - 100  0   -  -   -  -
30218   -   -   -   -   -  -   -  - 300  0
30219}
30220do_execsql_test joinD-1026 {
30221  SELECT t1.*, t2.*, t3.*, t4.*
30222  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30223  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30224  FULL JOIN t4 ON t1.d=t4.d
30225  WHERE t4.z>0
30226  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30227} {
30228   5 105 205 305   -  -   -  - 305  5
30229  10 110 210 310 110 10   -  - 310 10
30230  15 115 215 315   -  - 215 15 315 15
30231  20 120 220 320 120 20   -  - 320 20
30232  25 125 225 325   -  -   -  - 325 25
30233  30 130 230 330 130 30 230 30 330 30
30234  35 135 235 335   -  -   -  - 335 35
30235  40 140 240 340 140 40   -  - 340 40
30236  45 145 245 345   -  - 245 45 345 45
30237  50 150 250 350 150 50   -  - 350 50
30238  55 155 255 355   -  -   -  - 355 55
30239  60 160 260 360 160 60 260 60 360 60
30240  65 165 265 365   -  -   -  - 365 65
30241  70 170 270 370 170 70   -  - 370 70
30242  75 175 275 375   -  - 275 75 375 75
30243  80 180 280 380 180 80   -  - 380 80
30244  85 185 285 385   -  -   -  - 385 85
30245  90 190 290 390 190 90 290 90 390 90
30246  95 195 295 395   -  -   -  - 395 95
30247}
30248do_execsql_test joinD-1027 {
30249  SELECT t1.*, t2.*, t3.*, t4.*
30250  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30251  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30252  FULL JOIN t4 ON t1.d=t4.d
30253  WHERE t4.z IS NULL OR t4.z>0
30254  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30255} {
30256   1 101 201 301   -  -   -  -   -  -
30257   2 102 202 302 102  2   -  -   -  -
30258   3 103 203 303   -  - 203  3   -  -
30259   4 104 204 304 104  4   -  -   -  -
30260   5 105 205 305   -  -   -  - 305  5
30261   6 106 206 306 106  6 206  6   -  -
30262   7 107 207 307   -  -   -  -   -  -
30263   8 108 208 308 108  8   -  -   -  -
30264   9 109 209 309   -  - 209  9   -  -
30265  10 110 210 310 110 10   -  - 310 10
30266  11 111 211 311   -  -   -  -   -  -
30267  12 112 212 312 112 12 212 12   -  -
30268  13 113 213 313   -  -   -  -   -  -
30269  14 114 214 314 114 14   -  -   -  -
30270  15 115 215 315   -  - 215 15 315 15
30271  16 116 216 316 116 16   -  -   -  -
30272  17 117 217 317   -  -   -  -   -  -
30273  18 118 218 318 118 18 218 18   -  -
30274  19 119 219 319   -  -   -  -   -  -
30275  20 120 220 320 120 20   -  - 320 20
30276  21 121 221 321   -  - 221 21   -  -
30277  22 122 222 322 122 22   -  -   -  -
30278  23 123 223 323   -  -   -  -   -  -
30279  24 124 224 324 124 24 224 24   -  -
30280  25 125 225 325   -  -   -  - 325 25
30281  26 126 226 326 126 26   -  -   -  -
30282  27 127 227 327   -  - 227 27   -  -
30283  28 128 228 328 128 28   -  -   -  -
30284  29 129 229 329   -  -   -  -   -  -
30285  30 130 230 330 130 30 230 30 330 30
30286  31 131 231 331   -  -   -  -   -  -
30287  32 132 232 332 132 32   -  -   -  -
30288  33 133 233 333   -  - 233 33   -  -
30289  34 134 234 334 134 34   -  -   -  -
30290  35 135 235 335   -  -   -  - 335 35
30291  36 136 236 336 136 36 236 36   -  -
30292  37 137 237 337   -  -   -  -   -  -
30293  38 138 238 338 138 38   -  -   -  -
30294  39 139 239 339   -  - 239 39   -  -
30295  40 140 240 340 140 40   -  - 340 40
30296  41 141 241 341   -  -   -  -   -  -
30297  42 142 242 342 142 42 242 42   -  -
30298  43 143 243 343   -  -   -  -   -  -
30299  44 144 244 344 144 44   -  -   -  -
30300  45 145 245 345   -  - 245 45 345 45
30301  46 146 246 346 146 46   -  -   -  -
30302  47 147 247 347   -  -   -  -   -  -
30303  48 148 248 348 148 48 248 48   -  -
30304  49 149 249 349   -  -   -  -   -  -
30305  50 150 250 350 150 50   -  - 350 50
30306  51 151 251 351   -  - 251 51   -  -
30307  52 152 252 352 152 52   -  -   -  -
30308  53 153 253 353   -  -   -  -   -  -
30309  54 154 254 354 154 54 254 54   -  -
30310  55 155 255 355   -  -   -  - 355 55
30311  56 156 256 356 156 56   -  -   -  -
30312  57 157 257 357   -  - 257 57   -  -
30313  58 158 258 358 158 58   -  -   -  -
30314  59 159 259 359   -  -   -  -   -  -
30315  60 160 260 360 160 60 260 60 360 60
30316  61 161 261 361   -  -   -  -   -  -
30317  62 162 262 362 162 62   -  -   -  -
30318  63 163 263 363   -  - 263 63   -  -
30319  64 164 264 364 164 64   -  -   -  -
30320  65 165 265 365   -  -   -  - 365 65
30321  66 166 266 366 166 66 266 66   -  -
30322  67 167 267 367   -  -   -  -   -  -
30323  68 168 268 368 168 68   -  -   -  -
30324  69 169 269 369   -  - 269 69   -  -
30325  70 170 270 370 170 70   -  - 370 70
30326  71 171 271 371   -  -   -  -   -  -
30327  72 172 272 372 172 72 272 72   -  -
30328  73 173 273 373   -  -   -  -   -  -
30329  74 174 274 374 174 74   -  -   -  -
30330  75 175 275 375   -  - 275 75 375 75
30331  76 176 276 376 176 76   -  -   -  -
30332  77 177 277 377   -  -   -  -   -  -
30333  78 178 278 378 178 78 278 78   -  -
30334  79 179 279 379   -  -   -  -   -  -
30335  80 180 280 380 180 80   -  - 380 80
30336  81 181 281 381   -  - 281 81   -  -
30337  82 182 282 382 182 82   -  -   -  -
30338  83 183 283 383   -  -   -  -   -  -
30339  84 184 284 384 184 84 284 84   -  -
30340  85 185 285 385   -  -   -  - 385 85
30341  86 186 286 386 186 86   -  -   -  -
30342  87 187 287 387   -  - 287 87   -  -
30343  88 188 288 388 188 88   -  -   -  -
30344  89 189 289 389   -  -   -  -   -  -
30345  90 190 290 390 190 90 290 90 390 90
30346  91 191 291 391   -  -   -  -   -  -
30347  92 192 292 392 192 92   -  -   -  -
30348  93 193 293 393   -  - 293 93   -  -
30349  94 194 294 394 194 94   -  -   -  -
30350  95 195 295 395   -  -   -  - 395 95
30351  96   - 296 396   -  -   -  -   -  -
30352  97 197   - 397   -  -   -  -   -  -
30353  98 198 298   -   -  -   -  -   -  -
30354  99   -   -   -   -  -   -  -   -  -
30355   -   -   -   - 100  0   -  -   -  -
30356}
30357do_execsql_test joinD-1028 {
30358  SELECT t1.*, t2.*, t3.*, t4.*
30359  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30360  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
30361  FULL JOIN t4 ON t1.d=t4.d
30362  WHERE t2.x>0 AND t4.z>0
30363  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30364} {
30365  10 110 210 310 110 10   -  - 310 10
30366  20 120 220 320 120 20   -  - 320 20
30367  30 130 230 330 130 30 230 30 330 30
30368  40 140 240 340 140 40   -  - 340 40
30369  50 150 250 350 150 50   -  - 350 50
30370  60 160 260 360 160 60 260 60 360 60
30371  70 170 270 370 170 70   -  - 370 70
30372  80 180 280 380 180 80   -  - 380 80
30373  90 190 290 390 190 90 290 90 390 90
30374}
30375do_execsql_test joinD-1029 {
30376  SELECT t1.*, t2.*, t3.*, t4.*
30377  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30378  LEFT JOIN t3 ON t1.c=t3.c
30379  FULL JOIN t4 ON t1.d=t4.d
30380  WHERE t4.z>0 AND t3.y>0
30381  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30382} {
30383  15 115 215 315   -  - 215 15 315 15
30384  30 130 230 330 130 30 230 30 330 30
30385  45 145 245 345   -  - 245 45 345 45
30386  60 160 260 360 160 60 260 60 360 60
30387  75 175 275 375   -  - 275 75 375 75
30388  90 190 290 390 190 90 290 90 390 90
30389}
30390do_execsql_test joinD-1030 {
30391  SELECT t1.*, t2.*, t3.*, t4.*
30392  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30393  LEFT JOIN t3 ON t1.c=t3.c
30394  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30395  WHERE t2.x>0 AND t3.y>0
30396  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30397} {
30398   6 106 206 306 106  6 206  6   -  -
30399  12 112 212 312 112 12 212 12   -  -
30400  18 118 218 318 118 18 218 18   -  -
30401  24 124 224 324 124 24 224 24   -  -
30402  30 130 230 330 130 30 230 30 330 30
30403  36 136 236 336 136 36 236 36   -  -
30404  42 142 242 342 142 42 242 42   -  -
30405  48 148 248 348 148 48 248 48   -  -
30406  54 154 254 354 154 54 254 54   -  -
30407  60 160 260 360 160 60 260 60 360 60
30408  66 166 266 366 166 66 266 66   -  -
30409  72 172 272 372 172 72 272 72   -  -
30410  78 178 278 378 178 78 278 78   -  -
30411  84 184 284 384 184 84 284 84   -  -
30412  90 190 290 390 190 90 290 90 390 90
30413}
30414do_execsql_test joinD-1031 {
30415  SELECT t1.*, t2.*, t3.*, t4.*
30416  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30417  LEFT JOIN t3 ON t1.c=t3.c
30418  FULL JOIN t4 ON t1.d=t4.d
30419  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
30420  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30421} {
30422  30 130 230 330 130 30 230 30 330 30
30423  60 160 260 360 160 60 260 60 360 60
30424  90 190 290 390 190 90 290 90 390 90
30425}
30426do_execsql_test joinD-1032 {
30427  SELECT t1.*, t2.*, t3.*, t4.*
30428  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
30429  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30430  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
30431  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30432} {
30433   0 100 200 300   -  -   -  -   -  -
30434   1 101 201 301   -  -   -  -   -  -
30435   2 102 202 302 102  2   -  -   -  -
30436   3 103 203 303   -  - 203  3   -  -
30437   4 104 204 304 104  4   -  -   -  -
30438   5 105 205 305   -  -   -  - 305  5
30439   6 106 206 306 106  6 206  6   -  -
30440   7 107 207 307   -  -   -  -   -  -
30441   8 108 208 308 108  8   -  -   -  -
30442   9 109 209 309   -  - 209  9   -  -
30443  10 110 210 310 110 10   -  - 310 10
30444  11 111 211 311   -  -   -  -   -  -
30445  12 112 212 312 112 12 212 12   -  -
30446  13 113 213 313   -  -   -  -   -  -
30447  14 114 214 314 114 14   -  -   -  -
30448  15 115 215 315   -  - 215 15 315 15
30449  16 116 216 316 116 16   -  -   -  -
30450  17 117 217 317   -  -   -  -   -  -
30451  18 118 218 318 118 18 218 18   -  -
30452  19 119 219 319   -  -   -  -   -  -
30453  20 120 220 320 120 20   -  - 320 20
30454  21 121 221 321   -  - 221 21   -  -
30455  22 122 222 322 122 22   -  -   -  -
30456  23 123 223 323   -  -   -  -   -  -
30457  24 124 224 324 124 24 224 24   -  -
30458  25 125 225 325   -  -   -  - 325 25
30459  26 126 226 326 126 26   -  -   -  -
30460  27 127 227 327   -  - 227 27   -  -
30461  28 128 228 328 128 28   -  -   -  -
30462  29 129 229 329   -  -   -  -   -  -
30463  30 130 230 330 130 30 230 30 330 30
30464  31 131 231 331   -  -   -  -   -  -
30465  32 132 232 332 132 32   -  -   -  -
30466  33 133 233 333   -  - 233 33   -  -
30467  34 134 234 334 134 34   -  -   -  -
30468  35 135 235 335   -  -   -  - 335 35
30469  36 136 236 336 136 36 236 36   -  -
30470  37 137 237 337   -  -   -  -   -  -
30471  38 138 238 338 138 38   -  -   -  -
30472  39 139 239 339   -  - 239 39   -  -
30473  40 140 240 340 140 40   -  - 340 40
30474  41 141 241 341   -  -   -  -   -  -
30475  42 142 242 342 142 42 242 42   -  -
30476  43 143 243 343   -  -   -  -   -  -
30477  44 144 244 344 144 44   -  -   -  -
30478  45 145 245 345   -  - 245 45 345 45
30479  46 146 246 346 146 46   -  -   -  -
30480  47 147 247 347   -  -   -  -   -  -
30481  48 148 248 348 148 48 248 48   -  -
30482  49 149 249 349   -  -   -  -   -  -
30483  50 150 250 350 150 50   -  - 350 50
30484  51 151 251 351   -  - 251 51   -  -
30485  52 152 252 352 152 52   -  -   -  -
30486  53 153 253 353   -  -   -  -   -  -
30487  54 154 254 354 154 54 254 54   -  -
30488  55 155 255 355   -  -   -  - 355 55
30489  56 156 256 356 156 56   -  -   -  -
30490  57 157 257 357   -  - 257 57   -  -
30491  58 158 258 358 158 58   -  -   -  -
30492  59 159 259 359   -  -   -  -   -  -
30493  60 160 260 360 160 60 260 60 360 60
30494  61 161 261 361   -  -   -  -   -  -
30495  62 162 262 362 162 62   -  -   -  -
30496  63 163 263 363   -  - 263 63   -  -
30497  64 164 264 364 164 64   -  -   -  -
30498  65 165 265 365   -  -   -  - 365 65
30499  66 166 266 366 166 66 266 66   -  -
30500  67 167 267 367   -  -   -  -   -  -
30501  68 168 268 368 168 68   -  -   -  -
30502  69 169 269 369   -  - 269 69   -  -
30503  70 170 270 370 170 70   -  - 370 70
30504  71 171 271 371   -  -   -  -   -  -
30505  72 172 272 372 172 72 272 72   -  -
30506  73 173 273 373   -  -   -  -   -  -
30507  74 174 274 374 174 74   -  -   -  -
30508  75 175 275 375   -  - 275 75 375 75
30509  76 176 276 376 176 76   -  -   -  -
30510  77 177 277 377   -  -   -  -   -  -
30511  78 178 278 378 178 78 278 78   -  -
30512  79 179 279 379   -  -   -  -   -  -
30513  80 180 280 380 180 80   -  - 380 80
30514  81 181 281 381   -  - 281 81   -  -
30515  82 182 282 382 182 82   -  -   -  -
30516  83 183 283 383   -  -   -  -   -  -
30517  84 184 284 384 184 84 284 84   -  -
30518  85 185 285 385   -  -   -  - 385 85
30519  86 186 286 386 186 86   -  -   -  -
30520  87 187 287 387   -  - 287 87   -  -
30521  88 188 288 388 188 88   -  -   -  -
30522  89 189 289 389   -  -   -  -   -  -
30523  90 190 290 390 190 90 290 90 390 90
30524  91 191 291 391   -  -   -  -   -  -
30525  92 192 292 392 192 92   -  -   -  -
30526  93 193 293 393   -  - 293 93   -  -
30527  94 194 294 394 194 94   -  -   -  -
30528  95 195 295 395   -  -   -  - 395 95
30529  96   - 296 396   -  -   -  -   -  -
30530  97 197   - 397   -  -   -  -   -  -
30531  98 198 298   -   -  -   -  -   -  -
30532  99   -   -   -   -  -   -  -   -  -
30533   -   -   -   - 100  0   -  -   -  -
30534   -   -   -   -   -  -   -  - 300  0
30535}
30536do_execsql_test joinD-1033 {
30537  SELECT t1.*, t2.*, t3.*, t4.*
30538  FROM t1 FULL JOIN t2 ON t2.x>0
30539  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30540  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
30541  WHERE t1.b = t2.b
30542  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30543} {
30544   2 102 202 302 102  2   -  -   -  -
30545   4 104 204 304 104  4   -  -   -  -
30546   6 106 206 306 106  6 206  6   -  -
30547   8 108 208 308 108  8   -  -   -  -
30548  10 110 210 310 110 10   -  - 310 10
30549  12 112 212 312 112 12 212 12   -  -
30550  14 114 214 314 114 14   -  -   -  -
30551  16 116 216 316 116 16   -  -   -  -
30552  18 118 218 318 118 18 218 18   -  -
30553  20 120 220 320 120 20   -  - 320 20
30554  22 122 222 322 122 22   -  -   -  -
30555  24 124 224 324 124 24 224 24   -  -
30556  26 126 226 326 126 26   -  -   -  -
30557  28 128 228 328 128 28   -  -   -  -
30558  30 130 230 330 130 30 230 30 330 30
30559  32 132 232 332 132 32   -  -   -  -
30560  34 134 234 334 134 34   -  -   -  -
30561  36 136 236 336 136 36 236 36   -  -
30562  38 138 238 338 138 38   -  -   -  -
30563  40 140 240 340 140 40   -  - 340 40
30564  42 142 242 342 142 42 242 42   -  -
30565  44 144 244 344 144 44   -  -   -  -
30566  46 146 246 346 146 46   -  -   -  -
30567  48 148 248 348 148 48 248 48   -  -
30568  50 150 250 350 150 50   -  - 350 50
30569  52 152 252 352 152 52   -  -   -  -
30570  54 154 254 354 154 54 254 54   -  -
30571  56 156 256 356 156 56   -  -   -  -
30572  58 158 258 358 158 58   -  -   -  -
30573  60 160 260 360 160 60 260 60 360 60
30574  62 162 262 362 162 62   -  -   -  -
30575  64 164 264 364 164 64   -  -   -  -
30576  66 166 266 366 166 66 266 66   -  -
30577  68 168 268 368 168 68   -  -   -  -
30578  70 170 270 370 170 70   -  - 370 70
30579  72 172 272 372 172 72 272 72   -  -
30580  74 174 274 374 174 74   -  -   -  -
30581  76 176 276 376 176 76   -  -   -  -
30582  78 178 278 378 178 78 278 78   -  -
30583  80 180 280 380 180 80   -  - 380 80
30584  82 182 282 382 182 82   -  -   -  -
30585  84 184 284 384 184 84 284 84   -  -
30586  86 186 286 386 186 86   -  -   -  -
30587  88 188 288 388 188 88   -  -   -  -
30588  90 190 290 390 190 90 290 90 390 90
30589  92 192 292 392 192 92   -  -   -  -
30590  94 194 294 394 194 94   -  -   -  -
30591}
30592do_execsql_test joinD-1034 {
30593  SELECT t1.*, t2.*, t3.*, t4.*
30594  FROM t1 FULL JOIN t2 ON t2.x>0
30595  LEFT JOIN t3 ON t3.y>0
30596  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
30597  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
30598  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30599} {
30600   6 106 206 306 106  6 206  6   -  -
30601  12 112 212 312 112 12 212 12   -  -
30602  18 118 218 318 118 18 218 18   -  -
30603  24 124 224 324 124 24 224 24   -  -
30604  30 130 230 330 130 30 230 30 330 30
30605  36 136 236 336 136 36 236 36   -  -
30606  42 142 242 342 142 42 242 42   -  -
30607  48 148 248 348 148 48 248 48   -  -
30608  54 154 254 354 154 54 254 54   -  -
30609  60 160 260 360 160 60 260 60 360 60
30610  66 166 266 366 166 66 266 66   -  -
30611  72 172 272 372 172 72 272 72   -  -
30612  78 178 278 378 178 78 278 78   -  -
30613  84 184 284 384 184 84 284 84   -  -
30614  90 190 290 390 190 90 290 90 390 90
30615}
30616do_execsql_test joinD-1035 {
30617  SELECT t1.*, t2.*, t3.*, t4.*
30618  FROM t1 FULL JOIN t2 ON t2.x>0
30619  LEFT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30620  FULL JOIN t4 ON t4.z>0
30621  WHERE t1.b = t2.b AND t1.d = t4.d
30622  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30623} {
30624  10 110 210 310 110 10   -  - 310 10
30625  20 120 220 320 120 20   -  - 320 20
30626  30 130 230 330 130 30 230 30 330 30
30627  40 140 240 340 140 40   -  - 340 40
30628  50 150 250 350 150 50   -  - 350 50
30629  60 160 260 360 160 60 260 60 360 60
30630  70 170 270 370 170 70   -  - 370 70
30631  80 180 280 380 180 80   -  - 380 80
30632  90 190 290 390 190 90 290 90 390 90
30633}
30634do_execsql_test joinD-1036 {
30635  SELECT t1.*, t2.*, t3.*, t4.*
30636  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30637  LEFT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
30638  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
30639  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30640} {
30641   0 100 200 300   -  -   -  -   -  -
30642   1 101 201 301   -  -   -  -   -  -
30643   2 102 202 302 102  2   -  -   -  -
30644   3 103 203 303   -  - 203  3   -  -
30645   4 104 204 304 104  4   -  -   -  -
30646   5 105 205 305   -  -   -  - 305  5
30647   6 106 206 306 106  6 206  6   -  -
30648   7 107 207 307   -  -   -  -   -  -
30649   8 108 208 308 108  8   -  -   -  -
30650   9 109 209 309   -  - 209  9   -  -
30651  10 110 210 310 110 10   -  - 310 10
30652  11 111 211 311   -  -   -  -   -  -
30653  12 112 212 312 112 12 212 12   -  -
30654  13 113 213 313   -  -   -  -   -  -
30655  14 114 214 314 114 14   -  -   -  -
30656  15 115 215 315   -  - 215 15 315 15
30657  16 116 216 316 116 16   -  -   -  -
30658  17 117 217 317   -  -   -  -   -  -
30659  18 118 218 318 118 18 218 18   -  -
30660  19 119 219 319   -  -   -  -   -  -
30661  20 120 220 320 120 20   -  - 320 20
30662  21 121 221 321   -  - 221 21   -  -
30663  22 122 222 322 122 22   -  -   -  -
30664  23 123 223 323   -  -   -  -   -  -
30665  24 124 224 324 124 24 224 24   -  -
30666  25 125 225 325   -  -   -  - 325 25
30667  26 126 226 326 126 26   -  -   -  -
30668  27 127 227 327   -  - 227 27   -  -
30669  28 128 228 328 128 28   -  -   -  -
30670  29 129 229 329   -  -   -  -   -  -
30671  30 130 230 330 130 30 230 30 330 30
30672  31 131 231 331   -  -   -  -   -  -
30673  32 132 232 332 132 32   -  -   -  -
30674  33 133 233 333   -  - 233 33   -  -
30675  34 134 234 334 134 34   -  -   -  -
30676  35 135 235 335   -  -   -  - 335 35
30677  36 136 236 336 136 36 236 36   -  -
30678  37 137 237 337   -  -   -  -   -  -
30679  38 138 238 338 138 38   -  -   -  -
30680  39 139 239 339   -  - 239 39   -  -
30681  40 140 240 340 140 40   -  - 340 40
30682  41 141 241 341   -  -   -  -   -  -
30683  42 142 242 342 142 42 242 42   -  -
30684  43 143 243 343   -  -   -  -   -  -
30685  44 144 244 344 144 44   -  -   -  -
30686  45 145 245 345   -  - 245 45 345 45
30687  46 146 246 346 146 46   -  -   -  -
30688  47 147 247 347   -  -   -  -   -  -
30689  48 148 248 348 148 48 248 48   -  -
30690  49 149 249 349   -  -   -  -   -  -
30691  50 150 250 350 150 50   -  - 350 50
30692  51 151 251 351   -  - 251 51   -  -
30693  52 152 252 352 152 52   -  -   -  -
30694  53 153 253 353   -  -   -  -   -  -
30695  54 154 254 354 154 54 254 54   -  -
30696  55 155 255 355   -  -   -  - 355 55
30697  56 156 256 356 156 56   -  -   -  -
30698  57 157 257 357   -  - 257 57   -  -
30699  58 158 258 358 158 58   -  -   -  -
30700  59 159 259 359   -  -   -  -   -  -
30701  60 160 260 360 160 60 260 60 360 60
30702  61 161 261 361   -  -   -  -   -  -
30703  62 162 262 362 162 62   -  -   -  -
30704  63 163 263 363   -  - 263 63   -  -
30705  64 164 264 364 164 64   -  -   -  -
30706  65 165 265 365   -  -   -  - 365 65
30707  66 166 266 366 166 66 266 66   -  -
30708  67 167 267 367   -  -   -  -   -  -
30709  68 168 268 368 168 68   -  -   -  -
30710  69 169 269 369   -  - 269 69   -  -
30711  70 170 270 370 170 70   -  - 370 70
30712  71 171 271 371   -  -   -  -   -  -
30713  72 172 272 372 172 72 272 72   -  -
30714  73 173 273 373   -  -   -  -   -  -
30715  74 174 274 374 174 74   -  -   -  -
30716  75 175 275 375   -  - 275 75 375 75
30717  76 176 276 376 176 76   -  -   -  -
30718  77 177 277 377   -  -   -  -   -  -
30719  78 178 278 378 178 78 278 78   -  -
30720  79 179 279 379   -  -   -  -   -  -
30721  80 180 280 380 180 80   -  - 380 80
30722  81 181 281 381   -  - 281 81   -  -
30723  82 182 282 382 182 82   -  -   -  -
30724  83 183 283 383   -  -   -  -   -  -
30725  84 184 284 384 184 84 284 84   -  -
30726  85 185 285 385   -  -   -  - 385 85
30727  86 186 286 386 186 86   -  -   -  -
30728  87 187 287 387   -  - 287 87   -  -
30729  88 188 288 388 188 88   -  -   -  -
30730  89 189 289 389   -  -   -  -   -  -
30731  90 190 290 390 190 90 290 90 390 90
30732  91 191 291 391   -  -   -  -   -  -
30733  92 192 292 392 192 92   -  -   -  -
30734  93 193 293 393   -  - 293 93   -  -
30735  94 194 294 394 194 94   -  -   -  -
30736  95 195 295 395   -  -   -  - 395 95
30737  96   - 296 396   -  -   -  -   -  -
30738  97 197   - 397   -  -   -  -   -  -
30739  98 198 298   -   -  -   -  -   -  -
30740  99   -   -   -   -  -   -  -   -  -
30741   -   -   -   - 100  0   -  -   -  -
30742   -   -   -   -   -  -   -  - 300  0
30743}
30744do_execsql_test joinD-1037 {
30745  SELECT t1.*, t2.*, t3.*, t4.*
30746  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30747  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30748  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30749  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30750} {
30751  15 115 215 315   -  - 215 15 315 15
30752  30 130 230 330 130 30 230 30 330 30
30753  45 145 245 345   -  - 245 45 345 45
30754  60 160 260 360 160 60 260 60 360 60
30755  75 175 275 375   -  - 275 75 375 75
30756  90 190 290 390 190 90 290 90 390 90
30757}
30758do_execsql_test joinD-1038 {
30759  SELECT t1.*, t2.*, t3.*, t4.*
30760  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30761  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30762  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30763  WHERE t2.x>0
30764  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30765} {
30766  30 130 230 330 130 30 230 30 330 30
30767  60 160 260 360 160 60 260 60 360 60
30768  90 190 290 390 190 90 290 90 390 90
30769}
30770do_execsql_test joinD-1039 {
30771  SELECT t1.*, t2.*, t3.*, t4.*
30772  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30773  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30774  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30775  WHERE (t2.x>0 OR t2.x IS NULL)
30776  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30777} {
30778  15 115 215 315   -  - 215 15 315 15
30779  30 130 230 330 130 30 230 30 330 30
30780  45 145 245 345   -  - 245 45 345 45
30781  60 160 260 360 160 60 260 60 360 60
30782  75 175 275 375   -  - 275 75 375 75
30783  90 190 290 390 190 90 290 90 390 90
30784}
30785do_execsql_test joinD-1040 {
30786  SELECT t1.*, t2.*, t3.*, t4.*
30787  FROM t1 FULL JOIN t2 ON true
30788  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30789  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30790  WHERE t1.b=t2.b AND t2.x>0
30791  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30792} {
30793  30 130 230 330 130 30 230 30 330 30
30794  60 160 260 360 160 60 260 60 360 60
30795  90 190 290 390 190 90 290 90 390 90
30796}
30797do_execsql_test joinD-1041 {
30798  SELECT t1.*, t2.*, t3.*, t4.*
30799  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30800  RIGHT JOIN t3 ON t1.c=t3.c
30801  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30802  WHERE t3.y>0
30803  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30804} {
30805  15 115 215 315   -  - 215 15 315 15
30806  30 130 230 330 130 30 230 30 330 30
30807  45 145 245 345   -  - 245 45 345 45
30808  60 160 260 360 160 60 260 60 360 60
30809  75 175 275 375   -  - 275 75 375 75
30810  90 190 290 390 190 90 290 90 390 90
30811}
30812do_execsql_test joinD-1042 {
30813  SELECT t1.*, t2.*, t3.*, t4.*
30814  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30815  RIGHT JOIN t3 ON t1.c=t3.c
30816  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30817  WHERE t3.y>0 OR t3.y IS NULL
30818  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30819} {
30820  15 115 215 315   -  - 215 15 315 15
30821  30 130 230 330 130 30 230 30 330 30
30822  45 145 245 345   -  - 245 45 345 45
30823  60 160 260 360 160 60 260 60 360 60
30824  75 175 275 375   -  - 275 75 375 75
30825  90 190 290 390 190 90 290 90 390 90
30826}
30827do_execsql_test joinD-1043 {
30828  SELECT t1.*, t2.*, t3.*, t4.*
30829  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30830  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30831  INNER JOIN t4 ON t1.d=t4.d
30832  WHERE t4.z>0
30833  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30834} {
30835  15 115 215 315   -  - 215 15 315 15
30836  30 130 230 330 130 30 230 30 330 30
30837  45 145 245 345   -  - 245 45 345 45
30838  60 160 260 360 160 60 260 60 360 60
30839  75 175 275 375   -  - 275 75 375 75
30840  90 190 290 390 190 90 290 90 390 90
30841}
30842do_execsql_test joinD-1044 {
30843  SELECT t1.*, t2.*, t3.*, t4.*
30844  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30845  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30846  INNER JOIN t4 ON t1.d=t4.d
30847  WHERE t4.z IS NULL OR t4.z>0
30848  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30849} {
30850  15 115 215 315   -  - 215 15 315 15
30851  30 130 230 330 130 30 230 30 330 30
30852  45 145 245 345   -  - 245 45 345 45
30853  60 160 260 360 160 60 260 60 360 60
30854  75 175 275 375   -  - 275 75 375 75
30855  90 190 290 390 190 90 290 90 390 90
30856}
30857do_execsql_test joinD-1045 {
30858  SELECT t1.*, t2.*, t3.*, t4.*
30859  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30860  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30861  INNER JOIN t4 ON t1.d=t4.d
30862  WHERE t2.x>0 AND t4.z>0
30863  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30864} {
30865  30 130 230 330 130 30 230 30 330 30
30866  60 160 260 360 160 60 260 60 360 60
30867  90 190 290 390 190 90 290 90 390 90
30868}
30869do_execsql_test joinD-1046 {
30870  SELECT t1.*, t2.*, t3.*, t4.*
30871  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30872  RIGHT JOIN t3 ON t1.c=t3.c
30873  INNER JOIN t4 ON t1.d=t4.d
30874  WHERE t4.z>0 AND t3.y>0
30875  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30876} {
30877  15 115 215 315   -  - 215 15 315 15
30878  30 130 230 330 130 30 230 30 330 30
30879  45 145 245 345   -  - 245 45 345 45
30880  60 160 260 360 160 60 260 60 360 60
30881  75 175 275 375   -  - 275 75 375 75
30882  90 190 290 390 190 90 290 90 390 90
30883}
30884do_execsql_test joinD-1047 {
30885  SELECT t1.*, t2.*, t3.*, t4.*
30886  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30887  RIGHT JOIN t3 ON t1.c=t3.c
30888  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30889  WHERE t2.x>0 AND t3.y>0
30890  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30891} {
30892  30 130 230 330 130 30 230 30 330 30
30893  60 160 260 360 160 60 260 60 360 60
30894  90 190 290 390 190 90 290 90 390 90
30895}
30896do_execsql_test joinD-1048 {
30897  SELECT t1.*, t2.*, t3.*, t4.*
30898  FROM t1 FULL JOIN t2 ON t1.b=t2.b
30899  RIGHT JOIN t3 ON t1.c=t3.c
30900  INNER JOIN t4 ON t1.d=t4.d
30901  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
30902  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30903} {
30904  30 130 230 330 130 30 230 30 330 30
30905  60 160 260 360 160 60 260 60 360 60
30906  90 190 290 390 190 90 290 90 390 90
30907}
30908do_execsql_test joinD-1049 {
30909  SELECT t1.*, t2.*, t3.*, t4.*
30910  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
30911  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30912  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
30913  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30914} {
30915  15 115 215 315   -  - 215 15 315 15
30916  30 130 230 330 130 30 230 30 330 30
30917  45 145 245 345   -  - 245 45 345 45
30918  60 160 260 360 160 60 260 60 360 60
30919  75 175 275 375   -  - 275 75 375 75
30920  90 190 290 390 190 90 290 90 390 90
30921}
30922do_execsql_test joinD-1050 {
30923  SELECT t1.*, t2.*, t3.*, t4.*
30924  FROM t1 FULL JOIN t2 ON t2.x>0
30925  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30926  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
30927  WHERE t1.b = t2.b
30928  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30929} {
30930  30 130 230 330 130 30 230 30 330 30
30931  60 160 260 360 160 60 260 60 360 60
30932  90 190 290 390 190 90 290 90 390 90
30933}
30934do_execsql_test joinD-1051 {
30935  SELECT t1.*, t2.*, t3.*, t4.*
30936  FROM t1 FULL JOIN t2 ON t2.x>0
30937  RIGHT JOIN t3 ON t3.y>0
30938  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
30939  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
30940  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30941} {
30942  30 130 230 330 130 30 230 30 330 30
30943  60 160 260 360 160 60 260 60 360 60
30944  90 190 290 390 190 90 290 90 390 90
30945}
30946do_execsql_test joinD-1052 {
30947  SELECT t1.*, t2.*, t3.*, t4.*
30948  FROM t1 FULL JOIN t2 ON t2.x>0
30949  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
30950  INNER JOIN t4 ON t4.z>0
30951  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
30952  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30953} {
30954  30 130 230 330 130 30 230 30 330 30
30955  60 160 260 360 160 60 260 60 360 60
30956  90 190 290 390 190 90 290 90 390 90
30957}
30958do_execsql_test joinD-1053 {
30959  SELECT t1.*, t2.*, t3.*, t4.*
30960  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30961  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
30962  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
30963  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30964} {
30965  15 115 215 315   -  - 215 15 315 15
30966  30 130 230 330 130 30 230 30 330 30
30967  45 145 245 345   -  - 245 45 345 45
30968  60 160 260 360 160 60 260 60 360 60
30969  75 175 275 375   -  - 275 75 375 75
30970  90 190 290 390 190 90 290 90 390 90
30971}
30972do_execsql_test joinD-1054 {
30973  SELECT t1.*, t2.*, t3.*, t4.*
30974  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
30975  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
30976  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
30977  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
30978} {
30979   3 103 203 303   -  - 203  3   -  -
30980   6 106 206 306 106  6 206  6   -  -
30981   9 109 209 309   -  - 209  9   -  -
30982  12 112 212 312 112 12 212 12   -  -
30983  15 115 215 315   -  - 215 15 315 15
30984  18 118 218 318 118 18 218 18   -  -
30985  21 121 221 321   -  - 221 21   -  -
30986  24 124 224 324 124 24 224 24   -  -
30987  27 127 227 327   -  - 227 27   -  -
30988  30 130 230 330 130 30 230 30 330 30
30989  33 133 233 333   -  - 233 33   -  -
30990  36 136 236 336 136 36 236 36   -  -
30991  39 139 239 339   -  - 239 39   -  -
30992  42 142 242 342 142 42 242 42   -  -
30993  45 145 245 345   -  - 245 45 345 45
30994  48 148 248 348 148 48 248 48   -  -
30995  51 151 251 351   -  - 251 51   -  -
30996  54 154 254 354 154 54 254 54   -  -
30997  57 157 257 357   -  - 257 57   -  -
30998  60 160 260 360 160 60 260 60 360 60
30999  63 163 263 363   -  - 263 63   -  -
31000  66 166 266 366 166 66 266 66   -  -
31001  69 169 269 369   -  - 269 69   -  -
31002  72 172 272 372 172 72 272 72   -  -
31003  75 175 275 375   -  - 275 75 375 75
31004  78 178 278 378 178 78 278 78   -  -
31005  81 181 281 381   -  - 281 81   -  -
31006  84 184 284 384 184 84 284 84   -  -
31007  87 187 287 387   -  - 287 87   -  -
31008  90 190 290 390 190 90 290 90 390 90
31009  93 193 293 393   -  - 293 93   -  -
31010   -   -   -   -   -  - 200  0   -  -
31011}
31012do_execsql_test joinD-1055 {
31013  SELECT t1.*, t2.*, t3.*, t4.*
31014  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31015  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31016  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31017  WHERE t2.x>0
31018  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31019} {
31020   6 106 206 306 106  6 206  6   -  -
31021  12 112 212 312 112 12 212 12   -  -
31022  18 118 218 318 118 18 218 18   -  -
31023  24 124 224 324 124 24 224 24   -  -
31024  30 130 230 330 130 30 230 30 330 30
31025  36 136 236 336 136 36 236 36   -  -
31026  42 142 242 342 142 42 242 42   -  -
31027  48 148 248 348 148 48 248 48   -  -
31028  54 154 254 354 154 54 254 54   -  -
31029  60 160 260 360 160 60 260 60 360 60
31030  66 166 266 366 166 66 266 66   -  -
31031  72 172 272 372 172 72 272 72   -  -
31032  78 178 278 378 178 78 278 78   -  -
31033  84 184 284 384 184 84 284 84   -  -
31034  90 190 290 390 190 90 290 90 390 90
31035}
31036do_execsql_test joinD-1056 {
31037  SELECT t1.*, t2.*, t3.*, t4.*
31038  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31039  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31040  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31041  WHERE (t2.x>0 OR t2.x IS NULL)
31042  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31043} {
31044   3 103 203 303   -  - 203  3   -  -
31045   6 106 206 306 106  6 206  6   -  -
31046   9 109 209 309   -  - 209  9   -  -
31047  12 112 212 312 112 12 212 12   -  -
31048  15 115 215 315   -  - 215 15 315 15
31049  18 118 218 318 118 18 218 18   -  -
31050  21 121 221 321   -  - 221 21   -  -
31051  24 124 224 324 124 24 224 24   -  -
31052  27 127 227 327   -  - 227 27   -  -
31053  30 130 230 330 130 30 230 30 330 30
31054  33 133 233 333   -  - 233 33   -  -
31055  36 136 236 336 136 36 236 36   -  -
31056  39 139 239 339   -  - 239 39   -  -
31057  42 142 242 342 142 42 242 42   -  -
31058  45 145 245 345   -  - 245 45 345 45
31059  48 148 248 348 148 48 248 48   -  -
31060  51 151 251 351   -  - 251 51   -  -
31061  54 154 254 354 154 54 254 54   -  -
31062  57 157 257 357   -  - 257 57   -  -
31063  60 160 260 360 160 60 260 60 360 60
31064  63 163 263 363   -  - 263 63   -  -
31065  66 166 266 366 166 66 266 66   -  -
31066  69 169 269 369   -  - 269 69   -  -
31067  72 172 272 372 172 72 272 72   -  -
31068  75 175 275 375   -  - 275 75 375 75
31069  78 178 278 378 178 78 278 78   -  -
31070  81 181 281 381   -  - 281 81   -  -
31071  84 184 284 384 184 84 284 84   -  -
31072  87 187 287 387   -  - 287 87   -  -
31073  90 190 290 390 190 90 290 90 390 90
31074  93 193 293 393   -  - 293 93   -  -
31075   -   -   -   -   -  - 200  0   -  -
31076}
31077do_execsql_test joinD-1057 {
31078  SELECT t1.*, t2.*, t3.*, t4.*
31079  FROM t1 FULL JOIN t2 ON true
31080  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31081  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31082  WHERE t1.b=t2.b AND t2.x>0
31083  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31084} {
31085   6 106 206 306 106  6 206  6   -  -
31086  12 112 212 312 112 12 212 12   -  -
31087  18 118 218 318 118 18 218 18   -  -
31088  24 124 224 324 124 24 224 24   -  -
31089  30 130 230 330 130 30 230 30 330 30
31090  36 136 236 336 136 36 236 36   -  -
31091  42 142 242 342 142 42 242 42   -  -
31092  48 148 248 348 148 48 248 48   -  -
31093  54 154 254 354 154 54 254 54   -  -
31094  60 160 260 360 160 60 260 60 360 60
31095  66 166 266 366 166 66 266 66   -  -
31096  72 172 272 372 172 72 272 72   -  -
31097  78 178 278 378 178 78 278 78   -  -
31098  84 184 284 384 184 84 284 84   -  -
31099  90 190 290 390 190 90 290 90 390 90
31100}
31101do_execsql_test joinD-1058 {
31102  SELECT t1.*, t2.*, t3.*, t4.*
31103  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31104  RIGHT JOIN t3 ON t1.c=t3.c
31105  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31106  WHERE t3.y>0
31107  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31108} {
31109   3 103 203 303   -  - 203  3   -  -
31110   6 106 206 306 106  6 206  6   -  -
31111   9 109 209 309   -  - 209  9   -  -
31112  12 112 212 312 112 12 212 12   -  -
31113  15 115 215 315   -  - 215 15 315 15
31114  18 118 218 318 118 18 218 18   -  -
31115  21 121 221 321   -  - 221 21   -  -
31116  24 124 224 324 124 24 224 24   -  -
31117  27 127 227 327   -  - 227 27   -  -
31118  30 130 230 330 130 30 230 30 330 30
31119  33 133 233 333   -  - 233 33   -  -
31120  36 136 236 336 136 36 236 36   -  -
31121  39 139 239 339   -  - 239 39   -  -
31122  42 142 242 342 142 42 242 42   -  -
31123  45 145 245 345   -  - 245 45 345 45
31124  48 148 248 348 148 48 248 48   -  -
31125  51 151 251 351   -  - 251 51   -  -
31126  54 154 254 354 154 54 254 54   -  -
31127  57 157 257 357   -  - 257 57   -  -
31128  60 160 260 360 160 60 260 60 360 60
31129  63 163 263 363   -  - 263 63   -  -
31130  66 166 266 366 166 66 266 66   -  -
31131  69 169 269 369   -  - 269 69   -  -
31132  72 172 272 372 172 72 272 72   -  -
31133  75 175 275 375   -  - 275 75 375 75
31134  78 178 278 378 178 78 278 78   -  -
31135  81 181 281 381   -  - 281 81   -  -
31136  84 184 284 384 184 84 284 84   -  -
31137  87 187 287 387   -  - 287 87   -  -
31138  90 190 290 390 190 90 290 90 390 90
31139  93 193 293 393   -  - 293 93   -  -
31140}
31141do_execsql_test joinD-1059 {
31142  SELECT t1.*, t2.*, t3.*, t4.*
31143  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31144  RIGHT JOIN t3 ON t1.c=t3.c
31145  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31146  WHERE t3.y>0 OR t3.y IS NULL
31147  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31148} {
31149   3 103 203 303   -  - 203  3   -  -
31150   6 106 206 306 106  6 206  6   -  -
31151   9 109 209 309   -  - 209  9   -  -
31152  12 112 212 312 112 12 212 12   -  -
31153  15 115 215 315   -  - 215 15 315 15
31154  18 118 218 318 118 18 218 18   -  -
31155  21 121 221 321   -  - 221 21   -  -
31156  24 124 224 324 124 24 224 24   -  -
31157  27 127 227 327   -  - 227 27   -  -
31158  30 130 230 330 130 30 230 30 330 30
31159  33 133 233 333   -  - 233 33   -  -
31160  36 136 236 336 136 36 236 36   -  -
31161  39 139 239 339   -  - 239 39   -  -
31162  42 142 242 342 142 42 242 42   -  -
31163  45 145 245 345   -  - 245 45 345 45
31164  48 148 248 348 148 48 248 48   -  -
31165  51 151 251 351   -  - 251 51   -  -
31166  54 154 254 354 154 54 254 54   -  -
31167  57 157 257 357   -  - 257 57   -  -
31168  60 160 260 360 160 60 260 60 360 60
31169  63 163 263 363   -  - 263 63   -  -
31170  66 166 266 366 166 66 266 66   -  -
31171  69 169 269 369   -  - 269 69   -  -
31172  72 172 272 372 172 72 272 72   -  -
31173  75 175 275 375   -  - 275 75 375 75
31174  78 178 278 378 178 78 278 78   -  -
31175  81 181 281 381   -  - 281 81   -  -
31176  84 184 284 384 184 84 284 84   -  -
31177  87 187 287 387   -  - 287 87   -  -
31178  90 190 290 390 190 90 290 90 390 90
31179  93 193 293 393   -  - 293 93   -  -
31180}
31181do_execsql_test joinD-1060 {
31182  SELECT t1.*, t2.*, t3.*, t4.*
31183  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31184  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31185  LEFT JOIN t4 ON t1.d=t4.d
31186  WHERE t4.z>0
31187  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31188} {
31189  15 115 215 315   -  - 215 15 315 15
31190  30 130 230 330 130 30 230 30 330 30
31191  45 145 245 345   -  - 245 45 345 45
31192  60 160 260 360 160 60 260 60 360 60
31193  75 175 275 375   -  - 275 75 375 75
31194  90 190 290 390 190 90 290 90 390 90
31195}
31196do_execsql_test joinD-1061 {
31197  SELECT t1.*, t2.*, t3.*, t4.*
31198  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31199  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31200  LEFT JOIN t4 ON t1.d=t4.d
31201  WHERE t4.z IS NULL OR t4.z>0
31202  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31203} {
31204   3 103 203 303   -  - 203  3   -  -
31205   6 106 206 306 106  6 206  6   -  -
31206   9 109 209 309   -  - 209  9   -  -
31207  12 112 212 312 112 12 212 12   -  -
31208  15 115 215 315   -  - 215 15 315 15
31209  18 118 218 318 118 18 218 18   -  -
31210  21 121 221 321   -  - 221 21   -  -
31211  24 124 224 324 124 24 224 24   -  -
31212  27 127 227 327   -  - 227 27   -  -
31213  30 130 230 330 130 30 230 30 330 30
31214  33 133 233 333   -  - 233 33   -  -
31215  36 136 236 336 136 36 236 36   -  -
31216  39 139 239 339   -  - 239 39   -  -
31217  42 142 242 342 142 42 242 42   -  -
31218  45 145 245 345   -  - 245 45 345 45
31219  48 148 248 348 148 48 248 48   -  -
31220  51 151 251 351   -  - 251 51   -  -
31221  54 154 254 354 154 54 254 54   -  -
31222  57 157 257 357   -  - 257 57   -  -
31223  60 160 260 360 160 60 260 60 360 60
31224  63 163 263 363   -  - 263 63   -  -
31225  66 166 266 366 166 66 266 66   -  -
31226  69 169 269 369   -  - 269 69   -  -
31227  72 172 272 372 172 72 272 72   -  -
31228  75 175 275 375   -  - 275 75 375 75
31229  78 178 278 378 178 78 278 78   -  -
31230  81 181 281 381   -  - 281 81   -  -
31231  84 184 284 384 184 84 284 84   -  -
31232  87 187 287 387   -  - 287 87   -  -
31233  90 190 290 390 190 90 290 90 390 90
31234  93 193 293 393   -  - 293 93   -  -
31235   -   -   -   -   -  - 200  0   -  -
31236}
31237do_execsql_test joinD-1062 {
31238  SELECT t1.*, t2.*, t3.*, t4.*
31239  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31240  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31241  LEFT JOIN t4 ON t1.d=t4.d
31242  WHERE t2.x>0 AND t4.z>0
31243  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31244} {
31245  30 130 230 330 130 30 230 30 330 30
31246  60 160 260 360 160 60 260 60 360 60
31247  90 190 290 390 190 90 290 90 390 90
31248}
31249do_execsql_test joinD-1063 {
31250  SELECT t1.*, t2.*, t3.*, t4.*
31251  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31252  RIGHT JOIN t3 ON t1.c=t3.c
31253  LEFT JOIN t4 ON t1.d=t4.d
31254  WHERE t4.z>0 AND t3.y>0
31255  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31256} {
31257  15 115 215 315   -  - 215 15 315 15
31258  30 130 230 330 130 30 230 30 330 30
31259  45 145 245 345   -  - 245 45 345 45
31260  60 160 260 360 160 60 260 60 360 60
31261  75 175 275 375   -  - 275 75 375 75
31262  90 190 290 390 190 90 290 90 390 90
31263}
31264do_execsql_test joinD-1064 {
31265  SELECT t1.*, t2.*, t3.*, t4.*
31266  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31267  RIGHT JOIN t3 ON t1.c=t3.c
31268  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31269  WHERE t2.x>0 AND t3.y>0
31270  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31271} {
31272   6 106 206 306 106  6 206  6   -  -
31273  12 112 212 312 112 12 212 12   -  -
31274  18 118 218 318 118 18 218 18   -  -
31275  24 124 224 324 124 24 224 24   -  -
31276  30 130 230 330 130 30 230 30 330 30
31277  36 136 236 336 136 36 236 36   -  -
31278  42 142 242 342 142 42 242 42   -  -
31279  48 148 248 348 148 48 248 48   -  -
31280  54 154 254 354 154 54 254 54   -  -
31281  60 160 260 360 160 60 260 60 360 60
31282  66 166 266 366 166 66 266 66   -  -
31283  72 172 272 372 172 72 272 72   -  -
31284  78 178 278 378 178 78 278 78   -  -
31285  84 184 284 384 184 84 284 84   -  -
31286  90 190 290 390 190 90 290 90 390 90
31287}
31288do_execsql_test joinD-1065 {
31289  SELECT t1.*, t2.*, t3.*, t4.*
31290  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31291  RIGHT JOIN t3 ON t1.c=t3.c
31292  LEFT JOIN t4 ON t1.d=t4.d
31293  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
31294  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31295} {
31296  30 130 230 330 130 30 230 30 330 30
31297  60 160 260 360 160 60 260 60 360 60
31298  90 190 290 390 190 90 290 90 390 90
31299}
31300do_execsql_test joinD-1066 {
31301  SELECT t1.*, t2.*, t3.*, t4.*
31302  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
31303  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31304  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31305  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31306} {
31307   3 103 203 303   -  - 203  3   -  -
31308   6 106 206 306 106  6 206  6   -  -
31309   9 109 209 309   -  - 209  9   -  -
31310  12 112 212 312 112 12 212 12   -  -
31311  15 115 215 315   -  - 215 15 315 15
31312  18 118 218 318 118 18 218 18   -  -
31313  21 121 221 321   -  - 221 21   -  -
31314  24 124 224 324 124 24 224 24   -  -
31315  27 127 227 327   -  - 227 27   -  -
31316  30 130 230 330 130 30 230 30 330 30
31317  33 133 233 333   -  - 233 33   -  -
31318  36 136 236 336 136 36 236 36   -  -
31319  39 139 239 339   -  - 239 39   -  -
31320  42 142 242 342 142 42 242 42   -  -
31321  45 145 245 345   -  - 245 45 345 45
31322  48 148 248 348 148 48 248 48   -  -
31323  51 151 251 351   -  - 251 51   -  -
31324  54 154 254 354 154 54 254 54   -  -
31325  57 157 257 357   -  - 257 57   -  -
31326  60 160 260 360 160 60 260 60 360 60
31327  63 163 263 363   -  - 263 63   -  -
31328  66 166 266 366 166 66 266 66   -  -
31329  69 169 269 369   -  - 269 69   -  -
31330  72 172 272 372 172 72 272 72   -  -
31331  75 175 275 375   -  - 275 75 375 75
31332  78 178 278 378 178 78 278 78   -  -
31333  81 181 281 381   -  - 281 81   -  -
31334  84 184 284 384 184 84 284 84   -  -
31335  87 187 287 387   -  - 287 87   -  -
31336  90 190 290 390 190 90 290 90 390 90
31337  93 193 293 393   -  - 293 93   -  -
31338   -   -   -   -   -  - 200  0   -  -
31339}
31340do_execsql_test joinD-1067 {
31341  SELECT t1.*, t2.*, t3.*, t4.*
31342  FROM t1 FULL JOIN t2 ON t2.x>0
31343  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31344  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31345  WHERE t1.b = t2.b
31346  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31347} {
31348   6 106 206 306 106  6 206  6   -  -
31349  12 112 212 312 112 12 212 12   -  -
31350  18 118 218 318 118 18 218 18   -  -
31351  24 124 224 324 124 24 224 24   -  -
31352  30 130 230 330 130 30 230 30 330 30
31353  36 136 236 336 136 36 236 36   -  -
31354  42 142 242 342 142 42 242 42   -  -
31355  48 148 248 348 148 48 248 48   -  -
31356  54 154 254 354 154 54 254 54   -  -
31357  60 160 260 360 160 60 260 60 360 60
31358  66 166 266 366 166 66 266 66   -  -
31359  72 172 272 372 172 72 272 72   -  -
31360  78 178 278 378 178 78 278 78   -  -
31361  84 184 284 384 184 84 284 84   -  -
31362  90 190 290 390 190 90 290 90 390 90
31363}
31364do_execsql_test joinD-1068 {
31365  SELECT t1.*, t2.*, t3.*, t4.*
31366  FROM t1 FULL JOIN t2 ON t2.x>0
31367  RIGHT JOIN t3 ON t3.y>0
31368  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31369  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
31370  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31371} {
31372   6 106 206 306 106  6 206  6   -  -
31373  12 112 212 312 112 12 212 12   -  -
31374  18 118 218 318 118 18 218 18   -  -
31375  24 124 224 324 124 24 224 24   -  -
31376  30 130 230 330 130 30 230 30 330 30
31377  36 136 236 336 136 36 236 36   -  -
31378  42 142 242 342 142 42 242 42   -  -
31379  48 148 248 348 148 48 248 48   -  -
31380  54 154 254 354 154 54 254 54   -  -
31381  60 160 260 360 160 60 260 60 360 60
31382  66 166 266 366 166 66 266 66   -  -
31383  72 172 272 372 172 72 272 72   -  -
31384  78 178 278 378 178 78 278 78   -  -
31385  84 184 284 384 184 84 284 84   -  -
31386  90 190 290 390 190 90 290 90 390 90
31387}
31388do_execsql_test joinD-1069 {
31389  SELECT t1.*, t2.*, t3.*, t4.*
31390  FROM t1 FULL JOIN t2 ON t2.x>0
31391  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31392  LEFT JOIN t4 ON t4.z>0
31393  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
31394  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31395} {
31396  30 130 230 330 130 30 230 30 330 30
31397  60 160 260 360 160 60 260 60 360 60
31398  90 190 290 390 190 90 290 90 390 90
31399}
31400do_execsql_test joinD-1070 {
31401  SELECT t1.*, t2.*, t3.*, t4.*
31402  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31403  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
31404  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
31405  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31406} {
31407   3 103 203 303   -  - 203  3   -  -
31408   6 106 206 306 106  6 206  6   -  -
31409   9 109 209 309   -  - 209  9   -  -
31410  12 112 212 312 112 12 212 12   -  -
31411  15 115 215 315   -  - 215 15 315 15
31412  18 118 218 318 118 18 218 18   -  -
31413  21 121 221 321   -  - 221 21   -  -
31414  24 124 224 324 124 24 224 24   -  -
31415  27 127 227 327   -  - 227 27   -  -
31416  30 130 230 330 130 30 230 30 330 30
31417  33 133 233 333   -  - 233 33   -  -
31418  36 136 236 336 136 36 236 36   -  -
31419  39 139 239 339   -  - 239 39   -  -
31420  42 142 242 342 142 42 242 42   -  -
31421  45 145 245 345   -  - 245 45 345 45
31422  48 148 248 348 148 48 248 48   -  -
31423  51 151 251 351   -  - 251 51   -  -
31424  54 154 254 354 154 54 254 54   -  -
31425  57 157 257 357   -  - 257 57   -  -
31426  60 160 260 360 160 60 260 60 360 60
31427  63 163 263 363   -  - 263 63   -  -
31428  66 166 266 366 166 66 266 66   -  -
31429  69 169 269 369   -  - 269 69   -  -
31430  72 172 272 372 172 72 272 72   -  -
31431  75 175 275 375   -  - 275 75 375 75
31432  78 178 278 378 178 78 278 78   -  -
31433  81 181 281 381   -  - 281 81   -  -
31434  84 184 284 384 184 84 284 84   -  -
31435  87 187 287 387   -  - 287 87   -  -
31436  90 190 290 390 190 90 290 90 390 90
31437  93 193 293 393   -  - 293 93   -  -
31438   -   -   -   -   -  - 200  0   -  -
31439}
31440do_execsql_test joinD-1071 {
31441  SELECT t1.*, t2.*, t3.*, t4.*
31442  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31443  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31444  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31445  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31446} {
31447  15 115 215 315   -  - 215 15 315 15
31448  30 130 230 330 130 30 230 30 330 30
31449  45 145 245 345   -  - 245 45 345 45
31450  60 160 260 360 160 60 260 60 360 60
31451  75 175 275 375   -  - 275 75 375 75
31452  90 190 290 390 190 90 290 90 390 90
31453   -   -   -   -   -  -   -  - 300  0
31454   -   -   -   -   -  -   -  - 305  5
31455   -   -   -   -   -  -   -  - 310 10
31456   -   -   -   -   -  -   -  - 320 20
31457   -   -   -   -   -  -   -  - 325 25
31458   -   -   -   -   -  -   -  - 335 35
31459   -   -   -   -   -  -   -  - 340 40
31460   -   -   -   -   -  -   -  - 350 50
31461   -   -   -   -   -  -   -  - 355 55
31462   -   -   -   -   -  -   -  - 365 65
31463   -   -   -   -   -  -   -  - 370 70
31464   -   -   -   -   -  -   -  - 380 80
31465   -   -   -   -   -  -   -  - 385 85
31466   -   -   -   -   -  -   -  - 395 95
31467}
31468do_execsql_test joinD-1072 {
31469  SELECT t1.*, t2.*, t3.*, t4.*
31470  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31471  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31472  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31473  WHERE t2.x>0
31474  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31475} {
31476  30 130 230 330 130 30 230 30 330 30
31477  60 160 260 360 160 60 260 60 360 60
31478  90 190 290 390 190 90 290 90 390 90
31479}
31480do_execsql_test joinD-1073 {
31481  SELECT t1.*, t2.*, t3.*, t4.*
31482  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31483  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31484  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31485  WHERE (t2.x>0 OR t2.x IS NULL)
31486  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31487} {
31488  15 115 215 315   -  - 215 15 315 15
31489  30 130 230 330 130 30 230 30 330 30
31490  45 145 245 345   -  - 245 45 345 45
31491  60 160 260 360 160 60 260 60 360 60
31492  75 175 275 375   -  - 275 75 375 75
31493  90 190 290 390 190 90 290 90 390 90
31494   -   -   -   -   -  -   -  - 300  0
31495   -   -   -   -   -  -   -  - 305  5
31496   -   -   -   -   -  -   -  - 310 10
31497   -   -   -   -   -  -   -  - 320 20
31498   -   -   -   -   -  -   -  - 325 25
31499   -   -   -   -   -  -   -  - 335 35
31500   -   -   -   -   -  -   -  - 340 40
31501   -   -   -   -   -  -   -  - 350 50
31502   -   -   -   -   -  -   -  - 355 55
31503   -   -   -   -   -  -   -  - 365 65
31504   -   -   -   -   -  -   -  - 370 70
31505   -   -   -   -   -  -   -  - 380 80
31506   -   -   -   -   -  -   -  - 385 85
31507   -   -   -   -   -  -   -  - 395 95
31508}
31509do_execsql_test joinD-1074 {
31510  SELECT t1.*, t2.*, t3.*, t4.*
31511  FROM t1 FULL JOIN t2 ON true
31512  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31513  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31514  WHERE t1.b=t2.b AND t2.x>0
31515  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31516} {
31517  30 130 230 330 130 30 230 30 330 30
31518  60 160 260 360 160 60 260 60 360 60
31519  90 190 290 390 190 90 290 90 390 90
31520}
31521do_execsql_test joinD-1075 {
31522  SELECT t1.*, t2.*, t3.*, t4.*
31523  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31524  RIGHT JOIN t3 ON t1.c=t3.c
31525  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31526  WHERE t3.y>0
31527  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31528} {
31529  15 115 215 315   -  - 215 15 315 15
31530  30 130 230 330 130 30 230 30 330 30
31531  45 145 245 345   -  - 245 45 345 45
31532  60 160 260 360 160 60 260 60 360 60
31533  75 175 275 375   -  - 275 75 375 75
31534  90 190 290 390 190 90 290 90 390 90
31535}
31536do_execsql_test joinD-1076 {
31537  SELECT t1.*, t2.*, t3.*, t4.*
31538  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31539  RIGHT JOIN t3 ON t1.c=t3.c
31540  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31541  WHERE t3.y>0 OR t3.y IS NULL
31542  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31543} {
31544  15 115 215 315   -  - 215 15 315 15
31545  30 130 230 330 130 30 230 30 330 30
31546  45 145 245 345   -  - 245 45 345 45
31547  60 160 260 360 160 60 260 60 360 60
31548  75 175 275 375   -  - 275 75 375 75
31549  90 190 290 390 190 90 290 90 390 90
31550   -   -   -   -   -  -   -  - 300  0
31551   -   -   -   -   -  -   -  - 305  5
31552   -   -   -   -   -  -   -  - 310 10
31553   -   -   -   -   -  -   -  - 320 20
31554   -   -   -   -   -  -   -  - 325 25
31555   -   -   -   -   -  -   -  - 335 35
31556   -   -   -   -   -  -   -  - 340 40
31557   -   -   -   -   -  -   -  - 350 50
31558   -   -   -   -   -  -   -  - 355 55
31559   -   -   -   -   -  -   -  - 365 65
31560   -   -   -   -   -  -   -  - 370 70
31561   -   -   -   -   -  -   -  - 380 80
31562   -   -   -   -   -  -   -  - 385 85
31563   -   -   -   -   -  -   -  - 395 95
31564}
31565do_execsql_test joinD-1077 {
31566  SELECT t1.*, t2.*, t3.*, t4.*
31567  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31568  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31569  RIGHT JOIN t4 ON t1.d=t4.d
31570  WHERE t4.z>0
31571  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31572} {
31573  15 115 215 315   -  - 215 15 315 15
31574  30 130 230 330 130 30 230 30 330 30
31575  45 145 245 345   -  - 245 45 345 45
31576  60 160 260 360 160 60 260 60 360 60
31577  75 175 275 375   -  - 275 75 375 75
31578  90 190 290 390 190 90 290 90 390 90
31579   -   -   -   -   -  -   -  - 305  5
31580   -   -   -   -   -  -   -  - 310 10
31581   -   -   -   -   -  -   -  - 320 20
31582   -   -   -   -   -  -   -  - 325 25
31583   -   -   -   -   -  -   -  - 335 35
31584   -   -   -   -   -  -   -  - 340 40
31585   -   -   -   -   -  -   -  - 350 50
31586   -   -   -   -   -  -   -  - 355 55
31587   -   -   -   -   -  -   -  - 365 65
31588   -   -   -   -   -  -   -  - 370 70
31589   -   -   -   -   -  -   -  - 380 80
31590   -   -   -   -   -  -   -  - 385 85
31591   -   -   -   -   -  -   -  - 395 95
31592}
31593do_execsql_test joinD-1078 {
31594  SELECT t1.*, t2.*, t3.*, t4.*
31595  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31596  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31597  RIGHT JOIN t4 ON t1.d=t4.d
31598  WHERE t4.z IS NULL OR t4.z>0
31599  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31600} {
31601  15 115 215 315   -  - 215 15 315 15
31602  30 130 230 330 130 30 230 30 330 30
31603  45 145 245 345   -  - 245 45 345 45
31604  60 160 260 360 160 60 260 60 360 60
31605  75 175 275 375   -  - 275 75 375 75
31606  90 190 290 390 190 90 290 90 390 90
31607   -   -   -   -   -  -   -  - 305  5
31608   -   -   -   -   -  -   -  - 310 10
31609   -   -   -   -   -  -   -  - 320 20
31610   -   -   -   -   -  -   -  - 325 25
31611   -   -   -   -   -  -   -  - 335 35
31612   -   -   -   -   -  -   -  - 340 40
31613   -   -   -   -   -  -   -  - 350 50
31614   -   -   -   -   -  -   -  - 355 55
31615   -   -   -   -   -  -   -  - 365 65
31616   -   -   -   -   -  -   -  - 370 70
31617   -   -   -   -   -  -   -  - 380 80
31618   -   -   -   -   -  -   -  - 385 85
31619   -   -   -   -   -  -   -  - 395 95
31620}
31621do_execsql_test joinD-1079 {
31622  SELECT t1.*, t2.*, t3.*, t4.*
31623  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31624  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31625  RIGHT JOIN t4 ON t1.d=t4.d
31626  WHERE t2.x>0 AND t4.z>0
31627  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31628} {
31629  30 130 230 330 130 30 230 30 330 30
31630  60 160 260 360 160 60 260 60 360 60
31631  90 190 290 390 190 90 290 90 390 90
31632}
31633do_execsql_test joinD-1080 {
31634  SELECT t1.*, t2.*, t3.*, t4.*
31635  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31636  RIGHT JOIN t3 ON t1.c=t3.c
31637  RIGHT JOIN t4 ON t1.d=t4.d
31638  WHERE t4.z>0 AND t3.y>0
31639  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31640} {
31641  15 115 215 315   -  - 215 15 315 15
31642  30 130 230 330 130 30 230 30 330 30
31643  45 145 245 345   -  - 245 45 345 45
31644  60 160 260 360 160 60 260 60 360 60
31645  75 175 275 375   -  - 275 75 375 75
31646  90 190 290 390 190 90 290 90 390 90
31647}
31648do_execsql_test joinD-1081 {
31649  SELECT t1.*, t2.*, t3.*, t4.*
31650  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31651  RIGHT JOIN t3 ON t1.c=t3.c
31652  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31653  WHERE t2.x>0 AND t3.y>0
31654  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31655} {
31656  30 130 230 330 130 30 230 30 330 30
31657  60 160 260 360 160 60 260 60 360 60
31658  90 190 290 390 190 90 290 90 390 90
31659}
31660do_execsql_test joinD-1082 {
31661  SELECT t1.*, t2.*, t3.*, t4.*
31662  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31663  RIGHT JOIN t3 ON t1.c=t3.c
31664  RIGHT JOIN t4 ON t1.d=t4.d
31665  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
31666  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31667} {
31668  30 130 230 330 130 30 230 30 330 30
31669  60 160 260 360 160 60 260 60 360 60
31670  90 190 290 390 190 90 290 90 390 90
31671}
31672do_execsql_test joinD-1083 {
31673  SELECT t1.*, t2.*, t3.*, t4.*
31674  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
31675  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31676  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31677  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31678} {
31679  15 115 215 315   -  - 215 15 315 15
31680  30 130 230 330 130 30 230 30 330 30
31681  45 145 245 345   -  - 245 45 345 45
31682  60 160 260 360 160 60 260 60 360 60
31683  75 175 275 375   -  - 275 75 375 75
31684  90 190 290 390 190 90 290 90 390 90
31685   -   -   -   -   -  -   -  - 300  0
31686   -   -   -   -   -  -   -  - 305  5
31687   -   -   -   -   -  -   -  - 310 10
31688   -   -   -   -   -  -   -  - 320 20
31689   -   -   -   -   -  -   -  - 325 25
31690   -   -   -   -   -  -   -  - 335 35
31691   -   -   -   -   -  -   -  - 340 40
31692   -   -   -   -   -  -   -  - 350 50
31693   -   -   -   -   -  -   -  - 355 55
31694   -   -   -   -   -  -   -  - 365 65
31695   -   -   -   -   -  -   -  - 370 70
31696   -   -   -   -   -  -   -  - 380 80
31697   -   -   -   -   -  -   -  - 385 85
31698   -   -   -   -   -  -   -  - 395 95
31699}
31700do_execsql_test joinD-1084 {
31701  SELECT t1.*, t2.*, t3.*, t4.*
31702  FROM t1 FULL JOIN t2 ON t2.x>0
31703  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31704  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31705  WHERE t1.b = t2.b
31706  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31707} {
31708  30 130 230 330 130 30 230 30 330 30
31709  60 160 260 360 160 60 260 60 360 60
31710  90 190 290 390 190 90 290 90 390 90
31711}
31712do_execsql_test joinD-1085 {
31713  SELECT t1.*, t2.*, t3.*, t4.*
31714  FROM t1 FULL JOIN t2 ON t2.x>0
31715  RIGHT JOIN t3 ON t3.y>0
31716  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
31717  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
31718  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31719} {
31720  30 130 230 330 130 30 230 30 330 30
31721  60 160 260 360 160 60 260 60 360 60
31722  90 190 290 390 190 90 290 90 390 90
31723}
31724do_execsql_test joinD-1086 {
31725  SELECT t1.*, t2.*, t3.*, t4.*
31726  FROM t1 FULL JOIN t2 ON t2.x>0
31727  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
31728  RIGHT JOIN t4 ON t4.z>0
31729  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
31730  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31731} {
31732  30 130 230 330 130 30 230 30 330 30
31733  60 160 260 360 160 60 260 60 360 60
31734  90 190 290 390 190 90 290 90 390 90
31735}
31736do_execsql_test joinD-1087 {
31737  SELECT t1.*, t2.*, t3.*, t4.*
31738  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31739  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
31740  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
31741  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31742} {
31743  15 115 215 315   -  - 215 15 315 15
31744  30 130 230 330 130 30 230 30 330 30
31745  45 145 245 345   -  - 245 45 345 45
31746  60 160 260 360 160 60 260 60 360 60
31747  75 175 275 375   -  - 275 75 375 75
31748  90 190 290 390 190 90 290 90 390 90
31749   -   -   -   -   -  -   -  - 300  0
31750   -   -   -   -   -  -   -  - 305  5
31751   -   -   -   -   -  -   -  - 310 10
31752   -   -   -   -   -  -   -  - 320 20
31753   -   -   -   -   -  -   -  - 325 25
31754   -   -   -   -   -  -   -  - 335 35
31755   -   -   -   -   -  -   -  - 340 40
31756   -   -   -   -   -  -   -  - 350 50
31757   -   -   -   -   -  -   -  - 355 55
31758   -   -   -   -   -  -   -  - 365 65
31759   -   -   -   -   -  -   -  - 370 70
31760   -   -   -   -   -  -   -  - 380 80
31761   -   -   -   -   -  -   -  - 385 85
31762   -   -   -   -   -  -   -  - 395 95
31763}
31764do_execsql_test joinD-1088 {
31765  SELECT t1.*, t2.*, t3.*, t4.*
31766  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31767  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31768  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31769  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31770} {
31771   3 103 203 303   -  - 203  3   -  -
31772   6 106 206 306 106  6 206  6   -  -
31773   9 109 209 309   -  - 209  9   -  -
31774  12 112 212 312 112 12 212 12   -  -
31775  15 115 215 315   -  - 215 15 315 15
31776  18 118 218 318 118 18 218 18   -  -
31777  21 121 221 321   -  - 221 21   -  -
31778  24 124 224 324 124 24 224 24   -  -
31779  27 127 227 327   -  - 227 27   -  -
31780  30 130 230 330 130 30 230 30 330 30
31781  33 133 233 333   -  - 233 33   -  -
31782  36 136 236 336 136 36 236 36   -  -
31783  39 139 239 339   -  - 239 39   -  -
31784  42 142 242 342 142 42 242 42   -  -
31785  45 145 245 345   -  - 245 45 345 45
31786  48 148 248 348 148 48 248 48   -  -
31787  51 151 251 351   -  - 251 51   -  -
31788  54 154 254 354 154 54 254 54   -  -
31789  57 157 257 357   -  - 257 57   -  -
31790  60 160 260 360 160 60 260 60 360 60
31791  63 163 263 363   -  - 263 63   -  -
31792  66 166 266 366 166 66 266 66   -  -
31793  69 169 269 369   -  - 269 69   -  -
31794  72 172 272 372 172 72 272 72   -  -
31795  75 175 275 375   -  - 275 75 375 75
31796  78 178 278 378 178 78 278 78   -  -
31797  81 181 281 381   -  - 281 81   -  -
31798  84 184 284 384 184 84 284 84   -  -
31799  87 187 287 387   -  - 287 87   -  -
31800  90 190 290 390 190 90 290 90 390 90
31801  93 193 293 393   -  - 293 93   -  -
31802   -   -   -   -   -  - 200  0   -  -
31803   -   -   -   -   -  -   -  - 300  0
31804   -   -   -   -   -  -   -  - 305  5
31805   -   -   -   -   -  -   -  - 310 10
31806   -   -   -   -   -  -   -  - 320 20
31807   -   -   -   -   -  -   -  - 325 25
31808   -   -   -   -   -  -   -  - 335 35
31809   -   -   -   -   -  -   -  - 340 40
31810   -   -   -   -   -  -   -  - 350 50
31811   -   -   -   -   -  -   -  - 355 55
31812   -   -   -   -   -  -   -  - 365 65
31813   -   -   -   -   -  -   -  - 370 70
31814   -   -   -   -   -  -   -  - 380 80
31815   -   -   -   -   -  -   -  - 385 85
31816   -   -   -   -   -  -   -  - 395 95
31817}
31818do_execsql_test joinD-1089 {
31819  SELECT t1.*, t2.*, t3.*, t4.*
31820  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31821  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31822  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31823  WHERE t2.x>0
31824  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31825} {
31826   6 106 206 306 106  6 206  6   -  -
31827  12 112 212 312 112 12 212 12   -  -
31828  18 118 218 318 118 18 218 18   -  -
31829  24 124 224 324 124 24 224 24   -  -
31830  30 130 230 330 130 30 230 30 330 30
31831  36 136 236 336 136 36 236 36   -  -
31832  42 142 242 342 142 42 242 42   -  -
31833  48 148 248 348 148 48 248 48   -  -
31834  54 154 254 354 154 54 254 54   -  -
31835  60 160 260 360 160 60 260 60 360 60
31836  66 166 266 366 166 66 266 66   -  -
31837  72 172 272 372 172 72 272 72   -  -
31838  78 178 278 378 178 78 278 78   -  -
31839  84 184 284 384 184 84 284 84   -  -
31840  90 190 290 390 190 90 290 90 390 90
31841}
31842do_execsql_test joinD-1090 {
31843  SELECT t1.*, t2.*, t3.*, t4.*
31844  FROM t1 FULL JOIN t2 ON t1.b=t2.b
31845  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31846  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31847  WHERE (t2.x>0 OR t2.x IS NULL)
31848  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31849} {
31850   3 103 203 303   -  - 203  3   -  -
31851   6 106 206 306 106  6 206  6   -  -
31852   9 109 209 309   -  - 209  9   -  -
31853  12 112 212 312 112 12 212 12   -  -
31854  15 115 215 315   -  - 215 15 315 15
31855  18 118 218 318 118 18 218 18   -  -
31856  21 121 221 321   -  - 221 21   -  -
31857  24 124 224 324 124 24 224 24   -  -
31858  27 127 227 327   -  - 227 27   -  -
31859  30 130 230 330 130 30 230 30 330 30
31860  33 133 233 333   -  - 233 33   -  -
31861  36 136 236 336 136 36 236 36   -  -
31862  39 139 239 339   -  - 239 39   -  -
31863  42 142 242 342 142 42 242 42   -  -
31864  45 145 245 345   -  - 245 45 345 45
31865  48 148 248 348 148 48 248 48   -  -
31866  51 151 251 351   -  - 251 51   -  -
31867  54 154 254 354 154 54 254 54   -  -
31868  57 157 257 357   -  - 257 57   -  -
31869  60 160 260 360 160 60 260 60 360 60
31870  63 163 263 363   -  - 263 63   -  -
31871  66 166 266 366 166 66 266 66   -  -
31872  69 169 269 369   -  - 269 69   -  -
31873  72 172 272 372 172 72 272 72   -  -
31874  75 175 275 375   -  - 275 75 375 75
31875  78 178 278 378 178 78 278 78   -  -
31876  81 181 281 381   -  - 281 81   -  -
31877  84 184 284 384 184 84 284 84   -  -
31878  87 187 287 387   -  - 287 87   -  -
31879  90 190 290 390 190 90 290 90 390 90
31880  93 193 293 393   -  - 293 93   -  -
31881   -   -   -   -   -  - 200  0   -  -
31882   -   -   -   -   -  -   -  - 300  0
31883   -   -   -   -   -  -   -  - 305  5
31884   -   -   -   -   -  -   -  - 310 10
31885   -   -   -   -   -  -   -  - 320 20
31886   -   -   -   -   -  -   -  - 325 25
31887   -   -   -   -   -  -   -  - 335 35
31888   -   -   -   -   -  -   -  - 340 40
31889   -   -   -   -   -  -   -  - 350 50
31890   -   -   -   -   -  -   -  - 355 55
31891   -   -   -   -   -  -   -  - 365 65
31892   -   -   -   -   -  -   -  - 370 70
31893   -   -   -   -   -  -   -  - 380 80
31894   -   -   -   -   -  -   -  - 385 85
31895   -   -   -   -   -  -   -  - 395 95
31896}
31897do_execsql_test joinD-1091 {
31898  SELECT t1.*, t2.*, t3.*, t4.*
31899  FROM t1 FULL JOIN t2 ON true
31900  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
31901  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31902  WHERE t1.b=t2.b AND t2.x>0
31903  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31904} {
31905   6 106 206 306 106  6 206  6   -  -
31906  12 112 212 312 112 12 212 12   -  -
31907  18 118 218 318 118 18 218 18   -  -
31908  24 124 224 324 124 24 224 24   -  -
31909  30 130 230 330 130 30 230 30 330 30
31910  36 136 236 336 136 36 236 36   -  -
31911  42 142 242 342 142 42 242 42   -  -
31912  48 148 248 348 148 48 248 48   -  -
31913  54 154 254 354 154 54 254 54   -  -
31914  60 160 260 360 160 60 260 60 360 60
31915  66 166 266 366 166 66 266 66   -  -
31916  72 172 272 372 172 72 272 72   -  -
31917  78 178 278 378 178 78 278 78   -  -
31918  84 184 284 384 184 84 284 84   -  -
31919  90 190 290 390 190 90 290 90 390 90
31920}
31921do_execsql_test joinD-1092 {
31922  SELECT t1.*, t2.*, t3.*, t4.*
31923  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31924  RIGHT JOIN t3 ON t1.c=t3.c
31925  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31926  WHERE t3.y>0
31927  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31928} {
31929   3 103 203 303   -  - 203  3   -  -
31930   6 106 206 306 106  6 206  6   -  -
31931   9 109 209 309   -  - 209  9   -  -
31932  12 112 212 312 112 12 212 12   -  -
31933  15 115 215 315   -  - 215 15 315 15
31934  18 118 218 318 118 18 218 18   -  -
31935  21 121 221 321   -  - 221 21   -  -
31936  24 124 224 324 124 24 224 24   -  -
31937  27 127 227 327   -  - 227 27   -  -
31938  30 130 230 330 130 30 230 30 330 30
31939  33 133 233 333   -  - 233 33   -  -
31940  36 136 236 336 136 36 236 36   -  -
31941  39 139 239 339   -  - 239 39   -  -
31942  42 142 242 342 142 42 242 42   -  -
31943  45 145 245 345   -  - 245 45 345 45
31944  48 148 248 348 148 48 248 48   -  -
31945  51 151 251 351   -  - 251 51   -  -
31946  54 154 254 354 154 54 254 54   -  -
31947  57 157 257 357   -  - 257 57   -  -
31948  60 160 260 360 160 60 260 60 360 60
31949  63 163 263 363   -  - 263 63   -  -
31950  66 166 266 366 166 66 266 66   -  -
31951  69 169 269 369   -  - 269 69   -  -
31952  72 172 272 372 172 72 272 72   -  -
31953  75 175 275 375   -  - 275 75 375 75
31954  78 178 278 378 178 78 278 78   -  -
31955  81 181 281 381   -  - 281 81   -  -
31956  84 184 284 384 184 84 284 84   -  -
31957  87 187 287 387   -  - 287 87   -  -
31958  90 190 290 390 190 90 290 90 390 90
31959  93 193 293 393   -  - 293 93   -  -
31960}
31961do_execsql_test joinD-1093 {
31962  SELECT t1.*, t2.*, t3.*, t4.*
31963  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
31964  RIGHT JOIN t3 ON t1.c=t3.c
31965  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
31966  WHERE t3.y>0 OR t3.y IS NULL
31967  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
31968} {
31969   3 103 203 303   -  - 203  3   -  -
31970   6 106 206 306 106  6 206  6   -  -
31971   9 109 209 309   -  - 209  9   -  -
31972  12 112 212 312 112 12 212 12   -  -
31973  15 115 215 315   -  - 215 15 315 15
31974  18 118 218 318 118 18 218 18   -  -
31975  21 121 221 321   -  - 221 21   -  -
31976  24 124 224 324 124 24 224 24   -  -
31977  27 127 227 327   -  - 227 27   -  -
31978  30 130 230 330 130 30 230 30 330 30
31979  33 133 233 333   -  - 233 33   -  -
31980  36 136 236 336 136 36 236 36   -  -
31981  39 139 239 339   -  - 239 39   -  -
31982  42 142 242 342 142 42 242 42   -  -
31983  45 145 245 345   -  - 245 45 345 45
31984  48 148 248 348 148 48 248 48   -  -
31985  51 151 251 351   -  - 251 51   -  -
31986  54 154 254 354 154 54 254 54   -  -
31987  57 157 257 357   -  - 257 57   -  -
31988  60 160 260 360 160 60 260 60 360 60
31989  63 163 263 363   -  - 263 63   -  -
31990  66 166 266 366 166 66 266 66   -  -
31991  69 169 269 369   -  - 269 69   -  -
31992  72 172 272 372 172 72 272 72   -  -
31993  75 175 275 375   -  - 275 75 375 75
31994  78 178 278 378 178 78 278 78   -  -
31995  81 181 281 381   -  - 281 81   -  -
31996  84 184 284 384 184 84 284 84   -  -
31997  87 187 287 387   -  - 287 87   -  -
31998  90 190 290 390 190 90 290 90 390 90
31999  93 193 293 393   -  - 293 93   -  -
32000   -   -   -   -   -  -   -  - 300  0
32001   -   -   -   -   -  -   -  - 305  5
32002   -   -   -   -   -  -   -  - 310 10
32003   -   -   -   -   -  -   -  - 320 20
32004   -   -   -   -   -  -   -  - 325 25
32005   -   -   -   -   -  -   -  - 335 35
32006   -   -   -   -   -  -   -  - 340 40
32007   -   -   -   -   -  -   -  - 350 50
32008   -   -   -   -   -  -   -  - 355 55
32009   -   -   -   -   -  -   -  - 365 65
32010   -   -   -   -   -  -   -  - 370 70
32011   -   -   -   -   -  -   -  - 380 80
32012   -   -   -   -   -  -   -  - 385 85
32013   -   -   -   -   -  -   -  - 395 95
32014}
32015do_execsql_test joinD-1094 {
32016  SELECT t1.*, t2.*, t3.*, t4.*
32017  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32018  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
32019  FULL JOIN t4 ON t1.d=t4.d
32020  WHERE t4.z>0
32021  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32022} {
32023  15 115 215 315   -  - 215 15 315 15
32024  30 130 230 330 130 30 230 30 330 30
32025  45 145 245 345   -  - 245 45 345 45
32026  60 160 260 360 160 60 260 60 360 60
32027  75 175 275 375   -  - 275 75 375 75
32028  90 190 290 390 190 90 290 90 390 90
32029   -   -   -   -   -  -   -  - 305  5
32030   -   -   -   -   -  -   -  - 310 10
32031   -   -   -   -   -  -   -  - 320 20
32032   -   -   -   -   -  -   -  - 325 25
32033   -   -   -   -   -  -   -  - 335 35
32034   -   -   -   -   -  -   -  - 340 40
32035   -   -   -   -   -  -   -  - 350 50
32036   -   -   -   -   -  -   -  - 355 55
32037   -   -   -   -   -  -   -  - 365 65
32038   -   -   -   -   -  -   -  - 370 70
32039   -   -   -   -   -  -   -  - 380 80
32040   -   -   -   -   -  -   -  - 385 85
32041   -   -   -   -   -  -   -  - 395 95
32042}
32043do_execsql_test joinD-1095 {
32044  SELECT t1.*, t2.*, t3.*, t4.*
32045  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32046  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
32047  FULL JOIN t4 ON t1.d=t4.d
32048  WHERE t4.z IS NULL OR t4.z>0
32049  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32050} {
32051   3 103 203 303   -  - 203  3   -  -
32052   6 106 206 306 106  6 206  6   -  -
32053   9 109 209 309   -  - 209  9   -  -
32054  12 112 212 312 112 12 212 12   -  -
32055  15 115 215 315   -  - 215 15 315 15
32056  18 118 218 318 118 18 218 18   -  -
32057  21 121 221 321   -  - 221 21   -  -
32058  24 124 224 324 124 24 224 24   -  -
32059  27 127 227 327   -  - 227 27   -  -
32060  30 130 230 330 130 30 230 30 330 30
32061  33 133 233 333   -  - 233 33   -  -
32062  36 136 236 336 136 36 236 36   -  -
32063  39 139 239 339   -  - 239 39   -  -
32064  42 142 242 342 142 42 242 42   -  -
32065  45 145 245 345   -  - 245 45 345 45
32066  48 148 248 348 148 48 248 48   -  -
32067  51 151 251 351   -  - 251 51   -  -
32068  54 154 254 354 154 54 254 54   -  -
32069  57 157 257 357   -  - 257 57   -  -
32070  60 160 260 360 160 60 260 60 360 60
32071  63 163 263 363   -  - 263 63   -  -
32072  66 166 266 366 166 66 266 66   -  -
32073  69 169 269 369   -  - 269 69   -  -
32074  72 172 272 372 172 72 272 72   -  -
32075  75 175 275 375   -  - 275 75 375 75
32076  78 178 278 378 178 78 278 78   -  -
32077  81 181 281 381   -  - 281 81   -  -
32078  84 184 284 384 184 84 284 84   -  -
32079  87 187 287 387   -  - 287 87   -  -
32080  90 190 290 390 190 90 290 90 390 90
32081  93 193 293 393   -  - 293 93   -  -
32082   -   -   -   -   -  - 200  0   -  -
32083   -   -   -   -   -  -   -  - 305  5
32084   -   -   -   -   -  -   -  - 310 10
32085   -   -   -   -   -  -   -  - 320 20
32086   -   -   -   -   -  -   -  - 325 25
32087   -   -   -   -   -  -   -  - 335 35
32088   -   -   -   -   -  -   -  - 340 40
32089   -   -   -   -   -  -   -  - 350 50
32090   -   -   -   -   -  -   -  - 355 55
32091   -   -   -   -   -  -   -  - 365 65
32092   -   -   -   -   -  -   -  - 370 70
32093   -   -   -   -   -  -   -  - 380 80
32094   -   -   -   -   -  -   -  - 385 85
32095   -   -   -   -   -  -   -  - 395 95
32096}
32097do_execsql_test joinD-1096 {
32098  SELECT t1.*, t2.*, t3.*, t4.*
32099  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32100  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
32101  FULL JOIN t4 ON t1.d=t4.d
32102  WHERE t2.x>0 AND t4.z>0
32103  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32104} {
32105  30 130 230 330 130 30 230 30 330 30
32106  60 160 260 360 160 60 260 60 360 60
32107  90 190 290 390 190 90 290 90 390 90
32108}
32109do_execsql_test joinD-1097 {
32110  SELECT t1.*, t2.*, t3.*, t4.*
32111  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32112  RIGHT JOIN t3 ON t1.c=t3.c
32113  FULL JOIN t4 ON t1.d=t4.d
32114  WHERE t4.z>0 AND t3.y>0
32115  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32116} {
32117  15 115 215 315   -  - 215 15 315 15
32118  30 130 230 330 130 30 230 30 330 30
32119  45 145 245 345   -  - 245 45 345 45
32120  60 160 260 360 160 60 260 60 360 60
32121  75 175 275 375   -  - 275 75 375 75
32122  90 190 290 390 190 90 290 90 390 90
32123}
32124do_execsql_test joinD-1098 {
32125  SELECT t1.*, t2.*, t3.*, t4.*
32126  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32127  RIGHT JOIN t3 ON t1.c=t3.c
32128  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
32129  WHERE t2.x>0 AND t3.y>0
32130  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32131} {
32132   6 106 206 306 106  6 206  6   -  -
32133  12 112 212 312 112 12 212 12   -  -
32134  18 118 218 318 118 18 218 18   -  -
32135  24 124 224 324 124 24 224 24   -  -
32136  30 130 230 330 130 30 230 30 330 30
32137  36 136 236 336 136 36 236 36   -  -
32138  42 142 242 342 142 42 242 42   -  -
32139  48 148 248 348 148 48 248 48   -  -
32140  54 154 254 354 154 54 254 54   -  -
32141  60 160 260 360 160 60 260 60 360 60
32142  66 166 266 366 166 66 266 66   -  -
32143  72 172 272 372 172 72 272 72   -  -
32144  78 178 278 378 178 78 278 78   -  -
32145  84 184 284 384 184 84 284 84   -  -
32146  90 190 290 390 190 90 290 90 390 90
32147}
32148do_execsql_test joinD-1099 {
32149  SELECT t1.*, t2.*, t3.*, t4.*
32150  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32151  RIGHT JOIN t3 ON t1.c=t3.c
32152  FULL JOIN t4 ON t1.d=t4.d
32153  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
32154  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32155} {
32156  30 130 230 330 130 30 230 30 330 30
32157  60 160 260 360 160 60 260 60 360 60
32158  90 190 290 390 190 90 290 90 390 90
32159}
32160do_execsql_test joinD-1100 {
32161  SELECT t1.*, t2.*, t3.*, t4.*
32162  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
32163  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
32164  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
32165  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32166} {
32167   3 103 203 303   -  - 203  3   -  -
32168   6 106 206 306 106  6 206  6   -  -
32169   9 109 209 309   -  - 209  9   -  -
32170  12 112 212 312 112 12 212 12   -  -
32171  15 115 215 315   -  - 215 15 315 15
32172  18 118 218 318 118 18 218 18   -  -
32173  21 121 221 321   -  - 221 21   -  -
32174  24 124 224 324 124 24 224 24   -  -
32175  27 127 227 327   -  - 227 27   -  -
32176  30 130 230 330 130 30 230 30 330 30
32177  33 133 233 333   -  - 233 33   -  -
32178  36 136 236 336 136 36 236 36   -  -
32179  39 139 239 339   -  - 239 39   -  -
32180  42 142 242 342 142 42 242 42   -  -
32181  45 145 245 345   -  - 245 45 345 45
32182  48 148 248 348 148 48 248 48   -  -
32183  51 151 251 351   -  - 251 51   -  -
32184  54 154 254 354 154 54 254 54   -  -
32185  57 157 257 357   -  - 257 57   -  -
32186  60 160 260 360 160 60 260 60 360 60
32187  63 163 263 363   -  - 263 63   -  -
32188  66 166 266 366 166 66 266 66   -  -
32189  69 169 269 369   -  - 269 69   -  -
32190  72 172 272 372 172 72 272 72   -  -
32191  75 175 275 375   -  - 275 75 375 75
32192  78 178 278 378 178 78 278 78   -  -
32193  81 181 281 381   -  - 281 81   -  -
32194  84 184 284 384 184 84 284 84   -  -
32195  87 187 287 387   -  - 287 87   -  -
32196  90 190 290 390 190 90 290 90 390 90
32197  93 193 293 393   -  - 293 93   -  -
32198   -   -   -   -   -  - 200  0   -  -
32199   -   -   -   -   -  -   -  - 300  0
32200   -   -   -   -   -  -   -  - 305  5
32201   -   -   -   -   -  -   -  - 310 10
32202   -   -   -   -   -  -   -  - 320 20
32203   -   -   -   -   -  -   -  - 325 25
32204   -   -   -   -   -  -   -  - 335 35
32205   -   -   -   -   -  -   -  - 340 40
32206   -   -   -   -   -  -   -  - 350 50
32207   -   -   -   -   -  -   -  - 355 55
32208   -   -   -   -   -  -   -  - 365 65
32209   -   -   -   -   -  -   -  - 370 70
32210   -   -   -   -   -  -   -  - 380 80
32211   -   -   -   -   -  -   -  - 385 85
32212   -   -   -   -   -  -   -  - 395 95
32213}
32214do_execsql_test joinD-1101 {
32215  SELECT t1.*, t2.*, t3.*, t4.*
32216  FROM t1 FULL JOIN t2 ON t2.x>0
32217  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
32218  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
32219  WHERE t1.b = t2.b
32220  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32221} {
32222   6 106 206 306 106  6 206  6   -  -
32223  12 112 212 312 112 12 212 12   -  -
32224  18 118 218 318 118 18 218 18   -  -
32225  24 124 224 324 124 24 224 24   -  -
32226  30 130 230 330 130 30 230 30 330 30
32227  36 136 236 336 136 36 236 36   -  -
32228  42 142 242 342 142 42 242 42   -  -
32229  48 148 248 348 148 48 248 48   -  -
32230  54 154 254 354 154 54 254 54   -  -
32231  60 160 260 360 160 60 260 60 360 60
32232  66 166 266 366 166 66 266 66   -  -
32233  72 172 272 372 172 72 272 72   -  -
32234  78 178 278 378 178 78 278 78   -  -
32235  84 184 284 384 184 84 284 84   -  -
32236  90 190 290 390 190 90 290 90 390 90
32237}
32238do_execsql_test joinD-1102 {
32239  SELECT t1.*, t2.*, t3.*, t4.*
32240  FROM t1 FULL JOIN t2 ON t2.x>0
32241  RIGHT JOIN t3 ON t3.y>0
32242  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
32243  WHERE t1.b = t2.b AND t1.c IS NOT DISTINCT FROM t3.c
32244  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32245} {
32246   6 106 206 306 106  6 206  6   -  -
32247  12 112 212 312 112 12 212 12   -  -
32248  18 118 218 318 118 18 218 18   -  -
32249  24 124 224 324 124 24 224 24   -  -
32250  30 130 230 330 130 30 230 30 330 30
32251  36 136 236 336 136 36 236 36   -  -
32252  42 142 242 342 142 42 242 42   -  -
32253  48 148 248 348 148 48 248 48   -  -
32254  54 154 254 354 154 54 254 54   -  -
32255  60 160 260 360 160 60 260 60 360 60
32256  66 166 266 366 166 66 266 66   -  -
32257  72 172 272 372 172 72 272 72   -  -
32258  78 178 278 378 178 78 278 78   -  -
32259  84 184 284 384 184 84 284 84   -  -
32260  90 190 290 390 190 90 290 90 390 90
32261}
32262do_execsql_test joinD-1103 {
32263  SELECT t1.*, t2.*, t3.*, t4.*
32264  FROM t1 FULL JOIN t2 ON t2.x>0
32265  RIGHT JOIN t3 ON t1.c IS NOT DISTINCT FROM t3.c AND t3.y>0
32266  FULL JOIN t4 ON t4.z>0
32267  WHERE t1.b = t2.b AND t1.d = t4.d
32268  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32269} {
32270  30 130 230 330 130 30 230 30 330 30
32271  60 160 260 360 160 60 260 60 360 60
32272  90 190 290 390 190 90 290 90 390 90
32273}
32274do_execsql_test joinD-1104 {
32275  SELECT t1.*, t2.*, t3.*, t4.*
32276  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32277  RIGHT JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0
32278  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
32279  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32280} {
32281   3 103 203 303   -  - 203  3   -  -
32282   6 106 206 306 106  6 206  6   -  -
32283   9 109 209 309   -  - 209  9   -  -
32284  12 112 212 312 112 12 212 12   -  -
32285  15 115 215 315   -  - 215 15 315 15
32286  18 118 218 318 118 18 218 18   -  -
32287  21 121 221 321   -  - 221 21   -  -
32288  24 124 224 324 124 24 224 24   -  -
32289  27 127 227 327   -  - 227 27   -  -
32290  30 130 230 330 130 30 230 30 330 30
32291  33 133 233 333   -  - 233 33   -  -
32292  36 136 236 336 136 36 236 36   -  -
32293  39 139 239 339   -  - 239 39   -  -
32294  42 142 242 342 142 42 242 42   -  -
32295  45 145 245 345   -  - 245 45 345 45
32296  48 148 248 348 148 48 248 48   -  -
32297  51 151 251 351   -  - 251 51   -  -
32298  54 154 254 354 154 54 254 54   -  -
32299  57 157 257 357   -  - 257 57   -  -
32300  60 160 260 360 160 60 260 60 360 60
32301  63 163 263 363   -  - 263 63   -  -
32302  66 166 266 366 166 66 266 66   -  -
32303  69 169 269 369   -  - 269 69   -  -
32304  72 172 272 372 172 72 272 72   -  -
32305  75 175 275 375   -  - 275 75 375 75
32306  78 178 278 378 178 78 278 78   -  -
32307  81 181 281 381   -  - 281 81   -  -
32308  84 184 284 384 184 84 284 84   -  -
32309  87 187 287 387   -  - 287 87   -  -
32310  90 190 290 390 190 90 290 90 390 90
32311  93 193 293 393   -  - 293 93   -  -
32312   -   -   -   -   -  - 200  0   -  -
32313   -   -   -   -   -  -   -  - 300  0
32314   -   -   -   -   -  -   -  - 305  5
32315   -   -   -   -   -  -   -  - 310 10
32316   -   -   -   -   -  -   -  - 320 20
32317   -   -   -   -   -  -   -  - 325 25
32318   -   -   -   -   -  -   -  - 335 35
32319   -   -   -   -   -  -   -  - 340 40
32320   -   -   -   -   -  -   -  - 350 50
32321   -   -   -   -   -  -   -  - 355 55
32322   -   -   -   -   -  -   -  - 365 65
32323   -   -   -   -   -  -   -  - 370 70
32324   -   -   -   -   -  -   -  - 380 80
32325   -   -   -   -   -  -   -  - 385 85
32326   -   -   -   -   -  -   -  - 395 95
32327}
32328do_execsql_test joinD-1105 {
32329  SELECT t1.*, t2.*, t3.*, t4.*
32330  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32331  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32332  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32333  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32334} {
32335   5 105 205 305   -  -   -  - 305  5
32336  10 110 210 310 110 10   -  - 310 10
32337  15 115 215 315   -  - 215 15 315 15
32338  20 120 220 320 120 20   -  - 320 20
32339  25 125 225 325   -  -   -  - 325 25
32340  30 130 230 330 130 30 230 30 330 30
32341  35 135 235 335   -  -   -  - 335 35
32342  40 140 240 340 140 40   -  - 340 40
32343  45 145 245 345   -  - 245 45 345 45
32344  50 150 250 350 150 50   -  - 350 50
32345  55 155 255 355   -  -   -  - 355 55
32346  60 160 260 360 160 60 260 60 360 60
32347  65 165 265 365   -  -   -  - 365 65
32348  70 170 270 370 170 70   -  - 370 70
32349  75 175 275 375   -  - 275 75 375 75
32350  80 180 280 380 180 80   -  - 380 80
32351  85 185 285 385   -  -   -  - 385 85
32352  90 190 290 390 190 90 290 90 390 90
32353  95 195 295 395   -  -   -  - 395 95
32354}
32355do_execsql_test joinD-1106 {
32356  SELECT t1.*, t2.*, t3.*, t4.*
32357  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32358  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32359  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32360  WHERE t2.x>0
32361  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32362} {
32363  10 110 210 310 110 10   -  - 310 10
32364  20 120 220 320 120 20   -  - 320 20
32365  30 130 230 330 130 30 230 30 330 30
32366  40 140 240 340 140 40   -  - 340 40
32367  50 150 250 350 150 50   -  - 350 50
32368  60 160 260 360 160 60 260 60 360 60
32369  70 170 270 370 170 70   -  - 370 70
32370  80 180 280 380 180 80   -  - 380 80
32371  90 190 290 390 190 90 290 90 390 90
32372}
32373do_execsql_test joinD-1107 {
32374  SELECT t1.*, t2.*, t3.*, t4.*
32375  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32376  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32377  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32378  WHERE (t2.x>0 OR t2.x IS NULL)
32379  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32380} {
32381   5 105 205 305   -  -   -  - 305  5
32382  10 110 210 310 110 10   -  - 310 10
32383  15 115 215 315   -  - 215 15 315 15
32384  20 120 220 320 120 20   -  - 320 20
32385  25 125 225 325   -  -   -  - 325 25
32386  30 130 230 330 130 30 230 30 330 30
32387  35 135 235 335   -  -   -  - 335 35
32388  40 140 240 340 140 40   -  - 340 40
32389  45 145 245 345   -  - 245 45 345 45
32390  50 150 250 350 150 50   -  - 350 50
32391  55 155 255 355   -  -   -  - 355 55
32392  60 160 260 360 160 60 260 60 360 60
32393  65 165 265 365   -  -   -  - 365 65
32394  70 170 270 370 170 70   -  - 370 70
32395  75 175 275 375   -  - 275 75 375 75
32396  80 180 280 380 180 80   -  - 380 80
32397  85 185 285 385   -  -   -  - 385 85
32398  90 190 290 390 190 90 290 90 390 90
32399  95 195 295 395   -  -   -  - 395 95
32400}
32401do_execsql_test joinD-1108 {
32402  SELECT t1.*, t2.*, t3.*, t4.*
32403  FROM t1 FULL JOIN t2 ON true
32404  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32405  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32406  WHERE t1.b=t2.b AND t2.x>0
32407  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32408} {
32409  10 110 210 310 110 10   -  - 310 10
32410  20 120 220 320 120 20   -  - 320 20
32411  30 130 230 330 130 30 230 30 330 30
32412  40 140 240 340 140 40   -  - 340 40
32413  50 150 250 350 150 50   -  - 350 50
32414  60 160 260 360 160 60 260 60 360 60
32415  70 170 270 370 170 70   -  - 370 70
32416  80 180 280 380 180 80   -  - 380 80
32417  90 190 290 390 190 90 290 90 390 90
32418}
32419do_execsql_test joinD-1109 {
32420  SELECT t1.*, t2.*, t3.*, t4.*
32421  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32422  FULL JOIN t3 ON t1.c=t3.c
32423  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32424  WHERE t3.y>0
32425  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32426} {
32427  15 115 215 315   -  - 215 15 315 15
32428  30 130 230 330 130 30 230 30 330 30
32429  45 145 245 345   -  - 245 45 345 45
32430  60 160 260 360 160 60 260 60 360 60
32431  75 175 275 375   -  - 275 75 375 75
32432  90 190 290 390 190 90 290 90 390 90
32433}
32434do_execsql_test joinD-1110 {
32435  SELECT t1.*, t2.*, t3.*, t4.*
32436  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32437  FULL JOIN t3 ON t1.c=t3.c
32438  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32439  WHERE t3.y>0 OR t3.y IS NULL
32440  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32441} {
32442   5 105 205 305   -  -   -  - 305  5
32443  10 110 210 310 110 10   -  - 310 10
32444  15 115 215 315   -  - 215 15 315 15
32445  20 120 220 320 120 20   -  - 320 20
32446  25 125 225 325   -  -   -  - 325 25
32447  30 130 230 330 130 30 230 30 330 30
32448  35 135 235 335   -  -   -  - 335 35
32449  40 140 240 340 140 40   -  - 340 40
32450  45 145 245 345   -  - 245 45 345 45
32451  50 150 250 350 150 50   -  - 350 50
32452  55 155 255 355   -  -   -  - 355 55
32453  60 160 260 360 160 60 260 60 360 60
32454  65 165 265 365   -  -   -  - 365 65
32455  70 170 270 370 170 70   -  - 370 70
32456  75 175 275 375   -  - 275 75 375 75
32457  80 180 280 380 180 80   -  - 380 80
32458  85 185 285 385   -  -   -  - 385 85
32459  90 190 290 390 190 90 290 90 390 90
32460  95 195 295 395   -  -   -  - 395 95
32461}
32462do_execsql_test joinD-1111 {
32463  SELECT t1.*, t2.*, t3.*, t4.*
32464  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32465  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32466  INNER JOIN t4 ON t1.d=t4.d
32467  WHERE t4.z>0
32468  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32469} {
32470   5 105 205 305   -  -   -  - 305  5
32471  10 110 210 310 110 10   -  - 310 10
32472  15 115 215 315   -  - 215 15 315 15
32473  20 120 220 320 120 20   -  - 320 20
32474  25 125 225 325   -  -   -  - 325 25
32475  30 130 230 330 130 30 230 30 330 30
32476  35 135 235 335   -  -   -  - 335 35
32477  40 140 240 340 140 40   -  - 340 40
32478  45 145 245 345   -  - 245 45 345 45
32479  50 150 250 350 150 50   -  - 350 50
32480  55 155 255 355   -  -   -  - 355 55
32481  60 160 260 360 160 60 260 60 360 60
32482  65 165 265 365   -  -   -  - 365 65
32483  70 170 270 370 170 70   -  - 370 70
32484  75 175 275 375   -  - 275 75 375 75
32485  80 180 280 380 180 80   -  - 380 80
32486  85 185 285 385   -  -   -  - 385 85
32487  90 190 290 390 190 90 290 90 390 90
32488  95 195 295 395   -  -   -  - 395 95
32489}
32490do_execsql_test joinD-1112 {
32491  SELECT t1.*, t2.*, t3.*, t4.*
32492  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32493  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32494  INNER JOIN t4 ON t1.d=t4.d
32495  WHERE t4.z IS NULL OR t4.z>0
32496  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32497} {
32498   5 105 205 305   -  -   -  - 305  5
32499  10 110 210 310 110 10   -  - 310 10
32500  15 115 215 315   -  - 215 15 315 15
32501  20 120 220 320 120 20   -  - 320 20
32502  25 125 225 325   -  -   -  - 325 25
32503  30 130 230 330 130 30 230 30 330 30
32504  35 135 235 335   -  -   -  - 335 35
32505  40 140 240 340 140 40   -  - 340 40
32506  45 145 245 345   -  - 245 45 345 45
32507  50 150 250 350 150 50   -  - 350 50
32508  55 155 255 355   -  -   -  - 355 55
32509  60 160 260 360 160 60 260 60 360 60
32510  65 165 265 365   -  -   -  - 365 65
32511  70 170 270 370 170 70   -  - 370 70
32512  75 175 275 375   -  - 275 75 375 75
32513  80 180 280 380 180 80   -  - 380 80
32514  85 185 285 385   -  -   -  - 385 85
32515  90 190 290 390 190 90 290 90 390 90
32516  95 195 295 395   -  -   -  - 395 95
32517}
32518do_execsql_test joinD-1113 {
32519  SELECT t1.*, t2.*, t3.*, t4.*
32520  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32521  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32522  INNER JOIN t4 ON t1.d=t4.d
32523  WHERE t2.x>0 AND t4.z>0
32524  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32525} {
32526  10 110 210 310 110 10   -  - 310 10
32527  20 120 220 320 120 20   -  - 320 20
32528  30 130 230 330 130 30 230 30 330 30
32529  40 140 240 340 140 40   -  - 340 40
32530  50 150 250 350 150 50   -  - 350 50
32531  60 160 260 360 160 60 260 60 360 60
32532  70 170 270 370 170 70   -  - 370 70
32533  80 180 280 380 180 80   -  - 380 80
32534  90 190 290 390 190 90 290 90 390 90
32535}
32536do_execsql_test joinD-1114 {
32537  SELECT t1.*, t2.*, t3.*, t4.*
32538  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32539  FULL JOIN t3 ON t1.c=t3.c
32540  INNER JOIN t4 ON t1.d=t4.d
32541  WHERE t4.z>0 AND t3.y>0
32542  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32543} {
32544  15 115 215 315   -  - 215 15 315 15
32545  30 130 230 330 130 30 230 30 330 30
32546  45 145 245 345   -  - 245 45 345 45
32547  60 160 260 360 160 60 260 60 360 60
32548  75 175 275 375   -  - 275 75 375 75
32549  90 190 290 390 190 90 290 90 390 90
32550}
32551do_execsql_test joinD-1115 {
32552  SELECT t1.*, t2.*, t3.*, t4.*
32553  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32554  FULL JOIN t3 ON t1.c=t3.c
32555  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
32556  WHERE t2.x>0 AND t3.y>0
32557  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32558} {
32559  30 130 230 330 130 30 230 30 330 30
32560  60 160 260 360 160 60 260 60 360 60
32561  90 190 290 390 190 90 290 90 390 90
32562}
32563do_execsql_test joinD-1116 {
32564  SELECT t1.*, t2.*, t3.*, t4.*
32565  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32566  FULL JOIN t3 ON t1.c=t3.c
32567  INNER JOIN t4 ON t1.d=t4.d
32568  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
32569  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32570} {
32571  30 130 230 330 130 30 230 30 330 30
32572  60 160 260 360 160 60 260 60 360 60
32573  90 190 290 390 190 90 290 90 390 90
32574}
32575do_execsql_test joinD-1117 {
32576  SELECT t1.*, t2.*, t3.*, t4.*
32577  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
32578  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
32579  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
32580  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32581} {
32582   5 105 205 305   -  -   -  - 305  5
32583  10 110 210 310 110 10   -  - 310 10
32584  15 115 215 315   -  - 215 15 315 15
32585  20 120 220 320 120 20   -  - 320 20
32586  25 125 225 325   -  -   -  - 325 25
32587  30 130 230 330 130 30 230 30 330 30
32588  35 135 235 335   -  -   -  - 335 35
32589  40 140 240 340 140 40   -  - 340 40
32590  45 145 245 345   -  - 245 45 345 45
32591  50 150 250 350 150 50   -  - 350 50
32592  55 155 255 355   -  -   -  - 355 55
32593  60 160 260 360 160 60 260 60 360 60
32594  65 165 265 365   -  -   -  - 365 65
32595  70 170 270 370 170 70   -  - 370 70
32596  75 175 275 375   -  - 275 75 375 75
32597  80 180 280 380 180 80   -  - 380 80
32598  85 185 285 385   -  -   -  - 385 85
32599  90 190 290 390 190 90 290 90 390 90
32600  95 195 295 395   -  -   -  - 395 95
32601}
32602do_execsql_test joinD-1118 {
32603  SELECT t1.*, t2.*, t3.*, t4.*
32604  FROM t1 FULL JOIN t2 ON t2.x>0
32605  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
32606  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
32607  WHERE t1.b = t2.b
32608  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32609} {
32610  10 110 210 310 110 10   -  - 310 10
32611  20 120 220 320 120 20   -  - 320 20
32612  30 130 230 330 130 30 230 30 330 30
32613  40 140 240 340 140 40   -  - 340 40
32614  50 150 250 350 150 50   -  - 350 50
32615  60 160 260 360 160 60 260 60 360 60
32616  70 170 270 370 170 70   -  - 370 70
32617  80 180 280 380 180 80   -  - 380 80
32618  90 190 290 390 190 90 290 90 390 90
32619}
32620do_execsql_test joinD-1119 {
32621  SELECT t1.*, t2.*, t3.*, t4.*
32622  FROM t1 FULL JOIN t2 ON t2.x>0
32623  FULL JOIN t3 ON t3.y>0
32624  INNER JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
32625  WHERE t1.b = t2.b AND t1.c = t3.c
32626  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32627} {
32628  30 130 230 330 130 30 230 30 330 30
32629  60 160 260 360 160 60 260 60 360 60
32630  90 190 290 390 190 90 290 90 390 90
32631}
32632do_execsql_test joinD-1120 {
32633  SELECT t1.*, t2.*, t3.*, t4.*
32634  FROM t1 FULL JOIN t2 ON t2.x>0
32635  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
32636  INNER JOIN t4 ON t4.z>0
32637  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
32638  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32639} {
32640  10 110 210 310 110 10   -  - 310 10
32641  20 120 220 320 120 20   -  - 320 20
32642  30 130 230 330 130 30 230 30 330 30
32643  40 140 240 340 140 40   -  - 340 40
32644  50 150 250 350 150 50   -  - 350 50
32645  60 160 260 360 160 60 260 60 360 60
32646  70 170 270 370 170 70   -  - 370 70
32647  80 180 280 380 180 80   -  - 380 80
32648  90 190 290 390 190 90 290 90 390 90
32649}
32650do_execsql_test joinD-1121 {
32651  SELECT t1.*, t2.*, t3.*, t4.*
32652  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32653  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32654  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32655  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32656} {
32657   0 100 200 300   -  -   -  -   -  -
32658   1 101 201 301   -  -   -  -   -  -
32659   2 102 202 302 102  2   -  -   -  -
32660   3 103 203 303   -  - 203  3   -  -
32661   4 104 204 304 104  4   -  -   -  -
32662   5 105 205 305   -  -   -  - 305  5
32663   6 106 206 306 106  6 206  6   -  -
32664   7 107 207 307   -  -   -  -   -  -
32665   8 108 208 308 108  8   -  -   -  -
32666   9 109 209 309   -  - 209  9   -  -
32667  10 110 210 310 110 10   -  - 310 10
32668  11 111 211 311   -  -   -  -   -  -
32669  12 112 212 312 112 12 212 12   -  -
32670  13 113 213 313   -  -   -  -   -  -
32671  14 114 214 314 114 14   -  -   -  -
32672  15 115 215 315   -  - 215 15 315 15
32673  16 116 216 316 116 16   -  -   -  -
32674  17 117 217 317   -  -   -  -   -  -
32675  18 118 218 318 118 18 218 18   -  -
32676  19 119 219 319   -  -   -  -   -  -
32677  20 120 220 320 120 20   -  - 320 20
32678  21 121 221 321   -  - 221 21   -  -
32679  22 122 222 322 122 22   -  -   -  -
32680  23 123 223 323   -  -   -  -   -  -
32681  24 124 224 324 124 24 224 24   -  -
32682  25 125 225 325   -  -   -  - 325 25
32683  26 126 226 326 126 26   -  -   -  -
32684  27 127 227 327   -  - 227 27   -  -
32685  28 128 228 328 128 28   -  -   -  -
32686  29 129 229 329   -  -   -  -   -  -
32687  30 130 230 330 130 30 230 30 330 30
32688  31 131 231 331   -  -   -  -   -  -
32689  32 132 232 332 132 32   -  -   -  -
32690  33 133 233 333   -  - 233 33   -  -
32691  34 134 234 334 134 34   -  -   -  -
32692  35 135 235 335   -  -   -  - 335 35
32693  36 136 236 336 136 36 236 36   -  -
32694  37 137 237 337   -  -   -  -   -  -
32695  38 138 238 338 138 38   -  -   -  -
32696  39 139 239 339   -  - 239 39   -  -
32697  40 140 240 340 140 40   -  - 340 40
32698  41 141 241 341   -  -   -  -   -  -
32699  42 142 242 342 142 42 242 42   -  -
32700  43 143 243 343   -  -   -  -   -  -
32701  44 144 244 344 144 44   -  -   -  -
32702  45 145 245 345   -  - 245 45 345 45
32703  46 146 246 346 146 46   -  -   -  -
32704  47 147 247 347   -  -   -  -   -  -
32705  48 148 248 348 148 48 248 48   -  -
32706  49 149 249 349   -  -   -  -   -  -
32707  50 150 250 350 150 50   -  - 350 50
32708  51 151 251 351   -  - 251 51   -  -
32709  52 152 252 352 152 52   -  -   -  -
32710  53 153 253 353   -  -   -  -   -  -
32711  54 154 254 354 154 54 254 54   -  -
32712  55 155 255 355   -  -   -  - 355 55
32713  56 156 256 356 156 56   -  -   -  -
32714  57 157 257 357   -  - 257 57   -  -
32715  58 158 258 358 158 58   -  -   -  -
32716  59 159 259 359   -  -   -  -   -  -
32717  60 160 260 360 160 60 260 60 360 60
32718  61 161 261 361   -  -   -  -   -  -
32719  62 162 262 362 162 62   -  -   -  -
32720  63 163 263 363   -  - 263 63   -  -
32721  64 164 264 364 164 64   -  -   -  -
32722  65 165 265 365   -  -   -  - 365 65
32723  66 166 266 366 166 66 266 66   -  -
32724  67 167 267 367   -  -   -  -   -  -
32725  68 168 268 368 168 68   -  -   -  -
32726  69 169 269 369   -  - 269 69   -  -
32727  70 170 270 370 170 70   -  - 370 70
32728  71 171 271 371   -  -   -  -   -  -
32729  72 172 272 372 172 72 272 72   -  -
32730  73 173 273 373   -  -   -  -   -  -
32731  74 174 274 374 174 74   -  -   -  -
32732  75 175 275 375   -  - 275 75 375 75
32733  76 176 276 376 176 76   -  -   -  -
32734  77 177 277 377   -  -   -  -   -  -
32735  78 178 278 378 178 78 278 78   -  -
32736  79 179 279 379   -  -   -  -   -  -
32737  80 180 280 380 180 80   -  - 380 80
32738  81 181 281 381   -  - 281 81   -  -
32739  82 182 282 382 182 82   -  -   -  -
32740  83 183 283 383   -  -   -  -   -  -
32741  84 184 284 384 184 84 284 84   -  -
32742  85 185 285 385   -  -   -  - 385 85
32743  86 186 286 386 186 86   -  -   -  -
32744  87 187 287 387   -  - 287 87   -  -
32745  88 188 288 388 188 88   -  -   -  -
32746  89 189 289 389   -  -   -  -   -  -
32747  90 190 290 390 190 90 290 90 390 90
32748  91 191 291 391   -  -   -  -   -  -
32749  92 192 292 392 192 92   -  -   -  -
32750  93 193 293 393   -  - 293 93   -  -
32751  94 194 294 394 194 94   -  -   -  -
32752  95 195 295 395   -  -   -  - 395 95
32753  96   - 296 396   -  -   -  -   -  -
32754  97 197   - 397   -  -   -  -   -  -
32755  98 198 298   -   -  -   -  -   -  -
32756  99   -   -   -   -  -   -  -   -  -
32757   -   -   -   - 100  0   -  -   -  -
32758   -   -   -   -   -  - 200  0   -  -
32759}
32760do_execsql_test joinD-1122 {
32761  SELECT t1.*, t2.*, t3.*, t4.*
32762  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32763  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32764  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32765  WHERE t2.x>0
32766  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32767} {
32768   2 102 202 302 102  2   -  -   -  -
32769   4 104 204 304 104  4   -  -   -  -
32770   6 106 206 306 106  6 206  6   -  -
32771   8 108 208 308 108  8   -  -   -  -
32772  10 110 210 310 110 10   -  - 310 10
32773  12 112 212 312 112 12 212 12   -  -
32774  14 114 214 314 114 14   -  -   -  -
32775  16 116 216 316 116 16   -  -   -  -
32776  18 118 218 318 118 18 218 18   -  -
32777  20 120 220 320 120 20   -  - 320 20
32778  22 122 222 322 122 22   -  -   -  -
32779  24 124 224 324 124 24 224 24   -  -
32780  26 126 226 326 126 26   -  -   -  -
32781  28 128 228 328 128 28   -  -   -  -
32782  30 130 230 330 130 30 230 30 330 30
32783  32 132 232 332 132 32   -  -   -  -
32784  34 134 234 334 134 34   -  -   -  -
32785  36 136 236 336 136 36 236 36   -  -
32786  38 138 238 338 138 38   -  -   -  -
32787  40 140 240 340 140 40   -  - 340 40
32788  42 142 242 342 142 42 242 42   -  -
32789  44 144 244 344 144 44   -  -   -  -
32790  46 146 246 346 146 46   -  -   -  -
32791  48 148 248 348 148 48 248 48   -  -
32792  50 150 250 350 150 50   -  - 350 50
32793  52 152 252 352 152 52   -  -   -  -
32794  54 154 254 354 154 54 254 54   -  -
32795  56 156 256 356 156 56   -  -   -  -
32796  58 158 258 358 158 58   -  -   -  -
32797  60 160 260 360 160 60 260 60 360 60
32798  62 162 262 362 162 62   -  -   -  -
32799  64 164 264 364 164 64   -  -   -  -
32800  66 166 266 366 166 66 266 66   -  -
32801  68 168 268 368 168 68   -  -   -  -
32802  70 170 270 370 170 70   -  - 370 70
32803  72 172 272 372 172 72 272 72   -  -
32804  74 174 274 374 174 74   -  -   -  -
32805  76 176 276 376 176 76   -  -   -  -
32806  78 178 278 378 178 78 278 78   -  -
32807  80 180 280 380 180 80   -  - 380 80
32808  82 182 282 382 182 82   -  -   -  -
32809  84 184 284 384 184 84 284 84   -  -
32810  86 186 286 386 186 86   -  -   -  -
32811  88 188 288 388 188 88   -  -   -  -
32812  90 190 290 390 190 90 290 90 390 90
32813  92 192 292 392 192 92   -  -   -  -
32814  94 194 294 394 194 94   -  -   -  -
32815}
32816do_execsql_test joinD-1123 {
32817  SELECT t1.*, t2.*, t3.*, t4.*
32818  FROM t1 FULL JOIN t2 ON t1.b=t2.b
32819  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32820  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32821  WHERE (t2.x>0 OR t2.x IS NULL)
32822  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32823} {
32824   1 101 201 301   -  -   -  -   -  -
32825   2 102 202 302 102  2   -  -   -  -
32826   3 103 203 303   -  - 203  3   -  -
32827   4 104 204 304 104  4   -  -   -  -
32828   5 105 205 305   -  -   -  - 305  5
32829   6 106 206 306 106  6 206  6   -  -
32830   7 107 207 307   -  -   -  -   -  -
32831   8 108 208 308 108  8   -  -   -  -
32832   9 109 209 309   -  - 209  9   -  -
32833  10 110 210 310 110 10   -  - 310 10
32834  11 111 211 311   -  -   -  -   -  -
32835  12 112 212 312 112 12 212 12   -  -
32836  13 113 213 313   -  -   -  -   -  -
32837  14 114 214 314 114 14   -  -   -  -
32838  15 115 215 315   -  - 215 15 315 15
32839  16 116 216 316 116 16   -  -   -  -
32840  17 117 217 317   -  -   -  -   -  -
32841  18 118 218 318 118 18 218 18   -  -
32842  19 119 219 319   -  -   -  -   -  -
32843  20 120 220 320 120 20   -  - 320 20
32844  21 121 221 321   -  - 221 21   -  -
32845  22 122 222 322 122 22   -  -   -  -
32846  23 123 223 323   -  -   -  -   -  -
32847  24 124 224 324 124 24 224 24   -  -
32848  25 125 225 325   -  -   -  - 325 25
32849  26 126 226 326 126 26   -  -   -  -
32850  27 127 227 327   -  - 227 27   -  -
32851  28 128 228 328 128 28   -  -   -  -
32852  29 129 229 329   -  -   -  -   -  -
32853  30 130 230 330 130 30 230 30 330 30
32854  31 131 231 331   -  -   -  -   -  -
32855  32 132 232 332 132 32   -  -   -  -
32856  33 133 233 333   -  - 233 33   -  -
32857  34 134 234 334 134 34   -  -   -  -
32858  35 135 235 335   -  -   -  - 335 35
32859  36 136 236 336 136 36 236 36   -  -
32860  37 137 237 337   -  -   -  -   -  -
32861  38 138 238 338 138 38   -  -   -  -
32862  39 139 239 339   -  - 239 39   -  -
32863  40 140 240 340 140 40   -  - 340 40
32864  41 141 241 341   -  -   -  -   -  -
32865  42 142 242 342 142 42 242 42   -  -
32866  43 143 243 343   -  -   -  -   -  -
32867  44 144 244 344 144 44   -  -   -  -
32868  45 145 245 345   -  - 245 45 345 45
32869  46 146 246 346 146 46   -  -   -  -
32870  47 147 247 347   -  -   -  -   -  -
32871  48 148 248 348 148 48 248 48   -  -
32872  49 149 249 349   -  -   -  -   -  -
32873  50 150 250 350 150 50   -  - 350 50
32874  51 151 251 351   -  - 251 51   -  -
32875  52 152 252 352 152 52   -  -   -  -
32876  53 153 253 353   -  -   -  -   -  -
32877  54 154 254 354 154 54 254 54   -  -
32878  55 155 255 355   -  -   -  - 355 55
32879  56 156 256 356 156 56   -  -   -  -
32880  57 157 257 357   -  - 257 57   -  -
32881  58 158 258 358 158 58   -  -   -  -
32882  59 159 259 359   -  -   -  -   -  -
32883  60 160 260 360 160 60 260 60 360 60
32884  61 161 261 361   -  -   -  -   -  -
32885  62 162 262 362 162 62   -  -   -  -
32886  63 163 263 363   -  - 263 63   -  -
32887  64 164 264 364 164 64   -  -   -  -
32888  65 165 265 365   -  -   -  - 365 65
32889  66 166 266 366 166 66 266 66   -  -
32890  67 167 267 367   -  -   -  -   -  -
32891  68 168 268 368 168 68   -  -   -  -
32892  69 169 269 369   -  - 269 69   -  -
32893  70 170 270 370 170 70   -  - 370 70
32894  71 171 271 371   -  -   -  -   -  -
32895  72 172 272 372 172 72 272 72   -  -
32896  73 173 273 373   -  -   -  -   -  -
32897  74 174 274 374 174 74   -  -   -  -
32898  75 175 275 375   -  - 275 75 375 75
32899  76 176 276 376 176 76   -  -   -  -
32900  77 177 277 377   -  -   -  -   -  -
32901  78 178 278 378 178 78 278 78   -  -
32902  79 179 279 379   -  -   -  -   -  -
32903  80 180 280 380 180 80   -  - 380 80
32904  81 181 281 381   -  - 281 81   -  -
32905  82 182 282 382 182 82   -  -   -  -
32906  83 183 283 383   -  -   -  -   -  -
32907  84 184 284 384 184 84 284 84   -  -
32908  85 185 285 385   -  -   -  - 385 85
32909  86 186 286 386 186 86   -  -   -  -
32910  87 187 287 387   -  - 287 87   -  -
32911  88 188 288 388 188 88   -  -   -  -
32912  89 189 289 389   -  -   -  -   -  -
32913  90 190 290 390 190 90 290 90 390 90
32914  91 191 291 391   -  -   -  -   -  -
32915  92 192 292 392 192 92   -  -   -  -
32916  93 193 293 393   -  - 293 93   -  -
32917  94 194 294 394 194 94   -  -   -  -
32918  95 195 295 395   -  -   -  - 395 95
32919  96   - 296 396   -  -   -  -   -  -
32920  97 197   - 397   -  -   -  -   -  -
32921  98 198 298   -   -  -   -  -   -  -
32922  99   -   -   -   -  -   -  -   -  -
32923   -   -   -   -   -  - 200  0   -  -
32924}
32925do_execsql_test joinD-1124 {
32926  SELECT t1.*, t2.*, t3.*, t4.*
32927  FROM t1 FULL JOIN t2 ON true
32928  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
32929  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32930  WHERE t1.b=t2.b AND t2.x>0
32931  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32932} {
32933   2 102 202 302 102  2   -  -   -  -
32934   4 104 204 304 104  4   -  -   -  -
32935   6 106 206 306 106  6 206  6   -  -
32936   8 108 208 308 108  8   -  -   -  -
32937  10 110 210 310 110 10   -  - 310 10
32938  12 112 212 312 112 12 212 12   -  -
32939  14 114 214 314 114 14   -  -   -  -
32940  16 116 216 316 116 16   -  -   -  -
32941  18 118 218 318 118 18 218 18   -  -
32942  20 120 220 320 120 20   -  - 320 20
32943  22 122 222 322 122 22   -  -   -  -
32944  24 124 224 324 124 24 224 24   -  -
32945  26 126 226 326 126 26   -  -   -  -
32946  28 128 228 328 128 28   -  -   -  -
32947  30 130 230 330 130 30 230 30 330 30
32948  32 132 232 332 132 32   -  -   -  -
32949  34 134 234 334 134 34   -  -   -  -
32950  36 136 236 336 136 36 236 36   -  -
32951  38 138 238 338 138 38   -  -   -  -
32952  40 140 240 340 140 40   -  - 340 40
32953  42 142 242 342 142 42 242 42   -  -
32954  44 144 244 344 144 44   -  -   -  -
32955  46 146 246 346 146 46   -  -   -  -
32956  48 148 248 348 148 48 248 48   -  -
32957  50 150 250 350 150 50   -  - 350 50
32958  52 152 252 352 152 52   -  -   -  -
32959  54 154 254 354 154 54 254 54   -  -
32960  56 156 256 356 156 56   -  -   -  -
32961  58 158 258 358 158 58   -  -   -  -
32962  60 160 260 360 160 60 260 60 360 60
32963  62 162 262 362 162 62   -  -   -  -
32964  64 164 264 364 164 64   -  -   -  -
32965  66 166 266 366 166 66 266 66   -  -
32966  68 168 268 368 168 68   -  -   -  -
32967  70 170 270 370 170 70   -  - 370 70
32968  72 172 272 372 172 72 272 72   -  -
32969  74 174 274 374 174 74   -  -   -  -
32970  76 176 276 376 176 76   -  -   -  -
32971  78 178 278 378 178 78 278 78   -  -
32972  80 180 280 380 180 80   -  - 380 80
32973  82 182 282 382 182 82   -  -   -  -
32974  84 184 284 384 184 84 284 84   -  -
32975  86 186 286 386 186 86   -  -   -  -
32976  88 188 288 388 188 88   -  -   -  -
32977  90 190 290 390 190 90 290 90 390 90
32978  92 192 292 392 192 92   -  -   -  -
32979  94 194 294 394 194 94   -  -   -  -
32980}
32981do_execsql_test joinD-1125 {
32982  SELECT t1.*, t2.*, t3.*, t4.*
32983  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
32984  FULL JOIN t3 ON t1.c=t3.c
32985  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
32986  WHERE t3.y>0
32987  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
32988} {
32989   3 103 203 303   -  - 203  3   -  -
32990   6 106 206 306 106  6 206  6   -  -
32991   9 109 209 309   -  - 209  9   -  -
32992  12 112 212 312 112 12 212 12   -  -
32993  15 115 215 315   -  - 215 15 315 15
32994  18 118 218 318 118 18 218 18   -  -
32995  21 121 221 321   -  - 221 21   -  -
32996  24 124 224 324 124 24 224 24   -  -
32997  27 127 227 327   -  - 227 27   -  -
32998  30 130 230 330 130 30 230 30 330 30
32999  33 133 233 333   -  - 233 33   -  -
33000  36 136 236 336 136 36 236 36   -  -
33001  39 139 239 339   -  - 239 39   -  -
33002  42 142 242 342 142 42 242 42   -  -
33003  45 145 245 345   -  - 245 45 345 45
33004  48 148 248 348 148 48 248 48   -  -
33005  51 151 251 351   -  - 251 51   -  -
33006  54 154 254 354 154 54 254 54   -  -
33007  57 157 257 357   -  - 257 57   -  -
33008  60 160 260 360 160 60 260 60 360 60
33009  63 163 263 363   -  - 263 63   -  -
33010  66 166 266 366 166 66 266 66   -  -
33011  69 169 269 369   -  - 269 69   -  -
33012  72 172 272 372 172 72 272 72   -  -
33013  75 175 275 375   -  - 275 75 375 75
33014  78 178 278 378 178 78 278 78   -  -
33015  81 181 281 381   -  - 281 81   -  -
33016  84 184 284 384 184 84 284 84   -  -
33017  87 187 287 387   -  - 287 87   -  -
33018  90 190 290 390 190 90 290 90 390 90
33019  93 193 293 393   -  - 293 93   -  -
33020}
33021do_execsql_test joinD-1126 {
33022  SELECT t1.*, t2.*, t3.*, t4.*
33023  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33024  FULL JOIN t3 ON t1.c=t3.c
33025  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
33026  WHERE t3.y>0 OR t3.y IS NULL
33027  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33028} {
33029   1 101 201 301   -  -   -  -   -  -
33030   2 102 202 302 102  2   -  -   -  -
33031   3 103 203 303   -  - 203  3   -  -
33032   4 104 204 304 104  4   -  -   -  -
33033   5 105 205 305   -  -   -  - 305  5
33034   6 106 206 306 106  6 206  6   -  -
33035   7 107 207 307   -  -   -  -   -  -
33036   8 108 208 308 108  8   -  -   -  -
33037   9 109 209 309   -  - 209  9   -  -
33038  10 110 210 310 110 10   -  - 310 10
33039  11 111 211 311   -  -   -  -   -  -
33040  12 112 212 312 112 12 212 12   -  -
33041  13 113 213 313   -  -   -  -   -  -
33042  14 114 214 314 114 14   -  -   -  -
33043  15 115 215 315   -  - 215 15 315 15
33044  16 116 216 316 116 16   -  -   -  -
33045  17 117 217 317   -  -   -  -   -  -
33046  18 118 218 318 118 18 218 18   -  -
33047  19 119 219 319   -  -   -  -   -  -
33048  20 120 220 320 120 20   -  - 320 20
33049  21 121 221 321   -  - 221 21   -  -
33050  22 122 222 322 122 22   -  -   -  -
33051  23 123 223 323   -  -   -  -   -  -
33052  24 124 224 324 124 24 224 24   -  -
33053  25 125 225 325   -  -   -  - 325 25
33054  26 126 226 326 126 26   -  -   -  -
33055  27 127 227 327   -  - 227 27   -  -
33056  28 128 228 328 128 28   -  -   -  -
33057  29 129 229 329   -  -   -  -   -  -
33058  30 130 230 330 130 30 230 30 330 30
33059  31 131 231 331   -  -   -  -   -  -
33060  32 132 232 332 132 32   -  -   -  -
33061  33 133 233 333   -  - 233 33   -  -
33062  34 134 234 334 134 34   -  -   -  -
33063  35 135 235 335   -  -   -  - 335 35
33064  36 136 236 336 136 36 236 36   -  -
33065  37 137 237 337   -  -   -  -   -  -
33066  38 138 238 338 138 38   -  -   -  -
33067  39 139 239 339   -  - 239 39   -  -
33068  40 140 240 340 140 40   -  - 340 40
33069  41 141 241 341   -  -   -  -   -  -
33070  42 142 242 342 142 42 242 42   -  -
33071  43 143 243 343   -  -   -  -   -  -
33072  44 144 244 344 144 44   -  -   -  -
33073  45 145 245 345   -  - 245 45 345 45
33074  46 146 246 346 146 46   -  -   -  -
33075  47 147 247 347   -  -   -  -   -  -
33076  48 148 248 348 148 48 248 48   -  -
33077  49 149 249 349   -  -   -  -   -  -
33078  50 150 250 350 150 50   -  - 350 50
33079  51 151 251 351   -  - 251 51   -  -
33080  52 152 252 352 152 52   -  -   -  -
33081  53 153 253 353   -  -   -  -   -  -
33082  54 154 254 354 154 54 254 54   -  -
33083  55 155 255 355   -  -   -  - 355 55
33084  56 156 256 356 156 56   -  -   -  -
33085  57 157 257 357   -  - 257 57   -  -
33086  58 158 258 358 158 58   -  -   -  -
33087  59 159 259 359   -  -   -  -   -  -
33088  60 160 260 360 160 60 260 60 360 60
33089  61 161 261 361   -  -   -  -   -  -
33090  62 162 262 362 162 62   -  -   -  -
33091  63 163 263 363   -  - 263 63   -  -
33092  64 164 264 364 164 64   -  -   -  -
33093  65 165 265 365   -  -   -  - 365 65
33094  66 166 266 366 166 66 266 66   -  -
33095  67 167 267 367   -  -   -  -   -  -
33096  68 168 268 368 168 68   -  -   -  -
33097  69 169 269 369   -  - 269 69   -  -
33098  70 170 270 370 170 70   -  - 370 70
33099  71 171 271 371   -  -   -  -   -  -
33100  72 172 272 372 172 72 272 72   -  -
33101  73 173 273 373   -  -   -  -   -  -
33102  74 174 274 374 174 74   -  -   -  -
33103  75 175 275 375   -  - 275 75 375 75
33104  76 176 276 376 176 76   -  -   -  -
33105  77 177 277 377   -  -   -  -   -  -
33106  78 178 278 378 178 78 278 78   -  -
33107  79 179 279 379   -  -   -  -   -  -
33108  80 180 280 380 180 80   -  - 380 80
33109  81 181 281 381   -  - 281 81   -  -
33110  82 182 282 382 182 82   -  -   -  -
33111  83 183 283 383   -  -   -  -   -  -
33112  84 184 284 384 184 84 284 84   -  -
33113  85 185 285 385   -  -   -  - 385 85
33114  86 186 286 386 186 86   -  -   -  -
33115  87 187 287 387   -  - 287 87   -  -
33116  88 188 288 388 188 88   -  -   -  -
33117  89 189 289 389   -  -   -  -   -  -
33118  90 190 290 390 190 90 290 90 390 90
33119  91 191 291 391   -  -   -  -   -  -
33120  92 192 292 392 192 92   -  -   -  -
33121  93 193 293 393   -  - 293 93   -  -
33122  94 194 294 394 194 94   -  -   -  -
33123  95 195 295 395   -  -   -  - 395 95
33124  96   - 296 396   -  -   -  -   -  -
33125  97 197   - 397   -  -   -  -   -  -
33126  98 198 298   -   -  -   -  -   -  -
33127  99   -   -   -   -  -   -  -   -  -
33128   -   -   -   - 100  0   -  -   -  -
33129}
33130do_execsql_test joinD-1127 {
33131  SELECT t1.*, t2.*, t3.*, t4.*
33132  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33133  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33134  LEFT JOIN t4 ON t1.d=t4.d
33135  WHERE t4.z>0
33136  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33137} {
33138   5 105 205 305   -  -   -  - 305  5
33139  10 110 210 310 110 10   -  - 310 10
33140  15 115 215 315   -  - 215 15 315 15
33141  20 120 220 320 120 20   -  - 320 20
33142  25 125 225 325   -  -   -  - 325 25
33143  30 130 230 330 130 30 230 30 330 30
33144  35 135 235 335   -  -   -  - 335 35
33145  40 140 240 340 140 40   -  - 340 40
33146  45 145 245 345   -  - 245 45 345 45
33147  50 150 250 350 150 50   -  - 350 50
33148  55 155 255 355   -  -   -  - 355 55
33149  60 160 260 360 160 60 260 60 360 60
33150  65 165 265 365   -  -   -  - 365 65
33151  70 170 270 370 170 70   -  - 370 70
33152  75 175 275 375   -  - 275 75 375 75
33153  80 180 280 380 180 80   -  - 380 80
33154  85 185 285 385   -  -   -  - 385 85
33155  90 190 290 390 190 90 290 90 390 90
33156  95 195 295 395   -  -   -  - 395 95
33157}
33158do_execsql_test joinD-1128 {
33159  SELECT t1.*, t2.*, t3.*, t4.*
33160  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33161  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33162  LEFT JOIN t4 ON t1.d=t4.d
33163  WHERE t4.z IS NULL OR t4.z>0
33164  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33165} {
33166   1 101 201 301   -  -   -  -   -  -
33167   2 102 202 302 102  2   -  -   -  -
33168   3 103 203 303   -  - 203  3   -  -
33169   4 104 204 304 104  4   -  -   -  -
33170   5 105 205 305   -  -   -  - 305  5
33171   6 106 206 306 106  6 206  6   -  -
33172   7 107 207 307   -  -   -  -   -  -
33173   8 108 208 308 108  8   -  -   -  -
33174   9 109 209 309   -  - 209  9   -  -
33175  10 110 210 310 110 10   -  - 310 10
33176  11 111 211 311   -  -   -  -   -  -
33177  12 112 212 312 112 12 212 12   -  -
33178  13 113 213 313   -  -   -  -   -  -
33179  14 114 214 314 114 14   -  -   -  -
33180  15 115 215 315   -  - 215 15 315 15
33181  16 116 216 316 116 16   -  -   -  -
33182  17 117 217 317   -  -   -  -   -  -
33183  18 118 218 318 118 18 218 18   -  -
33184  19 119 219 319   -  -   -  -   -  -
33185  20 120 220 320 120 20   -  - 320 20
33186  21 121 221 321   -  - 221 21   -  -
33187  22 122 222 322 122 22   -  -   -  -
33188  23 123 223 323   -  -   -  -   -  -
33189  24 124 224 324 124 24 224 24   -  -
33190  25 125 225 325   -  -   -  - 325 25
33191  26 126 226 326 126 26   -  -   -  -
33192  27 127 227 327   -  - 227 27   -  -
33193  28 128 228 328 128 28   -  -   -  -
33194  29 129 229 329   -  -   -  -   -  -
33195  30 130 230 330 130 30 230 30 330 30
33196  31 131 231 331   -  -   -  -   -  -
33197  32 132 232 332 132 32   -  -   -  -
33198  33 133 233 333   -  - 233 33   -  -
33199  34 134 234 334 134 34   -  -   -  -
33200  35 135 235 335   -  -   -  - 335 35
33201  36 136 236 336 136 36 236 36   -  -
33202  37 137 237 337   -  -   -  -   -  -
33203  38 138 238 338 138 38   -  -   -  -
33204  39 139 239 339   -  - 239 39   -  -
33205  40 140 240 340 140 40   -  - 340 40
33206  41 141 241 341   -  -   -  -   -  -
33207  42 142 242 342 142 42 242 42   -  -
33208  43 143 243 343   -  -   -  -   -  -
33209  44 144 244 344 144 44   -  -   -  -
33210  45 145 245 345   -  - 245 45 345 45
33211  46 146 246 346 146 46   -  -   -  -
33212  47 147 247 347   -  -   -  -   -  -
33213  48 148 248 348 148 48 248 48   -  -
33214  49 149 249 349   -  -   -  -   -  -
33215  50 150 250 350 150 50   -  - 350 50
33216  51 151 251 351   -  - 251 51   -  -
33217  52 152 252 352 152 52   -  -   -  -
33218  53 153 253 353   -  -   -  -   -  -
33219  54 154 254 354 154 54 254 54   -  -
33220  55 155 255 355   -  -   -  - 355 55
33221  56 156 256 356 156 56   -  -   -  -
33222  57 157 257 357   -  - 257 57   -  -
33223  58 158 258 358 158 58   -  -   -  -
33224  59 159 259 359   -  -   -  -   -  -
33225  60 160 260 360 160 60 260 60 360 60
33226  61 161 261 361   -  -   -  -   -  -
33227  62 162 262 362 162 62   -  -   -  -
33228  63 163 263 363   -  - 263 63   -  -
33229  64 164 264 364 164 64   -  -   -  -
33230  65 165 265 365   -  -   -  - 365 65
33231  66 166 266 366 166 66 266 66   -  -
33232  67 167 267 367   -  -   -  -   -  -
33233  68 168 268 368 168 68   -  -   -  -
33234  69 169 269 369   -  - 269 69   -  -
33235  70 170 270 370 170 70   -  - 370 70
33236  71 171 271 371   -  -   -  -   -  -
33237  72 172 272 372 172 72 272 72   -  -
33238  73 173 273 373   -  -   -  -   -  -
33239  74 174 274 374 174 74   -  -   -  -
33240  75 175 275 375   -  - 275 75 375 75
33241  76 176 276 376 176 76   -  -   -  -
33242  77 177 277 377   -  -   -  -   -  -
33243  78 178 278 378 178 78 278 78   -  -
33244  79 179 279 379   -  -   -  -   -  -
33245  80 180 280 380 180 80   -  - 380 80
33246  81 181 281 381   -  - 281 81   -  -
33247  82 182 282 382 182 82   -  -   -  -
33248  83 183 283 383   -  -   -  -   -  -
33249  84 184 284 384 184 84 284 84   -  -
33250  85 185 285 385   -  -   -  - 385 85
33251  86 186 286 386 186 86   -  -   -  -
33252  87 187 287 387   -  - 287 87   -  -
33253  88 188 288 388 188 88   -  -   -  -
33254  89 189 289 389   -  -   -  -   -  -
33255  90 190 290 390 190 90 290 90 390 90
33256  91 191 291 391   -  -   -  -   -  -
33257  92 192 292 392 192 92   -  -   -  -
33258  93 193 293 393   -  - 293 93   -  -
33259  94 194 294 394 194 94   -  -   -  -
33260  95 195 295 395   -  -   -  - 395 95
33261  96   - 296 396   -  -   -  -   -  -
33262  97 197   - 397   -  -   -  -   -  -
33263  98 198 298   -   -  -   -  -   -  -
33264  99   -   -   -   -  -   -  -   -  -
33265   -   -   -   - 100  0   -  -   -  -
33266   -   -   -   -   -  - 200  0   -  -
33267}
33268do_execsql_test joinD-1129 {
33269  SELECT t1.*, t2.*, t3.*, t4.*
33270  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33271  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33272  LEFT JOIN t4 ON t1.d=t4.d
33273  WHERE t2.x>0 AND t4.z>0
33274  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33275} {
33276  10 110 210 310 110 10   -  - 310 10
33277  20 120 220 320 120 20   -  - 320 20
33278  30 130 230 330 130 30 230 30 330 30
33279  40 140 240 340 140 40   -  - 340 40
33280  50 150 250 350 150 50   -  - 350 50
33281  60 160 260 360 160 60 260 60 360 60
33282  70 170 270 370 170 70   -  - 370 70
33283  80 180 280 380 180 80   -  - 380 80
33284  90 190 290 390 190 90 290 90 390 90
33285}
33286do_execsql_test joinD-1130 {
33287  SELECT t1.*, t2.*, t3.*, t4.*
33288  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33289  FULL JOIN t3 ON t1.c=t3.c
33290  LEFT JOIN t4 ON t1.d=t4.d
33291  WHERE t4.z>0 AND t3.y>0
33292  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33293} {
33294  15 115 215 315   -  - 215 15 315 15
33295  30 130 230 330 130 30 230 30 330 30
33296  45 145 245 345   -  - 245 45 345 45
33297  60 160 260 360 160 60 260 60 360 60
33298  75 175 275 375   -  - 275 75 375 75
33299  90 190 290 390 190 90 290 90 390 90
33300}
33301do_execsql_test joinD-1131 {
33302  SELECT t1.*, t2.*, t3.*, t4.*
33303  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33304  FULL JOIN t3 ON t1.c=t3.c
33305  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
33306  WHERE t2.x>0 AND t3.y>0
33307  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33308} {
33309   6 106 206 306 106  6 206  6   -  -
33310  12 112 212 312 112 12 212 12   -  -
33311  18 118 218 318 118 18 218 18   -  -
33312  24 124 224 324 124 24 224 24   -  -
33313  30 130 230 330 130 30 230 30 330 30
33314  36 136 236 336 136 36 236 36   -  -
33315  42 142 242 342 142 42 242 42   -  -
33316  48 148 248 348 148 48 248 48   -  -
33317  54 154 254 354 154 54 254 54   -  -
33318  60 160 260 360 160 60 260 60 360 60
33319  66 166 266 366 166 66 266 66   -  -
33320  72 172 272 372 172 72 272 72   -  -
33321  78 178 278 378 178 78 278 78   -  -
33322  84 184 284 384 184 84 284 84   -  -
33323  90 190 290 390 190 90 290 90 390 90
33324}
33325do_execsql_test joinD-1132 {
33326  SELECT t1.*, t2.*, t3.*, t4.*
33327  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33328  FULL JOIN t3 ON t1.c=t3.c
33329  LEFT JOIN t4 ON t1.d=t4.d
33330  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
33331  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33332} {
33333  30 130 230 330 130 30 230 30 330 30
33334  60 160 260 360 160 60 260 60 360 60
33335  90 190 290 390 190 90 290 90 390 90
33336}
33337do_execsql_test joinD-1133 {
33338  SELECT t1.*, t2.*, t3.*, t4.*
33339  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
33340  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33341  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33342  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33343} {
33344   0 100 200 300   -  -   -  -   -  -
33345   1 101 201 301   -  -   -  -   -  -
33346   2 102 202 302 102  2   -  -   -  -
33347   3 103 203 303   -  - 203  3   -  -
33348   4 104 204 304 104  4   -  -   -  -
33349   5 105 205 305   -  -   -  - 305  5
33350   6 106 206 306 106  6 206  6   -  -
33351   7 107 207 307   -  -   -  -   -  -
33352   8 108 208 308 108  8   -  -   -  -
33353   9 109 209 309   -  - 209  9   -  -
33354  10 110 210 310 110 10   -  - 310 10
33355  11 111 211 311   -  -   -  -   -  -
33356  12 112 212 312 112 12 212 12   -  -
33357  13 113 213 313   -  -   -  -   -  -
33358  14 114 214 314 114 14   -  -   -  -
33359  15 115 215 315   -  - 215 15 315 15
33360  16 116 216 316 116 16   -  -   -  -
33361  17 117 217 317   -  -   -  -   -  -
33362  18 118 218 318 118 18 218 18   -  -
33363  19 119 219 319   -  -   -  -   -  -
33364  20 120 220 320 120 20   -  - 320 20
33365  21 121 221 321   -  - 221 21   -  -
33366  22 122 222 322 122 22   -  -   -  -
33367  23 123 223 323   -  -   -  -   -  -
33368  24 124 224 324 124 24 224 24   -  -
33369  25 125 225 325   -  -   -  - 325 25
33370  26 126 226 326 126 26   -  -   -  -
33371  27 127 227 327   -  - 227 27   -  -
33372  28 128 228 328 128 28   -  -   -  -
33373  29 129 229 329   -  -   -  -   -  -
33374  30 130 230 330 130 30 230 30 330 30
33375  31 131 231 331   -  -   -  -   -  -
33376  32 132 232 332 132 32   -  -   -  -
33377  33 133 233 333   -  - 233 33   -  -
33378  34 134 234 334 134 34   -  -   -  -
33379  35 135 235 335   -  -   -  - 335 35
33380  36 136 236 336 136 36 236 36   -  -
33381  37 137 237 337   -  -   -  -   -  -
33382  38 138 238 338 138 38   -  -   -  -
33383  39 139 239 339   -  - 239 39   -  -
33384  40 140 240 340 140 40   -  - 340 40
33385  41 141 241 341   -  -   -  -   -  -
33386  42 142 242 342 142 42 242 42   -  -
33387  43 143 243 343   -  -   -  -   -  -
33388  44 144 244 344 144 44   -  -   -  -
33389  45 145 245 345   -  - 245 45 345 45
33390  46 146 246 346 146 46   -  -   -  -
33391  47 147 247 347   -  -   -  -   -  -
33392  48 148 248 348 148 48 248 48   -  -
33393  49 149 249 349   -  -   -  -   -  -
33394  50 150 250 350 150 50   -  - 350 50
33395  51 151 251 351   -  - 251 51   -  -
33396  52 152 252 352 152 52   -  -   -  -
33397  53 153 253 353   -  -   -  -   -  -
33398  54 154 254 354 154 54 254 54   -  -
33399  55 155 255 355   -  -   -  - 355 55
33400  56 156 256 356 156 56   -  -   -  -
33401  57 157 257 357   -  - 257 57   -  -
33402  58 158 258 358 158 58   -  -   -  -
33403  59 159 259 359   -  -   -  -   -  -
33404  60 160 260 360 160 60 260 60 360 60
33405  61 161 261 361   -  -   -  -   -  -
33406  62 162 262 362 162 62   -  -   -  -
33407  63 163 263 363   -  - 263 63   -  -
33408  64 164 264 364 164 64   -  -   -  -
33409  65 165 265 365   -  -   -  - 365 65
33410  66 166 266 366 166 66 266 66   -  -
33411  67 167 267 367   -  -   -  -   -  -
33412  68 168 268 368 168 68   -  -   -  -
33413  69 169 269 369   -  - 269 69   -  -
33414  70 170 270 370 170 70   -  - 370 70
33415  71 171 271 371   -  -   -  -   -  -
33416  72 172 272 372 172 72 272 72   -  -
33417  73 173 273 373   -  -   -  -   -  -
33418  74 174 274 374 174 74   -  -   -  -
33419  75 175 275 375   -  - 275 75 375 75
33420  76 176 276 376 176 76   -  -   -  -
33421  77 177 277 377   -  -   -  -   -  -
33422  78 178 278 378 178 78 278 78   -  -
33423  79 179 279 379   -  -   -  -   -  -
33424  80 180 280 380 180 80   -  - 380 80
33425  81 181 281 381   -  - 281 81   -  -
33426  82 182 282 382 182 82   -  -   -  -
33427  83 183 283 383   -  -   -  -   -  -
33428  84 184 284 384 184 84 284 84   -  -
33429  85 185 285 385   -  -   -  - 385 85
33430  86 186 286 386 186 86   -  -   -  -
33431  87 187 287 387   -  - 287 87   -  -
33432  88 188 288 388 188 88   -  -   -  -
33433  89 189 289 389   -  -   -  -   -  -
33434  90 190 290 390 190 90 290 90 390 90
33435  91 191 291 391   -  -   -  -   -  -
33436  92 192 292 392 192 92   -  -   -  -
33437  93 193 293 393   -  - 293 93   -  -
33438  94 194 294 394 194 94   -  -   -  -
33439  95 195 295 395   -  -   -  - 395 95
33440  96   - 296 396   -  -   -  -   -  -
33441  97 197   - 397   -  -   -  -   -  -
33442  98 198 298   -   -  -   -  -   -  -
33443  99   -   -   -   -  -   -  -   -  -
33444   -   -   -   - 100  0   -  -   -  -
33445   -   -   -   -   -  - 200  0   -  -
33446}
33447do_execsql_test joinD-1134 {
33448  SELECT t1.*, t2.*, t3.*, t4.*
33449  FROM t1 FULL JOIN t2 ON t2.x>0
33450  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33451  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33452  WHERE t1.b = t2.b
33453  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33454} {
33455   2 102 202 302 102  2   -  -   -  -
33456   4 104 204 304 104  4   -  -   -  -
33457   6 106 206 306 106  6 206  6   -  -
33458   8 108 208 308 108  8   -  -   -  -
33459  10 110 210 310 110 10   -  - 310 10
33460  12 112 212 312 112 12 212 12   -  -
33461  14 114 214 314 114 14   -  -   -  -
33462  16 116 216 316 116 16   -  -   -  -
33463  18 118 218 318 118 18 218 18   -  -
33464  20 120 220 320 120 20   -  - 320 20
33465  22 122 222 322 122 22   -  -   -  -
33466  24 124 224 324 124 24 224 24   -  -
33467  26 126 226 326 126 26   -  -   -  -
33468  28 128 228 328 128 28   -  -   -  -
33469  30 130 230 330 130 30 230 30 330 30
33470  32 132 232 332 132 32   -  -   -  -
33471  34 134 234 334 134 34   -  -   -  -
33472  36 136 236 336 136 36 236 36   -  -
33473  38 138 238 338 138 38   -  -   -  -
33474  40 140 240 340 140 40   -  - 340 40
33475  42 142 242 342 142 42 242 42   -  -
33476  44 144 244 344 144 44   -  -   -  -
33477  46 146 246 346 146 46   -  -   -  -
33478  48 148 248 348 148 48 248 48   -  -
33479  50 150 250 350 150 50   -  - 350 50
33480  52 152 252 352 152 52   -  -   -  -
33481  54 154 254 354 154 54 254 54   -  -
33482  56 156 256 356 156 56   -  -   -  -
33483  58 158 258 358 158 58   -  -   -  -
33484  60 160 260 360 160 60 260 60 360 60
33485  62 162 262 362 162 62   -  -   -  -
33486  64 164 264 364 164 64   -  -   -  -
33487  66 166 266 366 166 66 266 66   -  -
33488  68 168 268 368 168 68   -  -   -  -
33489  70 170 270 370 170 70   -  - 370 70
33490  72 172 272 372 172 72 272 72   -  -
33491  74 174 274 374 174 74   -  -   -  -
33492  76 176 276 376 176 76   -  -   -  -
33493  78 178 278 378 178 78 278 78   -  -
33494  80 180 280 380 180 80   -  - 380 80
33495  82 182 282 382 182 82   -  -   -  -
33496  84 184 284 384 184 84 284 84   -  -
33497  86 186 286 386 186 86   -  -   -  -
33498  88 188 288 388 188 88   -  -   -  -
33499  90 190 290 390 190 90 290 90 390 90
33500  92 192 292 392 192 92   -  -   -  -
33501  94 194 294 394 194 94   -  -   -  -
33502}
33503do_execsql_test joinD-1135 {
33504  SELECT t1.*, t2.*, t3.*, t4.*
33505  FROM t1 FULL JOIN t2 ON t2.x>0
33506  FULL JOIN t3 ON t3.y>0
33507  LEFT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33508  WHERE t1.b = t2.b AND t1.c = t3.c
33509  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33510} {
33511   6 106 206 306 106  6 206  6   -  -
33512  12 112 212 312 112 12 212 12   -  -
33513  18 118 218 318 118 18 218 18   -  -
33514  24 124 224 324 124 24 224 24   -  -
33515  30 130 230 330 130 30 230 30 330 30
33516  36 136 236 336 136 36 236 36   -  -
33517  42 142 242 342 142 42 242 42   -  -
33518  48 148 248 348 148 48 248 48   -  -
33519  54 154 254 354 154 54 254 54   -  -
33520  60 160 260 360 160 60 260 60 360 60
33521  66 166 266 366 166 66 266 66   -  -
33522  72 172 272 372 172 72 272 72   -  -
33523  78 178 278 378 178 78 278 78   -  -
33524  84 184 284 384 184 84 284 84   -  -
33525  90 190 290 390 190 90 290 90 390 90
33526}
33527do_execsql_test joinD-1136 {
33528  SELECT t1.*, t2.*, t3.*, t4.*
33529  FROM t1 FULL JOIN t2 ON t2.x>0
33530  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33531  LEFT JOIN t4 ON t4.z>0
33532  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
33533  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33534} {
33535  10 110 210 310 110 10   -  - 310 10
33536  20 120 220 320 120 20   -  - 320 20
33537  30 130 230 330 130 30 230 30 330 30
33538  40 140 240 340 140 40   -  - 340 40
33539  50 150 250 350 150 50   -  - 350 50
33540  60 160 260 360 160 60 260 60 360 60
33541  70 170 270 370 170 70   -  - 370 70
33542  80 180 280 380 180 80   -  - 380 80
33543  90 190 290 390 190 90 290 90 390 90
33544}
33545do_execsql_test joinD-1137 {
33546  SELECT t1.*, t2.*, t3.*, t4.*
33547  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33548  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33549  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33550  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33551} {
33552   5 105 205 305   -  -   -  - 305  5
33553  10 110 210 310 110 10   -  - 310 10
33554  15 115 215 315   -  - 215 15 315 15
33555  20 120 220 320 120 20   -  - 320 20
33556  25 125 225 325   -  -   -  - 325 25
33557  30 130 230 330 130 30 230 30 330 30
33558  35 135 235 335   -  -   -  - 335 35
33559  40 140 240 340 140 40   -  - 340 40
33560  45 145 245 345   -  - 245 45 345 45
33561  50 150 250 350 150 50   -  - 350 50
33562  55 155 255 355   -  -   -  - 355 55
33563  60 160 260 360 160 60 260 60 360 60
33564  65 165 265 365   -  -   -  - 365 65
33565  70 170 270 370 170 70   -  - 370 70
33566  75 175 275 375   -  - 275 75 375 75
33567  80 180 280 380 180 80   -  - 380 80
33568  85 185 285 385   -  -   -  - 385 85
33569  90 190 290 390 190 90 290 90 390 90
33570  95 195 295 395   -  -   -  - 395 95
33571   -   -   -   -   -  -   -  - 300  0
33572}
33573do_execsql_test joinD-1138 {
33574  SELECT t1.*, t2.*, t3.*, t4.*
33575  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33576  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33577  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33578  WHERE t2.x>0
33579  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33580} {
33581  10 110 210 310 110 10   -  - 310 10
33582  20 120 220 320 120 20   -  - 320 20
33583  30 130 230 330 130 30 230 30 330 30
33584  40 140 240 340 140 40   -  - 340 40
33585  50 150 250 350 150 50   -  - 350 50
33586  60 160 260 360 160 60 260 60 360 60
33587  70 170 270 370 170 70   -  - 370 70
33588  80 180 280 380 180 80   -  - 380 80
33589  90 190 290 390 190 90 290 90 390 90
33590}
33591do_execsql_test joinD-1139 {
33592  SELECT t1.*, t2.*, t3.*, t4.*
33593  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33594  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33595  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33596  WHERE (t2.x>0 OR t2.x IS NULL)
33597  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33598} {
33599   5 105 205 305   -  -   -  - 305  5
33600  10 110 210 310 110 10   -  - 310 10
33601  15 115 215 315   -  - 215 15 315 15
33602  20 120 220 320 120 20   -  - 320 20
33603  25 125 225 325   -  -   -  - 325 25
33604  30 130 230 330 130 30 230 30 330 30
33605  35 135 235 335   -  -   -  - 335 35
33606  40 140 240 340 140 40   -  - 340 40
33607  45 145 245 345   -  - 245 45 345 45
33608  50 150 250 350 150 50   -  - 350 50
33609  55 155 255 355   -  -   -  - 355 55
33610  60 160 260 360 160 60 260 60 360 60
33611  65 165 265 365   -  -   -  - 365 65
33612  70 170 270 370 170 70   -  - 370 70
33613  75 175 275 375   -  - 275 75 375 75
33614  80 180 280 380 180 80   -  - 380 80
33615  85 185 285 385   -  -   -  - 385 85
33616  90 190 290 390 190 90 290 90 390 90
33617  95 195 295 395   -  -   -  - 395 95
33618   -   -   -   -   -  -   -  - 300  0
33619}
33620do_execsql_test joinD-1140 {
33621  SELECT t1.*, t2.*, t3.*, t4.*
33622  FROM t1 FULL JOIN t2 ON true
33623  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33624  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33625  WHERE t1.b=t2.b AND t2.x>0
33626  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33627} {
33628  10 110 210 310 110 10   -  - 310 10
33629  20 120 220 320 120 20   -  - 320 20
33630  30 130 230 330 130 30 230 30 330 30
33631  40 140 240 340 140 40   -  - 340 40
33632  50 150 250 350 150 50   -  - 350 50
33633  60 160 260 360 160 60 260 60 360 60
33634  70 170 270 370 170 70   -  - 370 70
33635  80 180 280 380 180 80   -  - 380 80
33636  90 190 290 390 190 90 290 90 390 90
33637}
33638do_execsql_test joinD-1141 {
33639  SELECT t1.*, t2.*, t3.*, t4.*
33640  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33641  FULL JOIN t3 ON t1.c=t3.c
33642  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33643  WHERE t3.y>0
33644  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33645} {
33646  15 115 215 315   -  - 215 15 315 15
33647  30 130 230 330 130 30 230 30 330 30
33648  45 145 245 345   -  - 245 45 345 45
33649  60 160 260 360 160 60 260 60 360 60
33650  75 175 275 375   -  - 275 75 375 75
33651  90 190 290 390 190 90 290 90 390 90
33652}
33653do_execsql_test joinD-1142 {
33654  SELECT t1.*, t2.*, t3.*, t4.*
33655  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33656  FULL JOIN t3 ON t1.c=t3.c
33657  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33658  WHERE t3.y>0 OR t3.y IS NULL
33659  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33660} {
33661   5 105 205 305   -  -   -  - 305  5
33662  10 110 210 310 110 10   -  - 310 10
33663  15 115 215 315   -  - 215 15 315 15
33664  20 120 220 320 120 20   -  - 320 20
33665  25 125 225 325   -  -   -  - 325 25
33666  30 130 230 330 130 30 230 30 330 30
33667  35 135 235 335   -  -   -  - 335 35
33668  40 140 240 340 140 40   -  - 340 40
33669  45 145 245 345   -  - 245 45 345 45
33670  50 150 250 350 150 50   -  - 350 50
33671  55 155 255 355   -  -   -  - 355 55
33672  60 160 260 360 160 60 260 60 360 60
33673  65 165 265 365   -  -   -  - 365 65
33674  70 170 270 370 170 70   -  - 370 70
33675  75 175 275 375   -  - 275 75 375 75
33676  80 180 280 380 180 80   -  - 380 80
33677  85 185 285 385   -  -   -  - 385 85
33678  90 190 290 390 190 90 290 90 390 90
33679  95 195 295 395   -  -   -  - 395 95
33680   -   -   -   -   -  -   -  - 300  0
33681}
33682do_execsql_test joinD-1143 {
33683  SELECT t1.*, t2.*, t3.*, t4.*
33684  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33685  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33686  RIGHT JOIN t4 ON t1.d=t4.d
33687  WHERE t4.z>0
33688  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33689} {
33690   5 105 205 305   -  -   -  - 305  5
33691  10 110 210 310 110 10   -  - 310 10
33692  15 115 215 315   -  - 215 15 315 15
33693  20 120 220 320 120 20   -  - 320 20
33694  25 125 225 325   -  -   -  - 325 25
33695  30 130 230 330 130 30 230 30 330 30
33696  35 135 235 335   -  -   -  - 335 35
33697  40 140 240 340 140 40   -  - 340 40
33698  45 145 245 345   -  - 245 45 345 45
33699  50 150 250 350 150 50   -  - 350 50
33700  55 155 255 355   -  -   -  - 355 55
33701  60 160 260 360 160 60 260 60 360 60
33702  65 165 265 365   -  -   -  - 365 65
33703  70 170 270 370 170 70   -  - 370 70
33704  75 175 275 375   -  - 275 75 375 75
33705  80 180 280 380 180 80   -  - 380 80
33706  85 185 285 385   -  -   -  - 385 85
33707  90 190 290 390 190 90 290 90 390 90
33708  95 195 295 395   -  -   -  - 395 95
33709}
33710do_execsql_test joinD-1144 {
33711  SELECT t1.*, t2.*, t3.*, t4.*
33712  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33713  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33714  RIGHT JOIN t4 ON t1.d=t4.d
33715  WHERE t4.z IS NULL OR t4.z>0
33716  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33717} {
33718   5 105 205 305   -  -   -  - 305  5
33719  10 110 210 310 110 10   -  - 310 10
33720  15 115 215 315   -  - 215 15 315 15
33721  20 120 220 320 120 20   -  - 320 20
33722  25 125 225 325   -  -   -  - 325 25
33723  30 130 230 330 130 30 230 30 330 30
33724  35 135 235 335   -  -   -  - 335 35
33725  40 140 240 340 140 40   -  - 340 40
33726  45 145 245 345   -  - 245 45 345 45
33727  50 150 250 350 150 50   -  - 350 50
33728  55 155 255 355   -  -   -  - 355 55
33729  60 160 260 360 160 60 260 60 360 60
33730  65 165 265 365   -  -   -  - 365 65
33731  70 170 270 370 170 70   -  - 370 70
33732  75 175 275 375   -  - 275 75 375 75
33733  80 180 280 380 180 80   -  - 380 80
33734  85 185 285 385   -  -   -  - 385 85
33735  90 190 290 390 190 90 290 90 390 90
33736  95 195 295 395   -  -   -  - 395 95
33737}
33738do_execsql_test joinD-1145 {
33739  SELECT t1.*, t2.*, t3.*, t4.*
33740  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33741  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33742  RIGHT JOIN t4 ON t1.d=t4.d
33743  WHERE t2.x>0 AND t4.z>0
33744  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33745} {
33746  10 110 210 310 110 10   -  - 310 10
33747  20 120 220 320 120 20   -  - 320 20
33748  30 130 230 330 130 30 230 30 330 30
33749  40 140 240 340 140 40   -  - 340 40
33750  50 150 250 350 150 50   -  - 350 50
33751  60 160 260 360 160 60 260 60 360 60
33752  70 170 270 370 170 70   -  - 370 70
33753  80 180 280 380 180 80   -  - 380 80
33754  90 190 290 390 190 90 290 90 390 90
33755}
33756do_execsql_test joinD-1146 {
33757  SELECT t1.*, t2.*, t3.*, t4.*
33758  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33759  FULL JOIN t3 ON t1.c=t3.c
33760  RIGHT JOIN t4 ON t1.d=t4.d
33761  WHERE t4.z>0 AND t3.y>0
33762  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33763} {
33764  15 115 215 315   -  - 215 15 315 15
33765  30 130 230 330 130 30 230 30 330 30
33766  45 145 245 345   -  - 245 45 345 45
33767  60 160 260 360 160 60 260 60 360 60
33768  75 175 275 375   -  - 275 75 375 75
33769  90 190 290 390 190 90 290 90 390 90
33770}
33771do_execsql_test joinD-1147 {
33772  SELECT t1.*, t2.*, t3.*, t4.*
33773  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33774  FULL JOIN t3 ON t1.c=t3.c
33775  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
33776  WHERE t2.x>0 AND t3.y>0
33777  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33778} {
33779  30 130 230 330 130 30 230 30 330 30
33780  60 160 260 360 160 60 260 60 360 60
33781  90 190 290 390 190 90 290 90 390 90
33782}
33783do_execsql_test joinD-1148 {
33784  SELECT t1.*, t2.*, t3.*, t4.*
33785  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33786  FULL JOIN t3 ON t1.c=t3.c
33787  RIGHT JOIN t4 ON t1.d=t4.d
33788  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
33789  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33790} {
33791  30 130 230 330 130 30 230 30 330 30
33792  60 160 260 360 160 60 260 60 360 60
33793  90 190 290 390 190 90 290 90 390 90
33794}
33795do_execsql_test joinD-1149 {
33796  SELECT t1.*, t2.*, t3.*, t4.*
33797  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
33798  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33799  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33800  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33801} {
33802   5 105 205 305   -  -   -  - 305  5
33803  10 110 210 310 110 10   -  - 310 10
33804  15 115 215 315   -  - 215 15 315 15
33805  20 120 220 320 120 20   -  - 320 20
33806  25 125 225 325   -  -   -  - 325 25
33807  30 130 230 330 130 30 230 30 330 30
33808  35 135 235 335   -  -   -  - 335 35
33809  40 140 240 340 140 40   -  - 340 40
33810  45 145 245 345   -  - 245 45 345 45
33811  50 150 250 350 150 50   -  - 350 50
33812  55 155 255 355   -  -   -  - 355 55
33813  60 160 260 360 160 60 260 60 360 60
33814  65 165 265 365   -  -   -  - 365 65
33815  70 170 270 370 170 70   -  - 370 70
33816  75 175 275 375   -  - 275 75 375 75
33817  80 180 280 380 180 80   -  - 380 80
33818  85 185 285 385   -  -   -  - 385 85
33819  90 190 290 390 190 90 290 90 390 90
33820  95 195 295 395   -  -   -  - 395 95
33821   -   -   -   -   -  -   -  - 300  0
33822}
33823do_execsql_test joinD-1150 {
33824  SELECT t1.*, t2.*, t3.*, t4.*
33825  FROM t1 FULL JOIN t2 ON t2.x>0
33826  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33827  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33828  WHERE t1.b = t2.b
33829  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33830} {
33831  10 110 210 310 110 10   -  - 310 10
33832  20 120 220 320 120 20   -  - 320 20
33833  30 130 230 330 130 30 230 30 330 30
33834  40 140 240 340 140 40   -  - 340 40
33835  50 150 250 350 150 50   -  - 350 50
33836  60 160 260 360 160 60 260 60 360 60
33837  70 170 270 370 170 70   -  - 370 70
33838  80 180 280 380 180 80   -  - 380 80
33839  90 190 290 390 190 90 290 90 390 90
33840}
33841do_execsql_test joinD-1151 {
33842  SELECT t1.*, t2.*, t3.*, t4.*
33843  FROM t1 FULL JOIN t2 ON t2.x>0
33844  FULL JOIN t3 ON t3.y>0
33845  RIGHT JOIN t4 ON t1.d IS NOT DISTINCT FROM t4.d AND t4.z>0
33846  WHERE t1.b = t2.b AND t1.c = t3.c
33847  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33848} {
33849  30 130 230 330 130 30 230 30 330 30
33850  60 160 260 360 160 60 260 60 360 60
33851  90 190 290 390 190 90 290 90 390 90
33852}
33853do_execsql_test joinD-1152 {
33854  SELECT t1.*, t2.*, t3.*, t4.*
33855  FROM t1 FULL JOIN t2 ON t2.x>0
33856  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
33857  RIGHT JOIN t4 ON t4.z>0
33858  WHERE t1.b = t2.b AND t1.d IS NOT DISTINCT FROM t4.d
33859  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33860} {
33861  10 110 210 310 110 10   -  - 310 10
33862  20 120 220 320 120 20   -  - 320 20
33863  30 130 230 330 130 30 230 30 330 30
33864  40 140 240 340 140 40   -  - 340 40
33865  50 150 250 350 150 50   -  - 350 50
33866  60 160 260 360 160 60 260 60 360 60
33867  70 170 270 370 170 70   -  - 370 70
33868  80 180 280 380 180 80   -  - 380 80
33869  90 190 290 390 190 90 290 90 390 90
33870}
33871do_execsql_test joinD-1153 {
33872  SELECT t1.*, t2.*, t3.*, t4.*
33873  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
33874  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33875  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
33876  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33877} {
33878   0 100 200 300   -  -   -  -   -  -
33879   1 101 201 301   -  -   -  -   -  -
33880   2 102 202 302 102  2   -  -   -  -
33881   3 103 203 303   -  - 203  3   -  -
33882   4 104 204 304 104  4   -  -   -  -
33883   5 105 205 305   -  -   -  - 305  5
33884   6 106 206 306 106  6 206  6   -  -
33885   7 107 207 307   -  -   -  -   -  -
33886   8 108 208 308 108  8   -  -   -  -
33887   9 109 209 309   -  - 209  9   -  -
33888  10 110 210 310 110 10   -  - 310 10
33889  11 111 211 311   -  -   -  -   -  -
33890  12 112 212 312 112 12 212 12   -  -
33891  13 113 213 313   -  -   -  -   -  -
33892  14 114 214 314 114 14   -  -   -  -
33893  15 115 215 315   -  - 215 15 315 15
33894  16 116 216 316 116 16   -  -   -  -
33895  17 117 217 317   -  -   -  -   -  -
33896  18 118 218 318 118 18 218 18   -  -
33897  19 119 219 319   -  -   -  -   -  -
33898  20 120 220 320 120 20   -  - 320 20
33899  21 121 221 321   -  - 221 21   -  -
33900  22 122 222 322 122 22   -  -   -  -
33901  23 123 223 323   -  -   -  -   -  -
33902  24 124 224 324 124 24 224 24   -  -
33903  25 125 225 325   -  -   -  - 325 25
33904  26 126 226 326 126 26   -  -   -  -
33905  27 127 227 327   -  - 227 27   -  -
33906  28 128 228 328 128 28   -  -   -  -
33907  29 129 229 329   -  -   -  -   -  -
33908  30 130 230 330 130 30 230 30 330 30
33909  31 131 231 331   -  -   -  -   -  -
33910  32 132 232 332 132 32   -  -   -  -
33911  33 133 233 333   -  - 233 33   -  -
33912  34 134 234 334 134 34   -  -   -  -
33913  35 135 235 335   -  -   -  - 335 35
33914  36 136 236 336 136 36 236 36   -  -
33915  37 137 237 337   -  -   -  -   -  -
33916  38 138 238 338 138 38   -  -   -  -
33917  39 139 239 339   -  - 239 39   -  -
33918  40 140 240 340 140 40   -  - 340 40
33919  41 141 241 341   -  -   -  -   -  -
33920  42 142 242 342 142 42 242 42   -  -
33921  43 143 243 343   -  -   -  -   -  -
33922  44 144 244 344 144 44   -  -   -  -
33923  45 145 245 345   -  - 245 45 345 45
33924  46 146 246 346 146 46   -  -   -  -
33925  47 147 247 347   -  -   -  -   -  -
33926  48 148 248 348 148 48 248 48   -  -
33927  49 149 249 349   -  -   -  -   -  -
33928  50 150 250 350 150 50   -  - 350 50
33929  51 151 251 351   -  - 251 51   -  -
33930  52 152 252 352 152 52   -  -   -  -
33931  53 153 253 353   -  -   -  -   -  -
33932  54 154 254 354 154 54 254 54   -  -
33933  55 155 255 355   -  -   -  - 355 55
33934  56 156 256 356 156 56   -  -   -  -
33935  57 157 257 357   -  - 257 57   -  -
33936  58 158 258 358 158 58   -  -   -  -
33937  59 159 259 359   -  -   -  -   -  -
33938  60 160 260 360 160 60 260 60 360 60
33939  61 161 261 361   -  -   -  -   -  -
33940  62 162 262 362 162 62   -  -   -  -
33941  63 163 263 363   -  - 263 63   -  -
33942  64 164 264 364 164 64   -  -   -  -
33943  65 165 265 365   -  -   -  - 365 65
33944  66 166 266 366 166 66 266 66   -  -
33945  67 167 267 367   -  -   -  -   -  -
33946  68 168 268 368 168 68   -  -   -  -
33947  69 169 269 369   -  - 269 69   -  -
33948  70 170 270 370 170 70   -  - 370 70
33949  71 171 271 371   -  -   -  -   -  -
33950  72 172 272 372 172 72 272 72   -  -
33951  73 173 273 373   -  -   -  -   -  -
33952  74 174 274 374 174 74   -  -   -  -
33953  75 175 275 375   -  - 275 75 375 75
33954  76 176 276 376 176 76   -  -   -  -
33955  77 177 277 377   -  -   -  -   -  -
33956  78 178 278 378 178 78 278 78   -  -
33957  79 179 279 379   -  -   -  -   -  -
33958  80 180 280 380 180 80   -  - 380 80
33959  81 181 281 381   -  - 281 81   -  -
33960  82 182 282 382 182 82   -  -   -  -
33961  83 183 283 383   -  -   -  -   -  -
33962  84 184 284 384 184 84 284 84   -  -
33963  85 185 285 385   -  -   -  - 385 85
33964  86 186 286 386 186 86   -  -   -  -
33965  87 187 287 387   -  - 287 87   -  -
33966  88 188 288 388 188 88   -  -   -  -
33967  89 189 289 389   -  -   -  -   -  -
33968  90 190 290 390 190 90 290 90 390 90
33969  91 191 291 391   -  -   -  -   -  -
33970  92 192 292 392 192 92   -  -   -  -
33971  93 193 293 393   -  - 293 93   -  -
33972  94 194 294 394 194 94   -  -   -  -
33973  95 195 295 395   -  -   -  - 395 95
33974  96   - 296 396   -  -   -  -   -  -
33975  97 197   - 397   -  -   -  -   -  -
33976  98 198 298   -   -  -   -  -   -  -
33977  99   -   -   -   -  -   -  -   -  -
33978   -   -   -   - 100  0   -  -   -  -
33979   -   -   -   -   -  - 200  0   -  -
33980   -   -   -   -   -  -   -  - 300  0
33981}
33982do_execsql_test joinD-1154 {
33983  SELECT t1.*, t2.*, t3.*, t4.*
33984  FROM t1 FULL JOIN t2 ON t1.b=t2.b
33985  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
33986  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
33987  WHERE t2.x>0
33988  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
33989} {
33990   2 102 202 302 102  2   -  -   -  -
33991   4 104 204 304 104  4   -  -   -  -
33992   6 106 206 306 106  6 206  6   -  -
33993   8 108 208 308 108  8   -  -   -  -
33994  10 110 210 310 110 10   -  - 310 10
33995  12 112 212 312 112 12 212 12   -  -
33996  14 114 214 314 114 14   -  -   -  -
33997  16 116 216 316 116 16   -  -   -  -
33998  18 118 218 318 118 18 218 18   -  -
33999  20 120 220 320 120 20   -  - 320 20
34000  22 122 222 322 122 22   -  -   -  -
34001  24 124 224 324 124 24 224 24   -  -
34002  26 126 226 326 126 26   -  -   -  -
34003  28 128 228 328 128 28   -  -   -  -
34004  30 130 230 330 130 30 230 30 330 30
34005  32 132 232 332 132 32   -  -   -  -
34006  34 134 234 334 134 34   -  -   -  -
34007  36 136 236 336 136 36 236 36   -  -
34008  38 138 238 338 138 38   -  -   -  -
34009  40 140 240 340 140 40   -  - 340 40
34010  42 142 242 342 142 42 242 42   -  -
34011  44 144 244 344 144 44   -  -   -  -
34012  46 146 246 346 146 46   -  -   -  -
34013  48 148 248 348 148 48 248 48   -  -
34014  50 150 250 350 150 50   -  - 350 50
34015  52 152 252 352 152 52   -  -   -  -
34016  54 154 254 354 154 54 254 54   -  -
34017  56 156 256 356 156 56   -  -   -  -
34018  58 158 258 358 158 58   -  -   -  -
34019  60 160 260 360 160 60 260 60 360 60
34020  62 162 262 362 162 62   -  -   -  -
34021  64 164 264 364 164 64   -  -   -  -
34022  66 166 266 366 166 66 266 66   -  -
34023  68 168 268 368 168 68   -  -   -  -
34024  70 170 270 370 170 70   -  - 370 70
34025  72 172 272 372 172 72 272 72   -  -
34026  74 174 274 374 174 74   -  -   -  -
34027  76 176 276 376 176 76   -  -   -  -
34028  78 178 278 378 178 78 278 78   -  -
34029  80 180 280 380 180 80   -  - 380 80
34030  82 182 282 382 182 82   -  -   -  -
34031  84 184 284 384 184 84 284 84   -  -
34032  86 186 286 386 186 86   -  -   -  -
34033  88 188 288 388 188 88   -  -   -  -
34034  90 190 290 390 190 90 290 90 390 90
34035  92 192 292 392 192 92   -  -   -  -
34036  94 194 294 394 194 94   -  -   -  -
34037}
34038do_execsql_test joinD-1155 {
34039  SELECT t1.*, t2.*, t3.*, t4.*
34040  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34041  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34042  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34043  WHERE (t2.x>0 OR t2.x IS NULL)
34044  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34045} {
34046   1 101 201 301   -  -   -  -   -  -
34047   2 102 202 302 102  2   -  -   -  -
34048   3 103 203 303   -  - 203  3   -  -
34049   4 104 204 304 104  4   -  -   -  -
34050   5 105 205 305   -  -   -  - 305  5
34051   6 106 206 306 106  6 206  6   -  -
34052   7 107 207 307   -  -   -  -   -  -
34053   8 108 208 308 108  8   -  -   -  -
34054   9 109 209 309   -  - 209  9   -  -
34055  10 110 210 310 110 10   -  - 310 10
34056  11 111 211 311   -  -   -  -   -  -
34057  12 112 212 312 112 12 212 12   -  -
34058  13 113 213 313   -  -   -  -   -  -
34059  14 114 214 314 114 14   -  -   -  -
34060  15 115 215 315   -  - 215 15 315 15
34061  16 116 216 316 116 16   -  -   -  -
34062  17 117 217 317   -  -   -  -   -  -
34063  18 118 218 318 118 18 218 18   -  -
34064  19 119 219 319   -  -   -  -   -  -
34065  20 120 220 320 120 20   -  - 320 20
34066  21 121 221 321   -  - 221 21   -  -
34067  22 122 222 322 122 22   -  -   -  -
34068  23 123 223 323   -  -   -  -   -  -
34069  24 124 224 324 124 24 224 24   -  -
34070  25 125 225 325   -  -   -  - 325 25
34071  26 126 226 326 126 26   -  -   -  -
34072  27 127 227 327   -  - 227 27   -  -
34073  28 128 228 328 128 28   -  -   -  -
34074  29 129 229 329   -  -   -  -   -  -
34075  30 130 230 330 130 30 230 30 330 30
34076  31 131 231 331   -  -   -  -   -  -
34077  32 132 232 332 132 32   -  -   -  -
34078  33 133 233 333   -  - 233 33   -  -
34079  34 134 234 334 134 34   -  -   -  -
34080  35 135 235 335   -  -   -  - 335 35
34081  36 136 236 336 136 36 236 36   -  -
34082  37 137 237 337   -  -   -  -   -  -
34083  38 138 238 338 138 38   -  -   -  -
34084  39 139 239 339   -  - 239 39   -  -
34085  40 140 240 340 140 40   -  - 340 40
34086  41 141 241 341   -  -   -  -   -  -
34087  42 142 242 342 142 42 242 42   -  -
34088  43 143 243 343   -  -   -  -   -  -
34089  44 144 244 344 144 44   -  -   -  -
34090  45 145 245 345   -  - 245 45 345 45
34091  46 146 246 346 146 46   -  -   -  -
34092  47 147 247 347   -  -   -  -   -  -
34093  48 148 248 348 148 48 248 48   -  -
34094  49 149 249 349   -  -   -  -   -  -
34095  50 150 250 350 150 50   -  - 350 50
34096  51 151 251 351   -  - 251 51   -  -
34097  52 152 252 352 152 52   -  -   -  -
34098  53 153 253 353   -  -   -  -   -  -
34099  54 154 254 354 154 54 254 54   -  -
34100  55 155 255 355   -  -   -  - 355 55
34101  56 156 256 356 156 56   -  -   -  -
34102  57 157 257 357   -  - 257 57   -  -
34103  58 158 258 358 158 58   -  -   -  -
34104  59 159 259 359   -  -   -  -   -  -
34105  60 160 260 360 160 60 260 60 360 60
34106  61 161 261 361   -  -   -  -   -  -
34107  62 162 262 362 162 62   -  -   -  -
34108  63 163 263 363   -  - 263 63   -  -
34109  64 164 264 364 164 64   -  -   -  -
34110  65 165 265 365   -  -   -  - 365 65
34111  66 166 266 366 166 66 266 66   -  -
34112  67 167 267 367   -  -   -  -   -  -
34113  68 168 268 368 168 68   -  -   -  -
34114  69 169 269 369   -  - 269 69   -  -
34115  70 170 270 370 170 70   -  - 370 70
34116  71 171 271 371   -  -   -  -   -  -
34117  72 172 272 372 172 72 272 72   -  -
34118  73 173 273 373   -  -   -  -   -  -
34119  74 174 274 374 174 74   -  -   -  -
34120  75 175 275 375   -  - 275 75 375 75
34121  76 176 276 376 176 76   -  -   -  -
34122  77 177 277 377   -  -   -  -   -  -
34123  78 178 278 378 178 78 278 78   -  -
34124  79 179 279 379   -  -   -  -   -  -
34125  80 180 280 380 180 80   -  - 380 80
34126  81 181 281 381   -  - 281 81   -  -
34127  82 182 282 382 182 82   -  -   -  -
34128  83 183 283 383   -  -   -  -   -  -
34129  84 184 284 384 184 84 284 84   -  -
34130  85 185 285 385   -  -   -  - 385 85
34131  86 186 286 386 186 86   -  -   -  -
34132  87 187 287 387   -  - 287 87   -  -
34133  88 188 288 388 188 88   -  -   -  -
34134  89 189 289 389   -  -   -  -   -  -
34135  90 190 290 390 190 90 290 90 390 90
34136  91 191 291 391   -  -   -  -   -  -
34137  92 192 292 392 192 92   -  -   -  -
34138  93 193 293 393   -  - 293 93   -  -
34139  94 194 294 394 194 94   -  -   -  -
34140  95 195 295 395   -  -   -  - 395 95
34141  96   - 296 396   -  -   -  -   -  -
34142  97 197   - 397   -  -   -  -   -  -
34143  98 198 298   -   -  -   -  -   -  -
34144  99   -   -   -   -  -   -  -   -  -
34145   -   -   -   -   -  - 200  0   -  -
34146   -   -   -   -   -  -   -  - 300  0
34147}
34148do_execsql_test joinD-1156 {
34149  SELECT t1.*, t2.*, t3.*, t4.*
34150  FROM t1 FULL JOIN t2 ON true
34151  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34152  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34153  WHERE t1.b=t2.b AND t2.x>0
34154  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34155} {
34156   2 102 202 302 102  2   -  -   -  -
34157   4 104 204 304 104  4   -  -   -  -
34158   6 106 206 306 106  6 206  6   -  -
34159   8 108 208 308 108  8   -  -   -  -
34160  10 110 210 310 110 10   -  - 310 10
34161  12 112 212 312 112 12 212 12   -  -
34162  14 114 214 314 114 14   -  -   -  -
34163  16 116 216 316 116 16   -  -   -  -
34164  18 118 218 318 118 18 218 18   -  -
34165  20 120 220 320 120 20   -  - 320 20
34166  22 122 222 322 122 22   -  -   -  -
34167  24 124 224 324 124 24 224 24   -  -
34168  26 126 226 326 126 26   -  -   -  -
34169  28 128 228 328 128 28   -  -   -  -
34170  30 130 230 330 130 30 230 30 330 30
34171  32 132 232 332 132 32   -  -   -  -
34172  34 134 234 334 134 34   -  -   -  -
34173  36 136 236 336 136 36 236 36   -  -
34174  38 138 238 338 138 38   -  -   -  -
34175  40 140 240 340 140 40   -  - 340 40
34176  42 142 242 342 142 42 242 42   -  -
34177  44 144 244 344 144 44   -  -   -  -
34178  46 146 246 346 146 46   -  -   -  -
34179  48 148 248 348 148 48 248 48   -  -
34180  50 150 250 350 150 50   -  - 350 50
34181  52 152 252 352 152 52   -  -   -  -
34182  54 154 254 354 154 54 254 54   -  -
34183  56 156 256 356 156 56   -  -   -  -
34184  58 158 258 358 158 58   -  -   -  -
34185  60 160 260 360 160 60 260 60 360 60
34186  62 162 262 362 162 62   -  -   -  -
34187  64 164 264 364 164 64   -  -   -  -
34188  66 166 266 366 166 66 266 66   -  -
34189  68 168 268 368 168 68   -  -   -  -
34190  70 170 270 370 170 70   -  - 370 70
34191  72 172 272 372 172 72 272 72   -  -
34192  74 174 274 374 174 74   -  -   -  -
34193  76 176 276 376 176 76   -  -   -  -
34194  78 178 278 378 178 78 278 78   -  -
34195  80 180 280 380 180 80   -  - 380 80
34196  82 182 282 382 182 82   -  -   -  -
34197  84 184 284 384 184 84 284 84   -  -
34198  86 186 286 386 186 86   -  -   -  -
34199  88 188 288 388 188 88   -  -   -  -
34200  90 190 290 390 190 90 290 90 390 90
34201  92 192 292 392 192 92   -  -   -  -
34202  94 194 294 394 194 94   -  -   -  -
34203}
34204do_execsql_test joinD-1157 {
34205  SELECT t1.*, t2.*, t3.*, t4.*
34206  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34207  FULL JOIN t3 ON t1.c=t3.c
34208  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34209  WHERE t3.y>0
34210  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34211} {
34212   3 103 203 303   -  - 203  3   -  -
34213   6 106 206 306 106  6 206  6   -  -
34214   9 109 209 309   -  - 209  9   -  -
34215  12 112 212 312 112 12 212 12   -  -
34216  15 115 215 315   -  - 215 15 315 15
34217  18 118 218 318 118 18 218 18   -  -
34218  21 121 221 321   -  - 221 21   -  -
34219  24 124 224 324 124 24 224 24   -  -
34220  27 127 227 327   -  - 227 27   -  -
34221  30 130 230 330 130 30 230 30 330 30
34222  33 133 233 333   -  - 233 33   -  -
34223  36 136 236 336 136 36 236 36   -  -
34224  39 139 239 339   -  - 239 39   -  -
34225  42 142 242 342 142 42 242 42   -  -
34226  45 145 245 345   -  - 245 45 345 45
34227  48 148 248 348 148 48 248 48   -  -
34228  51 151 251 351   -  - 251 51   -  -
34229  54 154 254 354 154 54 254 54   -  -
34230  57 157 257 357   -  - 257 57   -  -
34231  60 160 260 360 160 60 260 60 360 60
34232  63 163 263 363   -  - 263 63   -  -
34233  66 166 266 366 166 66 266 66   -  -
34234  69 169 269 369   -  - 269 69   -  -
34235  72 172 272 372 172 72 272 72   -  -
34236  75 175 275 375   -  - 275 75 375 75
34237  78 178 278 378 178 78 278 78   -  -
34238  81 181 281 381   -  - 281 81   -  -
34239  84 184 284 384 184 84 284 84   -  -
34240  87 187 287 387   -  - 287 87   -  -
34241  90 190 290 390 190 90 290 90 390 90
34242  93 193 293 393   -  - 293 93   -  -
34243}
34244do_execsql_test joinD-1158 {
34245  SELECT t1.*, t2.*, t3.*, t4.*
34246  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34247  FULL JOIN t3 ON t1.c=t3.c
34248  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34249  WHERE t3.y>0 OR t3.y IS NULL
34250  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34251} {
34252   1 101 201 301   -  -   -  -   -  -
34253   2 102 202 302 102  2   -  -   -  -
34254   3 103 203 303   -  - 203  3   -  -
34255   4 104 204 304 104  4   -  -   -  -
34256   5 105 205 305   -  -   -  - 305  5
34257   6 106 206 306 106  6 206  6   -  -
34258   7 107 207 307   -  -   -  -   -  -
34259   8 108 208 308 108  8   -  -   -  -
34260   9 109 209 309   -  - 209  9   -  -
34261  10 110 210 310 110 10   -  - 310 10
34262  11 111 211 311   -  -   -  -   -  -
34263  12 112 212 312 112 12 212 12   -  -
34264  13 113 213 313   -  -   -  -   -  -
34265  14 114 214 314 114 14   -  -   -  -
34266  15 115 215 315   -  - 215 15 315 15
34267  16 116 216 316 116 16   -  -   -  -
34268  17 117 217 317   -  -   -  -   -  -
34269  18 118 218 318 118 18 218 18   -  -
34270  19 119 219 319   -  -   -  -   -  -
34271  20 120 220 320 120 20   -  - 320 20
34272  21 121 221 321   -  - 221 21   -  -
34273  22 122 222 322 122 22   -  -   -  -
34274  23 123 223 323   -  -   -  -   -  -
34275  24 124 224 324 124 24 224 24   -  -
34276  25 125 225 325   -  -   -  - 325 25
34277  26 126 226 326 126 26   -  -   -  -
34278  27 127 227 327   -  - 227 27   -  -
34279  28 128 228 328 128 28   -  -   -  -
34280  29 129 229 329   -  -   -  -   -  -
34281  30 130 230 330 130 30 230 30 330 30
34282  31 131 231 331   -  -   -  -   -  -
34283  32 132 232 332 132 32   -  -   -  -
34284  33 133 233 333   -  - 233 33   -  -
34285  34 134 234 334 134 34   -  -   -  -
34286  35 135 235 335   -  -   -  - 335 35
34287  36 136 236 336 136 36 236 36   -  -
34288  37 137 237 337   -  -   -  -   -  -
34289  38 138 238 338 138 38   -  -   -  -
34290  39 139 239 339   -  - 239 39   -  -
34291  40 140 240 340 140 40   -  - 340 40
34292  41 141 241 341   -  -   -  -   -  -
34293  42 142 242 342 142 42 242 42   -  -
34294  43 143 243 343   -  -   -  -   -  -
34295  44 144 244 344 144 44   -  -   -  -
34296  45 145 245 345   -  - 245 45 345 45
34297  46 146 246 346 146 46   -  -   -  -
34298  47 147 247 347   -  -   -  -   -  -
34299  48 148 248 348 148 48 248 48   -  -
34300  49 149 249 349   -  -   -  -   -  -
34301  50 150 250 350 150 50   -  - 350 50
34302  51 151 251 351   -  - 251 51   -  -
34303  52 152 252 352 152 52   -  -   -  -
34304  53 153 253 353   -  -   -  -   -  -
34305  54 154 254 354 154 54 254 54   -  -
34306  55 155 255 355   -  -   -  - 355 55
34307  56 156 256 356 156 56   -  -   -  -
34308  57 157 257 357   -  - 257 57   -  -
34309  58 158 258 358 158 58   -  -   -  -
34310  59 159 259 359   -  -   -  -   -  -
34311  60 160 260 360 160 60 260 60 360 60
34312  61 161 261 361   -  -   -  -   -  -
34313  62 162 262 362 162 62   -  -   -  -
34314  63 163 263 363   -  - 263 63   -  -
34315  64 164 264 364 164 64   -  -   -  -
34316  65 165 265 365   -  -   -  - 365 65
34317  66 166 266 366 166 66 266 66   -  -
34318  67 167 267 367   -  -   -  -   -  -
34319  68 168 268 368 168 68   -  -   -  -
34320  69 169 269 369   -  - 269 69   -  -
34321  70 170 270 370 170 70   -  - 370 70
34322  71 171 271 371   -  -   -  -   -  -
34323  72 172 272 372 172 72 272 72   -  -
34324  73 173 273 373   -  -   -  -   -  -
34325  74 174 274 374 174 74   -  -   -  -
34326  75 175 275 375   -  - 275 75 375 75
34327  76 176 276 376 176 76   -  -   -  -
34328  77 177 277 377   -  -   -  -   -  -
34329  78 178 278 378 178 78 278 78   -  -
34330  79 179 279 379   -  -   -  -   -  -
34331  80 180 280 380 180 80   -  - 380 80
34332  81 181 281 381   -  - 281 81   -  -
34333  82 182 282 382 182 82   -  -   -  -
34334  83 183 283 383   -  -   -  -   -  -
34335  84 184 284 384 184 84 284 84   -  -
34336  85 185 285 385   -  -   -  - 385 85
34337  86 186 286 386 186 86   -  -   -  -
34338  87 187 287 387   -  - 287 87   -  -
34339  88 188 288 388 188 88   -  -   -  -
34340  89 189 289 389   -  -   -  -   -  -
34341  90 190 290 390 190 90 290 90 390 90
34342  91 191 291 391   -  -   -  -   -  -
34343  92 192 292 392 192 92   -  -   -  -
34344  93 193 293 393   -  - 293 93   -  -
34345  94 194 294 394 194 94   -  -   -  -
34346  95 195 295 395   -  -   -  - 395 95
34347  96   - 296 396   -  -   -  -   -  -
34348  97 197   - 397   -  -   -  -   -  -
34349  98 198 298   -   -  -   -  -   -  -
34350  99   -   -   -   -  -   -  -   -  -
34351   -   -   -   - 100  0   -  -   -  -
34352   -   -   -   -   -  -   -  - 300  0
34353}
34354do_execsql_test joinD-1159 {
34355  SELECT t1.*, t2.*, t3.*, t4.*
34356  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34357  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34358  FULL JOIN t4 ON t1.d=t4.d
34359  WHERE t4.z>0
34360  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34361} {
34362   5 105 205 305   -  -   -  - 305  5
34363  10 110 210 310 110 10   -  - 310 10
34364  15 115 215 315   -  - 215 15 315 15
34365  20 120 220 320 120 20   -  - 320 20
34366  25 125 225 325   -  -   -  - 325 25
34367  30 130 230 330 130 30 230 30 330 30
34368  35 135 235 335   -  -   -  - 335 35
34369  40 140 240 340 140 40   -  - 340 40
34370  45 145 245 345   -  - 245 45 345 45
34371  50 150 250 350 150 50   -  - 350 50
34372  55 155 255 355   -  -   -  - 355 55
34373  60 160 260 360 160 60 260 60 360 60
34374  65 165 265 365   -  -   -  - 365 65
34375  70 170 270 370 170 70   -  - 370 70
34376  75 175 275 375   -  - 275 75 375 75
34377  80 180 280 380 180 80   -  - 380 80
34378  85 185 285 385   -  -   -  - 385 85
34379  90 190 290 390 190 90 290 90 390 90
34380  95 195 295 395   -  -   -  - 395 95
34381}
34382do_execsql_test joinD-1160 {
34383  SELECT t1.*, t2.*, t3.*, t4.*
34384  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34385  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34386  FULL JOIN t4 ON t1.d=t4.d
34387  WHERE t4.z IS NULL OR t4.z>0
34388  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34389} {
34390   1 101 201 301   -  -   -  -   -  -
34391   2 102 202 302 102  2   -  -   -  -
34392   3 103 203 303   -  - 203  3   -  -
34393   4 104 204 304 104  4   -  -   -  -
34394   5 105 205 305   -  -   -  - 305  5
34395   6 106 206 306 106  6 206  6   -  -
34396   7 107 207 307   -  -   -  -   -  -
34397   8 108 208 308 108  8   -  -   -  -
34398   9 109 209 309   -  - 209  9   -  -
34399  10 110 210 310 110 10   -  - 310 10
34400  11 111 211 311   -  -   -  -   -  -
34401  12 112 212 312 112 12 212 12   -  -
34402  13 113 213 313   -  -   -  -   -  -
34403  14 114 214 314 114 14   -  -   -  -
34404  15 115 215 315   -  - 215 15 315 15
34405  16 116 216 316 116 16   -  -   -  -
34406  17 117 217 317   -  -   -  -   -  -
34407  18 118 218 318 118 18 218 18   -  -
34408  19 119 219 319   -  -   -  -   -  -
34409  20 120 220 320 120 20   -  - 320 20
34410  21 121 221 321   -  - 221 21   -  -
34411  22 122 222 322 122 22   -  -   -  -
34412  23 123 223 323   -  -   -  -   -  -
34413  24 124 224 324 124 24 224 24   -  -
34414  25 125 225 325   -  -   -  - 325 25
34415  26 126 226 326 126 26   -  -   -  -
34416  27 127 227 327   -  - 227 27   -  -
34417  28 128 228 328 128 28   -  -   -  -
34418  29 129 229 329   -  -   -  -   -  -
34419  30 130 230 330 130 30 230 30 330 30
34420  31 131 231 331   -  -   -  -   -  -
34421  32 132 232 332 132 32   -  -   -  -
34422  33 133 233 333   -  - 233 33   -  -
34423  34 134 234 334 134 34   -  -   -  -
34424  35 135 235 335   -  -   -  - 335 35
34425  36 136 236 336 136 36 236 36   -  -
34426  37 137 237 337   -  -   -  -   -  -
34427  38 138 238 338 138 38   -  -   -  -
34428  39 139 239 339   -  - 239 39   -  -
34429  40 140 240 340 140 40   -  - 340 40
34430  41 141 241 341   -  -   -  -   -  -
34431  42 142 242 342 142 42 242 42   -  -
34432  43 143 243 343   -  -   -  -   -  -
34433  44 144 244 344 144 44   -  -   -  -
34434  45 145 245 345   -  - 245 45 345 45
34435  46 146 246 346 146 46   -  -   -  -
34436  47 147 247 347   -  -   -  -   -  -
34437  48 148 248 348 148 48 248 48   -  -
34438  49 149 249 349   -  -   -  -   -  -
34439  50 150 250 350 150 50   -  - 350 50
34440  51 151 251 351   -  - 251 51   -  -
34441  52 152 252 352 152 52   -  -   -  -
34442  53 153 253 353   -  -   -  -   -  -
34443  54 154 254 354 154 54 254 54   -  -
34444  55 155 255 355   -  -   -  - 355 55
34445  56 156 256 356 156 56   -  -   -  -
34446  57 157 257 357   -  - 257 57   -  -
34447  58 158 258 358 158 58   -  -   -  -
34448  59 159 259 359   -  -   -  -   -  -
34449  60 160 260 360 160 60 260 60 360 60
34450  61 161 261 361   -  -   -  -   -  -
34451  62 162 262 362 162 62   -  -   -  -
34452  63 163 263 363   -  - 263 63   -  -
34453  64 164 264 364 164 64   -  -   -  -
34454  65 165 265 365   -  -   -  - 365 65
34455  66 166 266 366 166 66 266 66   -  -
34456  67 167 267 367   -  -   -  -   -  -
34457  68 168 268 368 168 68   -  -   -  -
34458  69 169 269 369   -  - 269 69   -  -
34459  70 170 270 370 170 70   -  - 370 70
34460  71 171 271 371   -  -   -  -   -  -
34461  72 172 272 372 172 72 272 72   -  -
34462  73 173 273 373   -  -   -  -   -  -
34463  74 174 274 374 174 74   -  -   -  -
34464  75 175 275 375   -  - 275 75 375 75
34465  76 176 276 376 176 76   -  -   -  -
34466  77 177 277 377   -  -   -  -   -  -
34467  78 178 278 378 178 78 278 78   -  -
34468  79 179 279 379   -  -   -  -   -  -
34469  80 180 280 380 180 80   -  - 380 80
34470  81 181 281 381   -  - 281 81   -  -
34471  82 182 282 382 182 82   -  -   -  -
34472  83 183 283 383   -  -   -  -   -  -
34473  84 184 284 384 184 84 284 84   -  -
34474  85 185 285 385   -  -   -  - 385 85
34475  86 186 286 386 186 86   -  -   -  -
34476  87 187 287 387   -  - 287 87   -  -
34477  88 188 288 388 188 88   -  -   -  -
34478  89 189 289 389   -  -   -  -   -  -
34479  90 190 290 390 190 90 290 90 390 90
34480  91 191 291 391   -  -   -  -   -  -
34481  92 192 292 392 192 92   -  -   -  -
34482  93 193 293 393   -  - 293 93   -  -
34483  94 194 294 394 194 94   -  -   -  -
34484  95 195 295 395   -  -   -  - 395 95
34485  96   - 296 396   -  -   -  -   -  -
34486  97 197   - 397   -  -   -  -   -  -
34487  98 198 298   -   -  -   -  -   -  -
34488  99   -   -   -   -  -   -  -   -  -
34489   -   -   -   - 100  0   -  -   -  -
34490   -   -   -   -   -  - 200  0   -  -
34491}
34492do_execsql_test joinD-1161 {
34493  SELECT t1.*, t2.*, t3.*, t4.*
34494  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34495  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
34496  FULL JOIN t4 ON t1.d=t4.d
34497  WHERE t2.x>0 AND t4.z>0
34498  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34499} {
34500  10 110 210 310 110 10   -  - 310 10
34501  20 120 220 320 120 20   -  - 320 20
34502  30 130 230 330 130 30 230 30 330 30
34503  40 140 240 340 140 40   -  - 340 40
34504  50 150 250 350 150 50   -  - 350 50
34505  60 160 260 360 160 60 260 60 360 60
34506  70 170 270 370 170 70   -  - 370 70
34507  80 180 280 380 180 80   -  - 380 80
34508  90 190 290 390 190 90 290 90 390 90
34509}
34510do_execsql_test joinD-1162 {
34511  SELECT t1.*, t2.*, t3.*, t4.*
34512  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
34513  FULL JOIN t3 ON t1.c=t3.c
34514  FULL JOIN t4 ON t1.d=t4.d
34515  WHERE t4.z>0 AND t3.y>0
34516  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34517} {
34518  15 115 215 315   -  - 215 15 315 15
34519  30 130 230 330 130 30 230 30 330 30
34520  45 145 245 345   -  - 245 45 345 45
34521  60 160 260 360 160 60 260 60 360 60
34522  75 175 275 375   -  - 275 75 375 75
34523  90 190 290 390 190 90 290 90 390 90
34524}
34525do_execsql_test joinD-1163 {
34526  SELECT t1.*, t2.*, t3.*, t4.*
34527  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34528  FULL JOIN t3 ON t1.c=t3.c
34529  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
34530  WHERE t2.x>0 AND t3.y>0
34531  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34532} {
34533   6 106 206 306 106  6 206  6   -  -
34534  12 112 212 312 112 12 212 12   -  -
34535  18 118 218 318 118 18 218 18   -  -
34536  24 124 224 324 124 24 224 24   -  -
34537  30 130 230 330 130 30 230 30 330 30
34538  36 136 236 336 136 36 236 36   -  -
34539  42 142 242 342 142 42 242 42   -  -
34540  48 148 248 348 148 48 248 48   -  -
34541  54 154 254 354 154 54 254 54   -  -
34542  60 160 260 360 160 60 260 60 360 60
34543  66 166 266 366 166 66 266 66   -  -
34544  72 172 272 372 172 72 272 72   -  -
34545  78 178 278 378 178 78 278 78   -  -
34546  84 184 284 384 184 84 284 84   -  -
34547  90 190 290 390 190 90 290 90 390 90
34548}
34549do_execsql_test joinD-1164 {
34550  SELECT t1.*, t2.*, t3.*, t4.*
34551  FROM t1 FULL JOIN t2 ON t1.b=t2.b
34552  FULL JOIN t3 ON t1.c=t3.c
34553  FULL JOIN t4 ON t1.d=t4.d
34554  WHERE t2.x>0 AND t3.y>0 AND t4.z>0
34555  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34556} {
34557  30 130 230 330 130 30 230 30 330 30
34558  60 160 260 360 160 60 260 60 360 60
34559  90 190 290 390 190 90 290 90 390 90
34560}
34561do_execsql_test joinD-1165 {
34562  SELECT t1.*, t2.*, t3.*, t4.*
34563  FROM t1 FULL JOIN t2 ON t1.b = t2.b AND t2.x>0
34564  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
34565  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
34566  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34567} {
34568   0 100 200 300   -  -   -  -   -  -
34569   1 101 201 301   -  -   -  -   -  -
34570   2 102 202 302 102  2   -  -   -  -
34571   3 103 203 303   -  - 203  3   -  -
34572   4 104 204 304 104  4   -  -   -  -
34573   5 105 205 305   -  -   -  - 305  5
34574   6 106 206 306 106  6 206  6   -  -
34575   7 107 207 307   -  -   -  -   -  -
34576   8 108 208 308 108  8   -  -   -  -
34577   9 109 209 309   -  - 209  9   -  -
34578  10 110 210 310 110 10   -  - 310 10
34579  11 111 211 311   -  -   -  -   -  -
34580  12 112 212 312 112 12 212 12   -  -
34581  13 113 213 313   -  -   -  -   -  -
34582  14 114 214 314 114 14   -  -   -  -
34583  15 115 215 315   -  - 215 15 315 15
34584  16 116 216 316 116 16   -  -   -  -
34585  17 117 217 317   -  -   -  -   -  -
34586  18 118 218 318 118 18 218 18   -  -
34587  19 119 219 319   -  -   -  -   -  -
34588  20 120 220 320 120 20   -  - 320 20
34589  21 121 221 321   -  - 221 21   -  -
34590  22 122 222 322 122 22   -  -   -  -
34591  23 123 223 323   -  -   -  -   -  -
34592  24 124 224 324 124 24 224 24   -  -
34593  25 125 225 325   -  -   -  - 325 25
34594  26 126 226 326 126 26   -  -   -  -
34595  27 127 227 327   -  - 227 27   -  -
34596  28 128 228 328 128 28   -  -   -  -
34597  29 129 229 329   -  -   -  -   -  -
34598  30 130 230 330 130 30 230 30 330 30
34599  31 131 231 331   -  -   -  -   -  -
34600  32 132 232 332 132 32   -  -   -  -
34601  33 133 233 333   -  - 233 33   -  -
34602  34 134 234 334 134 34   -  -   -  -
34603  35 135 235 335   -  -   -  - 335 35
34604  36 136 236 336 136 36 236 36   -  -
34605  37 137 237 337   -  -   -  -   -  -
34606  38 138 238 338 138 38   -  -   -  -
34607  39 139 239 339   -  - 239 39   -  -
34608  40 140 240 340 140 40   -  - 340 40
34609  41 141 241 341   -  -   -  -   -  -
34610  42 142 242 342 142 42 242 42   -  -
34611  43 143 243 343   -  -   -  -   -  -
34612  44 144 244 344 144 44   -  -   -  -
34613  45 145 245 345   -  - 245 45 345 45
34614  46 146 246 346 146 46   -  -   -  -
34615  47 147 247 347   -  -   -  -   -  -
34616  48 148 248 348 148 48 248 48   -  -
34617  49 149 249 349   -  -   -  -   -  -
34618  50 150 250 350 150 50   -  - 350 50
34619  51 151 251 351   -  - 251 51   -  -
34620  52 152 252 352 152 52   -  -   -  -
34621  53 153 253 353   -  -   -  -   -  -
34622  54 154 254 354 154 54 254 54   -  -
34623  55 155 255 355   -  -   -  - 355 55
34624  56 156 256 356 156 56   -  -   -  -
34625  57 157 257 357   -  - 257 57   -  -
34626  58 158 258 358 158 58   -  -   -  -
34627  59 159 259 359   -  -   -  -   -  -
34628  60 160 260 360 160 60 260 60 360 60
34629  61 161 261 361   -  -   -  -   -  -
34630  62 162 262 362 162 62   -  -   -  -
34631  63 163 263 363   -  - 263 63   -  -
34632  64 164 264 364 164 64   -  -   -  -
34633  65 165 265 365   -  -   -  - 365 65
34634  66 166 266 366 166 66 266 66   -  -
34635  67 167 267 367   -  -   -  -   -  -
34636  68 168 268 368 168 68   -  -   -  -
34637  69 169 269 369   -  - 269 69   -  -
34638  70 170 270 370 170 70   -  - 370 70
34639  71 171 271 371   -  -   -  -   -  -
34640  72 172 272 372 172 72 272 72   -  -
34641  73 173 273 373   -  -   -  -   -  -
34642  74 174 274 374 174 74   -  -   -  -
34643  75 175 275 375   -  - 275 75 375 75
34644  76 176 276 376 176 76   -  -   -  -
34645  77 177 277 377   -  -   -  -   -  -
34646  78 178 278 378 178 78 278 78   -  -
34647  79 179 279 379   -  -   -  -   -  -
34648  80 180 280 380 180 80   -  - 380 80
34649  81 181 281 381   -  - 281 81   -  -
34650  82 182 282 382 182 82   -  -   -  -
34651  83 183 283 383   -  -   -  -   -  -
34652  84 184 284 384 184 84 284 84   -  -
34653  85 185 285 385   -  -   -  - 385 85
34654  86 186 286 386 186 86   -  -   -  -
34655  87 187 287 387   -  - 287 87   -  -
34656  88 188 288 388 188 88   -  -   -  -
34657  89 189 289 389   -  -   -  -   -  -
34658  90 190 290 390 190 90 290 90 390 90
34659  91 191 291 391   -  -   -  -   -  -
34660  92 192 292 392 192 92   -  -   -  -
34661  93 193 293 393   -  - 293 93   -  -
34662  94 194 294 394 194 94   -  -   -  -
34663  95 195 295 395   -  -   -  - 395 95
34664  96   - 296 396   -  -   -  -   -  -
34665  97 197   - 397   -  -   -  -   -  -
34666  98 198 298   -   -  -   -  -   -  -
34667  99   -   -   -   -  -   -  -   -  -
34668   -   -   -   - 100  0   -  -   -  -
34669   -   -   -   -   -  - 200  0   -  -
34670   -   -   -   -   -  -   -  - 300  0
34671}
34672do_execsql_test joinD-1166 {
34673  SELECT t1.*, t2.*, t3.*, t4.*
34674  FROM t1 FULL JOIN t2 ON t2.x>0
34675  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
34676  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
34677  WHERE t1.b = t2.b
34678  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34679} {
34680   2 102 202 302 102  2   -  -   -  -
34681   4 104 204 304 104  4   -  -   -  -
34682   6 106 206 306 106  6 206  6   -  -
34683   8 108 208 308 108  8   -  -   -  -
34684  10 110 210 310 110 10   -  - 310 10
34685  12 112 212 312 112 12 212 12   -  -
34686  14 114 214 314 114 14   -  -   -  -
34687  16 116 216 316 116 16   -  -   -  -
34688  18 118 218 318 118 18 218 18   -  -
34689  20 120 220 320 120 20   -  - 320 20
34690  22 122 222 322 122 22   -  -   -  -
34691  24 124 224 324 124 24 224 24   -  -
34692  26 126 226 326 126 26   -  -   -  -
34693  28 128 228 328 128 28   -  -   -  -
34694  30 130 230 330 130 30 230 30 330 30
34695  32 132 232 332 132 32   -  -   -  -
34696  34 134 234 334 134 34   -  -   -  -
34697  36 136 236 336 136 36 236 36   -  -
34698  38 138 238 338 138 38   -  -   -  -
34699  40 140 240 340 140 40   -  - 340 40
34700  42 142 242 342 142 42 242 42   -  -
34701  44 144 244 344 144 44   -  -   -  -
34702  46 146 246 346 146 46   -  -   -  -
34703  48 148 248 348 148 48 248 48   -  -
34704  50 150 250 350 150 50   -  - 350 50
34705  52 152 252 352 152 52   -  -   -  -
34706  54 154 254 354 154 54 254 54   -  -
34707  56 156 256 356 156 56   -  -   -  -
34708  58 158 258 358 158 58   -  -   -  -
34709  60 160 260 360 160 60 260 60 360 60
34710  62 162 262 362 162 62   -  -   -  -
34711  64 164 264 364 164 64   -  -   -  -
34712  66 166 266 366 166 66 266 66   -  -
34713  68 168 268 368 168 68   -  -   -  -
34714  70 170 270 370 170 70   -  - 370 70
34715  72 172 272 372 172 72 272 72   -  -
34716  74 174 274 374 174 74   -  -   -  -
34717  76 176 276 376 176 76   -  -   -  -
34718  78 178 278 378 178 78 278 78   -  -
34719  80 180 280 380 180 80   -  - 380 80
34720  82 182 282 382 182 82   -  -   -  -
34721  84 184 284 384 184 84 284 84   -  -
34722  86 186 286 386 186 86   -  -   -  -
34723  88 188 288 388 188 88   -  -   -  -
34724  90 190 290 390 190 90 290 90 390 90
34725  92 192 292 392 192 92   -  -   -  -
34726  94 194 294 394 194 94   -  -   -  -
34727}
34728do_execsql_test joinD-1167 {
34729  SELECT t1.*, t2.*, t3.*, t4.*
34730  FROM t1 FULL JOIN t2 ON t2.x>0
34731  FULL JOIN t3 ON t3.y>0
34732  FULL JOIN t4 ON t1.d = t4.d AND t4.z>0
34733  WHERE t1.b = t2.b AND t1.c = t3.c
34734  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34735} {
34736   6 106 206 306 106  6 206  6   -  -
34737  12 112 212 312 112 12 212 12   -  -
34738  18 118 218 318 118 18 218 18   -  -
34739  24 124 224 324 124 24 224 24   -  -
34740  30 130 230 330 130 30 230 30 330 30
34741  36 136 236 336 136 36 236 36   -  -
34742  42 142 242 342 142 42 242 42   -  -
34743  48 148 248 348 148 48 248 48   -  -
34744  54 154 254 354 154 54 254 54   -  -
34745  60 160 260 360 160 60 260 60 360 60
34746  66 166 266 366 166 66 266 66   -  -
34747  72 172 272 372 172 72 272 72   -  -
34748  78 178 278 378 178 78 278 78   -  -
34749  84 184 284 384 184 84 284 84   -  -
34750  90 190 290 390 190 90 290 90 390 90
34751}
34752do_execsql_test joinD-1168 {
34753  SELECT t1.*, t2.*, t3.*, t4.*
34754  FROM t1 FULL JOIN t2 ON t2.x>0
34755  FULL JOIN t3 ON t1.c = t3.c AND t3.y>0
34756  FULL JOIN t4 ON t4.z>0
34757  WHERE t1.b = t2.b AND t1.d = t4.d
34758  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
34759} {
34760  10 110 210 310 110 10   -  - 310 10
34761  20 120 220 320 120 20   -  - 320 20
34762  30 130 230 330 130 30 230 30 330 30
34763  40 140 240 340 140 40   -  - 340 40
34764  50 150 250 350 150 50   -  - 350 50
34765  60 160 260 360 160 60 260 60 360 60
34766  70 170 270 370 170 70   -  - 370 70
34767  80 180 280 380 180 80   -  - 380 80
34768  90 190 290 390 190 90 290 90 390 90
34769}
34770#############################################################################
34771# The following are extra tests added manually
34772do_execsql_test joinD-extra-1000 {
34773  CREATE VIEW v1 AS
34774    SELECT *
34775    FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
34776    RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
34777    LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0;
34778  CREATE TRIGGER v1r1 INSTEAD OF UPDATE OF c ON v1 BEGIN
34779    UPDATE t1 SET c=new.c WHERE (a,b,c,d) IS (old.a,old.b,old.c,old.d);
34780    UPDATE t3 SET c=new.c WHERE (c,y) IS (old.c,old.y);
34781  END;
34782  SELECT * FROM v1 WHERE y BETWEEN 30 AND 40 ORDER BY y;
34783} {
34784  30 130 230 330 130 30 230 30 330 30
34785   -   -   -   -   -  - 233 33   -  -
34786  36 136 236 336 136 36 236 36   -  -
34787   -   -   -   -   -  - 239 39   -  -
34788}
34789do_execsql_test joinD-extra-1010 {
34790  BEGIN;
34791  UPDATE v1 SET c=c+1000 WHERE y BETWEEN 30 and 40;
34792  SELECT * FROM v1 WHERE y BETWEEN 30 AND 40 ORDER BY y;
34793  ROLLBACK;
34794} {
34795  30 130 1230 330 130 30 1230 30 330 30
34796   -   -    -   -   -  -  233 33   -  -
34797  36 136 1236 336 136 36 1236 36   -  -
34798   -   -    -   -   -  -  239 39   -  -
34799}
34800finish_test
34801#############################################################################
34802# This is the TCL script used to generate the psql script that generated
34803# the data above.
34804#
34805# puts "
34806# \\pset border off
34807# \\pset tuples_only on
34808# \\pset null -
34809#
34810# DROP TABLE IF EXISTS t1;
34811# DROP TABLE IF EXISTS t2;
34812# DROP TABLE IF EXISTS t3;
34813# DROP TABLE IF EXISTS t4;
34814# CREATE TABLE t1(a INT, b INT, c INT, d INT);
34815# WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
34816#   INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
34817# CREATE TABLE t2(b INT, x INT);
34818# INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
34819# CREATE INDEX t2b ON t2(b);
34820# CREATE TABLE t3(c INT, y INT);
34821# INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
34822# CREATE INDEX t3c ON t3(c);
34823# CREATE TABLE t4(d INT, z INT);
34824# INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
34825# CREATE INDEX t4d ON t4(d);
34826# INSERT INTO t1(a,b,c,d) VALUES
34827#   (96,NULL,296,396),
34828#   (97,197,NULL,397),
34829#   (98,198,298,NULL),
34830#   (99,NULL,NULL,NULL);
34831# "
34832#
34833# proc echo {prefix txt} {
34834#   regsub -all {\n} $txt \n$prefix txt
34835#   puts "$prefix$txt"
34836# }
34837#
34838# set n 0
34839# foreach j1 {INNER LEFT RIGHT FULL} {
34840#   foreach j2 {INNER LEFT RIGHT FULL} {
34841#     foreach j3 {INNER LEFT RIGHT FULL} {
34842#
34843# incr n
34844# set q1 ""
34845# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34846# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34847# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34848# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34849# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34850#
34851# echo "\\qecho " "do_execsql_test joinB-$n \{"
34852# echo "\\qecho X  " $q1
34853# echo "\\qecho " "\} \{"
34854# puts $q1
34855# echo "\\qecho " "\}"
34856#
34857# if {$j1!="FULL"} {
34858#   incr n
34859#   set q1 ""
34860#   append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34861#   append q1 "  FROM t1 $j1 JOIN t2 ON t1.b IS NOT DISTINCT FROM t2.b AND t2.x>0\n"
34862#   append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34863#   append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34864#   append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34865#
34866#   echo "\\qecho " "do_execsql_test joinB-$n \{"
34867#   echo "\\qecho X  " $q1
34868#   echo "\\qecho " "\} \{"
34869#   puts $q1
34870#   echo "\\qecho " "\}"
34871# }
34872#
34873# incr n
34874# set q1 ""
34875# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34876# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
34877# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34878# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34879# append q1 " WHERE t2.x>0\n"
34880# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34881#
34882# echo "\\qecho " "do_execsql_test joinB-$n \{"
34883# echo "\\qecho X  " $q1
34884# echo "\\qecho " "\} \{"
34885# puts $q1
34886# echo "\\qecho " "\}"
34887#
34888# incr n
34889# set q1 ""
34890# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34891# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
34892# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34893# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34894# append q1 " WHERE (t2.x>0 OR t2.x IS NULL)\n"
34895# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34896#
34897# echo "\\qecho " "do_execsql_test joinB-$n \{"
34898# echo "\\qecho X  " $q1
34899# echo "\\qecho " "\} \{"
34900# puts $q1
34901# echo "\\qecho " "\}"
34902#
34903# incr n
34904# set q1 ""
34905# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34906# append q1 "  FROM t1 $j1 JOIN t2 ON true\n"
34907# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34908# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34909# append q1 " WHERE t1.b=t2.b AND t2.x>0\n"
34910# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34911#
34912# echo "\\qecho " "do_execsql_test joinB-$n \{"
34913# echo "\\qecho X  " $q1
34914# echo "\\qecho " "\} \{"
34915# puts $q1
34916# echo "\\qecho " "\}"
34917#
34918# incr n
34919# set q1 ""
34920# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34921# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34922# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
34923# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34924# append q1 " WHERE t3.y>0\n"
34925# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34926#
34927# echo "\\qecho " "do_execsql_test joinB-$n \{"
34928# echo "\\qecho X  " $q1
34929# echo "\\qecho " "\} \{"
34930# puts $q1
34931# echo "\\qecho " "\}"
34932#
34933# incr n
34934# set q1 ""
34935# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34936# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34937# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
34938# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
34939# append q1 " WHERE t3.y>0 OR t3.y IS NULL\n"
34940# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34941#
34942# echo "\\qecho " "do_execsql_test joinB-$n \{"
34943# echo "\\qecho X  " $q1
34944# echo "\\qecho " "\} \{"
34945# puts $q1
34946# echo "\\qecho " "\}"
34947#
34948# incr n
34949# set q1 ""
34950# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34951# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34952# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34953# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34954# append q1 " WHERE t4.z>0\n"
34955# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34956#
34957# echo "\\qecho " "do_execsql_test joinB-$n \{"
34958# echo "\\qecho X  " $q1
34959# echo "\\qecho " "\} \{"
34960# puts $q1
34961# echo "\\qecho " "\}"
34962#
34963# incr n
34964# set q1 ""
34965# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34966# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34967# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34968# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34969# append q1 " WHERE t4.z IS NULL OR t4.z>0\n"
34970# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34971#
34972# echo "\\qecho " "do_execsql_test joinB-$n \{"
34973# echo "\\qecho X  " $q1
34974# echo "\\qecho " "\} \{"
34975# puts $q1
34976# echo "\\qecho " "\}"
34977#
34978# incr n
34979# set q1 ""
34980# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34981# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
34982# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
34983# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34984# append q1 " WHERE t2.x>0 AND t4.z>0\n"
34985# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
34986#
34987# echo "\\qecho " "do_execsql_test joinB-$n \{"
34988# echo "\\qecho X  " $q1
34989# echo "\\qecho " "\} \{"
34990# puts $q1
34991# echo "\\qecho " "\}"
34992#
34993# incr n
34994# set q1 ""
34995# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
34996# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
34997# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
34998# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
34999# append q1 " WHERE t4.z>0 AND t3.y>0\n"
35000# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35001#
35002# echo "\\qecho " "do_execsql_test joinB-$n \{"
35003# echo "\\qecho X  " $q1
35004# echo "\\qecho " "\} \{"
35005# puts $q1
35006# echo "\\qecho " "\}"
35007#
35008# incr n
35009# set q1 ""
35010# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35011# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
35012# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
35013# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
35014# append q1 " WHERE t2.x>0 AND t3.y>0\n"
35015# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35016#
35017# echo "\\qecho " "do_execsql_test joinB-$n \{"
35018# echo "\\qecho X  " $q1
35019# echo "\\qecho " "\} \{"
35020# puts $q1
35021# echo "\\qecho " "\}"
35022#
35023# incr n
35024# set q1 ""
35025# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35026# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b\n"
35027# append q1 "          $j2 JOIN t3 ON t1.c=t3.c\n"
35028# append q1 "          $j3 JOIN t4 ON t1.d=t4.d\n"
35029# append q1 " WHERE t2.x>0 AND t3.y>0 AND t4.z>0\n"
35030# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35031#
35032# echo "\\qecho " "do_execsql_test joinB-$n \{"
35033# echo "\\qecho X  " $q1
35034# echo "\\qecho " "\} \{"
35035# puts $q1
35036# echo "\\qecho " "\}"
35037#
35038# set op1 [expr {$j1=="FULL"?"=":"IS NOT DISTINCT FROM"}]
35039# set op2 [expr {$j2=="FULL"?"=":"IS NOT DISTINCT FROM"}]
35040# set op3 [expr {$j3=="FULL"?"=":"IS NOT DISTINCT FROM"}]
35041# incr n
35042# set q1 ""
35043# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35044# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b $op1 t2.b AND t2.x>0\n"
35045# append q1 "          $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
35046# append q1 "          $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
35047# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35048#
35049# echo "\\qecho " "do_execsql_test joinB-$n \{"
35050# echo "\\qecho X  " $q1
35051# echo "\\qecho " "\} \{"
35052# puts $q1
35053# echo "\\qecho " "\}"
35054#
35055# incr n
35056# set q1 ""
35057# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35058# append q1 "  FROM t1 $j1 JOIN t2 ON t2.x>0\n"
35059# append q1 "          $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
35060# append q1 "          $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
35061# append q1 " WHERE t1.b $op1 t2.b\n"
35062# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35063#
35064# echo "\\qecho " "do_execsql_test joinB-$n \{"
35065# echo "\\qecho X  " $q1
35066# echo "\\qecho " "\} \{"
35067# puts $q1
35068# echo "\\qecho " "\}"
35069#
35070# incr n
35071# set q1 ""
35072# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35073# append q1 "  FROM t1 $j1 JOIN t2 ON t2.x>0\n"
35074# append q1 "          $j2 JOIN t3 ON t3.y>0\n"
35075# append q1 "          $j3 JOIN t4 ON t1.d $op3 t4.d AND t4.z>0\n"
35076# append q1 " WHERE t1.b $op1 t2.b AND t1.c $op2 t3.c\n"
35077# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35078#
35079# echo "\\qecho " "do_execsql_test joinB-$n \{"
35080# echo "\\qecho X  " $q1
35081# echo "\\qecho " "\} \{"
35082# puts $q1
35083# echo "\\qecho " "\}"
35084#
35085# incr n
35086# set q1 ""
35087# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35088# append q1 "  FROM t1 $j1 JOIN t2 ON t2.x>0\n"
35089# append q1 "          $j2 JOIN t3 ON t1.c $op2 t3.c AND t3.y>0\n"
35090# append q1 "          $j3 JOIN t4 ON t4.z>0\n"
35091# append q1 " WHERE t1.b $op1 t2.b AND t1.d $op3 t4.d\n"
35092# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35093#
35094# echo "\\qecho " "do_execsql_test joinB-$n \{"
35095# echo "\\qecho X  " $q1
35096# echo "\\qecho " "\} \{"
35097# puts $q1
35098# echo "\\qecho " "\}"
35099#
35100# if {$j1!="FULL"} {
35101#   incr n
35102#   set q1 ""
35103#   append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35104#   append q1 "  FROM t1 $j1 JOIN t2 ON t1.b IN (t2.b,-2,-3) AND t2.x>0\n"
35105#   append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
35106#   append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
35107#   append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35108#
35109#   echo "\\qecho " "do_execsql_test joinB-$n \{"
35110#   echo "\\qecho X  " $q1
35111#   echo "\\qecho " "\} \{"
35112#   puts $q1
35113#   echo "\\qecho " "\}"
35114# }
35115#
35116# if {$j2!="FULL"} {
35117#   incr n
35118#   set q1 ""
35119#   append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
35120#   append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
35121#   append q1 "          $j2 JOIN t3 ON t1.c IN (-4,t3.c,-5) AND t3.y>0\n"
35122#   append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
35123#   append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
35124#
35125#   echo "\\qecho " "do_execsql_test joinB-$n \{"
35126#   echo "\\qecho X  " $q1
35127#   echo "\\qecho " "\} \{"
35128#   puts $q1
35129#   echo "\\qecho " "\}"
35130# }
35131#     }
35132#   }
35133# }
35134#
35135