xref: /sqlite-3.40.0/test/joinD.test (revision 3b52f802)
1# 2022-05-04
2#
3# The author disclaims copyright to this source code.  In place of
4# a legal notice, here is a blessing:
5#
6#    May you do good and not evil.
7#    May you find forgiveness for yourself and forgive others.
8#    May you share freely, never taking more than you give.
9#
10#***********************************************************************
11#
12# This file implements tests for JOINs that use Bloom filters.
13#
14# The test case output is all generated by PostgreSQL 14.  This test module
15# was created as follows:
16#
17#   1.   Run a TCL script (included at the bottom of this file) that
18#        generates an input script for "psql" that will run man
19#        diverse tests on joins.
20#
21#   2.   Run the script from step (1) through psql and collect the
22#        output.
23#
24#   3.   Make a few minor global search-and-replace operations to convert
25#        the psql output into a form suitable for this test module.
26#
27#   4.   Add this header, and the script content at the footer.
28#
29set testdir [file dirname $argv0]
30source $testdir/tester.tcl
31db nullvalue -
32db eval {
33  CREATE TABLE t1(a INT, b INT, c INT, d INT);
34  WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
35    INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
36  CREATE TABLE t2(b INT, x INT);
37  INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
38  CREATE INDEX t2b ON t2(b);
39  CREATE TABLE t3(c INT, y INT);
40  INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
41  CREATE INDEX t3c ON t3(c);
42  CREATE TABLE t4(d INT, z INT);
43  INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
44  CREATE INDEX t4d ON t4(d);
45  INSERT INTO t1(a,b,c,d) VALUES
46    (96,NULL,296,396),
47    (97,197,NULL,397),
48    (98,198,298,NULL),
49    (99,NULL,NULL,NULL);
50  ANALYZE;
51}
52do_execsql_test joinD-1 {
53  SELECT t1.*, t2.*, t3.*, t4.*
54  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
55  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
56  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
57  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
58} {
59  30 130 230 330 130 30 230 30 330 30
60  60 160 260 360 160 60 260 60 360 60
61  90 190 290 390 190 90 290 90 390 90
62}
63do_execsql_test joinD-2 {
64  SELECT t1.*, t2.*, t3.*, t4.*
65  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
66  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
67  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
68  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
69} {
70   6 106 206 306 106  6 206  6   -  -
71  12 112 212 312 112 12 212 12   -  -
72  18 118 218 318 118 18 218 18   -  -
73  24 124 224 324 124 24 224 24   -  -
74  30 130 230 330 130 30 230 30 330 30
75  36 136 236 336 136 36 236 36   -  -
76  42 142 242 342 142 42 242 42   -  -
77  48 148 248 348 148 48 248 48   -  -
78  54 154 254 354 154 54 254 54   -  -
79  60 160 260 360 160 60 260 60 360 60
80  66 166 266 366 166 66 266 66   -  -
81  72 172 272 372 172 72 272 72   -  -
82  78 178 278 378 178 78 278 78   -  -
83  84 184 284 384 184 84 284 84   -  -
84  90 190 290 390 190 90 290 90 390 90
85}
86do_execsql_test joinD-3 {
87  SELECT t1.*, t2.*, t3.*, t4.*
88  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
89  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
90  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
91  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
92} {
93  30 130 230 330 130 30 230 30 330 30
94  60 160 260 360 160 60 260 60 360 60
95  90 190 290 390 190 90 290 90 390 90
96   -   -   -   -   -  -   -  - 300  0
97   -   -   -   -   -  -   -  - 305  5
98   -   -   -   -   -  -   -  - 310 10
99   -   -   -   -   -  -   -  - 315 15
100   -   -   -   -   -  -   -  - 320 20
101   -   -   -   -   -  -   -  - 325 25
102   -   -   -   -   -  -   -  - 335 35
103   -   -   -   -   -  -   -  - 340 40
104   -   -   -   -   -  -   -  - 345 45
105   -   -   -   -   -  -   -  - 350 50
106   -   -   -   -   -  -   -  - 355 55
107   -   -   -   -   -  -   -  - 365 65
108   -   -   -   -   -  -   -  - 370 70
109   -   -   -   -   -  -   -  - 375 75
110   -   -   -   -   -  -   -  - 380 80
111   -   -   -   -   -  -   -  - 385 85
112   -   -   -   -   -  -   -  - 395 95
113}
114do_execsql_test joinD-4 {
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 AND t3.y>0
118  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
119  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
120} {
121   6 106 206 306 106  6 206  6   -  -
122  12 112 212 312 112 12 212 12   -  -
123  18 118 218 318 118 18 218 18   -  -
124  24 124 224 324 124 24 224 24   -  -
125  30 130 230 330 130 30 230 30 330 30
126  36 136 236 336 136 36 236 36   -  -
127  42 142 242 342 142 42 242 42   -  -
128  48 148 248 348 148 48 248 48   -  -
129  54 154 254 354 154 54 254 54   -  -
130  60 160 260 360 160 60 260 60 360 60
131  66 166 266 366 166 66 266 66   -  -
132  72 172 272 372 172 72 272 72   -  -
133  78 178 278 378 178 78 278 78   -  -
134  84 184 284 384 184 84 284 84   -  -
135  90 190 290 390 190 90 290 90 390 90
136   -   -   -   -   -  -   -  - 300  0
137   -   -   -   -   -  -   -  - 305  5
138   -   -   -   -   -  -   -  - 310 10
139   -   -   -   -   -  -   -  - 315 15
140   -   -   -   -   -  -   -  - 320 20
141   -   -   -   -   -  -   -  - 325 25
142   -   -   -   -   -  -   -  - 335 35
143   -   -   -   -   -  -   -  - 340 40
144   -   -   -   -   -  -   -  - 345 45
145   -   -   -   -   -  -   -  - 350 50
146   -   -   -   -   -  -   -  - 355 55
147   -   -   -   -   -  -   -  - 365 65
148   -   -   -   -   -  -   -  - 370 70
149   -   -   -   -   -  -   -  - 375 75
150   -   -   -   -   -  -   -  - 380 80
151   -   -   -   -   -  -   -  - 385 85
152   -   -   -   -   -  -   -  - 395 95
153}
154do_execsql_test joinD-5 {
155  SELECT t1.*, t2.*, t3.*, t4.*
156  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
157  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
158  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
159  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
160} {
161  10 110 210 310 110 10   -  - 310 10
162  20 120 220 320 120 20   -  - 320 20
163  30 130 230 330 130 30 230 30 330 30
164  40 140 240 340 140 40   -  - 340 40
165  50 150 250 350 150 50   -  - 350 50
166  60 160 260 360 160 60 260 60 360 60
167  70 170 270 370 170 70   -  - 370 70
168  80 180 280 380 180 80   -  - 380 80
169  90 190 290 390 190 90 290 90 390 90
170}
171do_execsql_test joinD-6 {
172  SELECT t1.*, t2.*, t3.*, t4.*
173  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
174  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
175  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
176  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
177} {
178   2 102 202 302 102  2   -  -   -  -
179   4 104 204 304 104  4   -  -   -  -
180   6 106 206 306 106  6 206  6   -  -
181   8 108 208 308 108  8   -  -   -  -
182  10 110 210 310 110 10   -  - 310 10
183  12 112 212 312 112 12 212 12   -  -
184  14 114 214 314 114 14   -  -   -  -
185  16 116 216 316 116 16   -  -   -  -
186  18 118 218 318 118 18 218 18   -  -
187  20 120 220 320 120 20   -  - 320 20
188  22 122 222 322 122 22   -  -   -  -
189  24 124 224 324 124 24 224 24   -  -
190  26 126 226 326 126 26   -  -   -  -
191  28 128 228 328 128 28   -  -   -  -
192  30 130 230 330 130 30 230 30 330 30
193  32 132 232 332 132 32   -  -   -  -
194  34 134 234 334 134 34   -  -   -  -
195  36 136 236 336 136 36 236 36   -  -
196  38 138 238 338 138 38   -  -   -  -
197  40 140 240 340 140 40   -  - 340 40
198  42 142 242 342 142 42 242 42   -  -
199  44 144 244 344 144 44   -  -   -  -
200  46 146 246 346 146 46   -  -   -  -
201  48 148 248 348 148 48 248 48   -  -
202  50 150 250 350 150 50   -  - 350 50
203  52 152 252 352 152 52   -  -   -  -
204  54 154 254 354 154 54 254 54   -  -
205  56 156 256 356 156 56   -  -   -  -
206  58 158 258 358 158 58   -  -   -  -
207  60 160 260 360 160 60 260 60 360 60
208  62 162 262 362 162 62   -  -   -  -
209  64 164 264 364 164 64   -  -   -  -
210  66 166 266 366 166 66 266 66   -  -
211  68 168 268 368 168 68   -  -   -  -
212  70 170 270 370 170 70   -  - 370 70
213  72 172 272 372 172 72 272 72   -  -
214  74 174 274 374 174 74   -  -   -  -
215  76 176 276 376 176 76   -  -   -  -
216  78 178 278 378 178 78 278 78   -  -
217  80 180 280 380 180 80   -  - 380 80
218  82 182 282 382 182 82   -  -   -  -
219  84 184 284 384 184 84 284 84   -  -
220  86 186 286 386 186 86   -  -   -  -
221  88 188 288 388 188 88   -  -   -  -
222  90 190 290 390 190 90 290 90 390 90
223  92 192 292 392 192 92   -  -   -  -
224  94 194 294 394 194 94   -  -   -  -
225}
226do_execsql_test joinD-7 {
227  SELECT t1.*, t2.*, t3.*, t4.*
228  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
229  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
230  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
231  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
232} {
233  10 110 210 310 110 10   -  - 310 10
234  20 120 220 320 120 20   -  - 320 20
235  30 130 230 330 130 30 230 30 330 30
236  40 140 240 340 140 40   -  - 340 40
237  50 150 250 350 150 50   -  - 350 50
238  60 160 260 360 160 60 260 60 360 60
239  70 170 270 370 170 70   -  - 370 70
240  80 180 280 380 180 80   -  - 380 80
241  90 190 290 390 190 90 290 90 390 90
242   -   -   -   -   -  -   -  - 300  0
243   -   -   -   -   -  -   -  - 305  5
244   -   -   -   -   -  -   -  - 315 15
245   -   -   -   -   -  -   -  - 325 25
246   -   -   -   -   -  -   -  - 335 35
247   -   -   -   -   -  -   -  - 345 45
248   -   -   -   -   -  -   -  - 355 55
249   -   -   -   -   -  -   -  - 365 65
250   -   -   -   -   -  -   -  - 375 75
251   -   -   -   -   -  -   -  - 385 85
252   -   -   -   -   -  -   -  - 395 95
253}
254do_execsql_test joinD-8 {
255  SELECT t1.*, t2.*, t3.*, t4.*
256  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
257  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
258  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
259  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
260} {
261   2 102 202 302 102  2   -  -   -  -
262   4 104 204 304 104  4   -  -   -  -
263   6 106 206 306 106  6 206  6   -  -
264   8 108 208 308 108  8   -  -   -  -
265  10 110 210 310 110 10   -  - 310 10
266  12 112 212 312 112 12 212 12   -  -
267  14 114 214 314 114 14   -  -   -  -
268  16 116 216 316 116 16   -  -   -  -
269  18 118 218 318 118 18 218 18   -  -
270  20 120 220 320 120 20   -  - 320 20
271  22 122 222 322 122 22   -  -   -  -
272  24 124 224 324 124 24 224 24   -  -
273  26 126 226 326 126 26   -  -   -  -
274  28 128 228 328 128 28   -  -   -  -
275  30 130 230 330 130 30 230 30 330 30
276  32 132 232 332 132 32   -  -   -  -
277  34 134 234 334 134 34   -  -   -  -
278  36 136 236 336 136 36 236 36   -  -
279  38 138 238 338 138 38   -  -   -  -
280  40 140 240 340 140 40   -  - 340 40
281  42 142 242 342 142 42 242 42   -  -
282  44 144 244 344 144 44   -  -   -  -
283  46 146 246 346 146 46   -  -   -  -
284  48 148 248 348 148 48 248 48   -  -
285  50 150 250 350 150 50   -  - 350 50
286  52 152 252 352 152 52   -  -   -  -
287  54 154 254 354 154 54 254 54   -  -
288  56 156 256 356 156 56   -  -   -  -
289  58 158 258 358 158 58   -  -   -  -
290  60 160 260 360 160 60 260 60 360 60
291  62 162 262 362 162 62   -  -   -  -
292  64 164 264 364 164 64   -  -   -  -
293  66 166 266 366 166 66 266 66   -  -
294  68 168 268 368 168 68   -  -   -  -
295  70 170 270 370 170 70   -  - 370 70
296  72 172 272 372 172 72 272 72   -  -
297  74 174 274 374 174 74   -  -   -  -
298  76 176 276 376 176 76   -  -   -  -
299  78 178 278 378 178 78 278 78   -  -
300  80 180 280 380 180 80   -  - 380 80
301  82 182 282 382 182 82   -  -   -  -
302  84 184 284 384 184 84 284 84   -  -
303  86 186 286 386 186 86   -  -   -  -
304  88 188 288 388 188 88   -  -   -  -
305  90 190 290 390 190 90 290 90 390 90
306  92 192 292 392 192 92   -  -   -  -
307  94 194 294 394 194 94   -  -   -  -
308   -   -   -   -   -  -   -  - 300  0
309   -   -   -   -   -  -   -  - 305  5
310   -   -   -   -   -  -   -  - 315 15
311   -   -   -   -   -  -   -  - 325 25
312   -   -   -   -   -  -   -  - 335 35
313   -   -   -   -   -  -   -  - 345 45
314   -   -   -   -   -  -   -  - 355 55
315   -   -   -   -   -  -   -  - 365 65
316   -   -   -   -   -  -   -  - 375 75
317   -   -   -   -   -  -   -  - 385 85
318   -   -   -   -   -  -   -  - 395 95
319}
320do_execsql_test joinD-9 {
321  SELECT t1.*, t2.*, t3.*, t4.*
322  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
323  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
324  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
325  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
326} {
327  30 130 230 330 130 30 230 30 330 30
328  60 160 260 360 160 60 260 60 360 60
329  90 190 290 390 190 90 290 90 390 90
330}
331do_execsql_test joinD-10 {
332  SELECT t1.*, t2.*, t3.*, t4.*
333  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
334  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
335  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
336  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
337} {
338   6 106 206 306 106  6 206  6   -  -
339  12 112 212 312 112 12 212 12   -  -
340  18 118 218 318 118 18 218 18   -  -
341  24 124 224 324 124 24 224 24   -  -
342  30 130 230 330 130 30 230 30 330 30
343  36 136 236 336 136 36 236 36   -  -
344  42 142 242 342 142 42 242 42   -  -
345  48 148 248 348 148 48 248 48   -  -
346  54 154 254 354 154 54 254 54   -  -
347  60 160 260 360 160 60 260 60 360 60
348  66 166 266 366 166 66 266 66   -  -
349  72 172 272 372 172 72 272 72   -  -
350  78 178 278 378 178 78 278 78   -  -
351  84 184 284 384 184 84 284 84   -  -
352  90 190 290 390 190 90 290 90 390 90
353   -   -   -   -   -  - 200  0   -  -
354   -   -   -   -   -  - 203  3   -  -
355   -   -   -   -   -  - 209  9   -  -
356   -   -   -   -   -  - 215 15   -  -
357   -   -   -   -   -  - 221 21   -  -
358   -   -   -   -   -  - 227 27   -  -
359   -   -   -   -   -  - 233 33   -  -
360   -   -   -   -   -  - 239 39   -  -
361   -   -   -   -   -  - 245 45   -  -
362   -   -   -   -   -  - 251 51   -  -
363   -   -   -   -   -  - 257 57   -  -
364   -   -   -   -   -  - 263 63   -  -
365   -   -   -   -   -  - 269 69   -  -
366   -   -   -   -   -  - 275 75   -  -
367   -   -   -   -   -  - 281 81   -  -
368   -   -   -   -   -  - 287 87   -  -
369   -   -   -   -   -  - 293 93   -  -
370}
371do_execsql_test joinD-11 {
372  SELECT t1.*, t2.*, t3.*, t4.*
373  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
374  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
375  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
376  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
377} {
378  30 130 230 330 130 30 230 30 330 30
379  60 160 260 360 160 60 260 60 360 60
380  90 190 290 390 190 90 290 90 390 90
381   -   -   -   -   -  -   -  - 300  0
382   -   -   -   -   -  -   -  - 305  5
383   -   -   -   -   -  -   -  - 310 10
384   -   -   -   -   -  -   -  - 315 15
385   -   -   -   -   -  -   -  - 320 20
386   -   -   -   -   -  -   -  - 325 25
387   -   -   -   -   -  -   -  - 335 35
388   -   -   -   -   -  -   -  - 340 40
389   -   -   -   -   -  -   -  - 345 45
390   -   -   -   -   -  -   -  - 350 50
391   -   -   -   -   -  -   -  - 355 55
392   -   -   -   -   -  -   -  - 365 65
393   -   -   -   -   -  -   -  - 370 70
394   -   -   -   -   -  -   -  - 375 75
395   -   -   -   -   -  -   -  - 380 80
396   -   -   -   -   -  -   -  - 385 85
397   -   -   -   -   -  -   -  - 395 95
398}
399do_execsql_test joinD-12 {
400  SELECT t1.*, t2.*, t3.*, t4.*
401  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
402  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
403  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
404  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
405} {
406   6 106 206 306 106  6 206  6   -  -
407  12 112 212 312 112 12 212 12   -  -
408  18 118 218 318 118 18 218 18   -  -
409  24 124 224 324 124 24 224 24   -  -
410  30 130 230 330 130 30 230 30 330 30
411  36 136 236 336 136 36 236 36   -  -
412  42 142 242 342 142 42 242 42   -  -
413  48 148 248 348 148 48 248 48   -  -
414  54 154 254 354 154 54 254 54   -  -
415  60 160 260 360 160 60 260 60 360 60
416  66 166 266 366 166 66 266 66   -  -
417  72 172 272 372 172 72 272 72   -  -
418  78 178 278 378 178 78 278 78   -  -
419  84 184 284 384 184 84 284 84   -  -
420  90 190 290 390 190 90 290 90 390 90
421   -   -   -   -   -  - 200  0   -  -
422   -   -   -   -   -  - 203  3   -  -
423   -   -   -   -   -  - 209  9   -  -
424   -   -   -   -   -  - 215 15   -  -
425   -   -   -   -   -  - 221 21   -  -
426   -   -   -   -   -  - 227 27   -  -
427   -   -   -   -   -  - 233 33   -  -
428   -   -   -   -   -  - 239 39   -  -
429   -   -   -   -   -  - 245 45   -  -
430   -   -   -   -   -  - 251 51   -  -
431   -   -   -   -   -  - 257 57   -  -
432   -   -   -   -   -  - 263 63   -  -
433   -   -   -   -   -  - 269 69   -  -
434   -   -   -   -   -  - 275 75   -  -
435   -   -   -   -   -  - 281 81   -  -
436   -   -   -   -   -  - 287 87   -  -
437   -   -   -   -   -  - 293 93   -  -
438   -   -   -   -   -  -   -  - 300  0
439   -   -   -   -   -  -   -  - 305  5
440   -   -   -   -   -  -   -  - 310 10
441   -   -   -   -   -  -   -  - 315 15
442   -   -   -   -   -  -   -  - 320 20
443   -   -   -   -   -  -   -  - 325 25
444   -   -   -   -   -  -   -  - 335 35
445   -   -   -   -   -  -   -  - 340 40
446   -   -   -   -   -  -   -  - 345 45
447   -   -   -   -   -  -   -  - 350 50
448   -   -   -   -   -  -   -  - 355 55
449   -   -   -   -   -  -   -  - 365 65
450   -   -   -   -   -  -   -  - 370 70
451   -   -   -   -   -  -   -  - 375 75
452   -   -   -   -   -  -   -  - 380 80
453   -   -   -   -   -  -   -  - 385 85
454   -   -   -   -   -  -   -  - 395 95
455}
456do_execsql_test joinD-13 {
457  SELECT t1.*, t2.*, t3.*, t4.*
458  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
459  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
460  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
461  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
462} {
463  10 110 210 310 110 10   -  - 310 10
464  20 120 220 320 120 20   -  - 320 20
465  30 130 230 330 130 30 230 30 330 30
466  40 140 240 340 140 40   -  - 340 40
467  50 150 250 350 150 50   -  - 350 50
468  60 160 260 360 160 60 260 60 360 60
469  70 170 270 370 170 70   -  - 370 70
470  80 180 280 380 180 80   -  - 380 80
471  90 190 290 390 190 90 290 90 390 90
472}
473do_execsql_test joinD-14 {
474  SELECT t1.*, t2.*, t3.*, t4.*
475  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
476  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
477  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
478  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
479} {
480   2 102 202 302 102  2   -  -   -  -
481   4 104 204 304 104  4   -  -   -  -
482   6 106 206 306 106  6 206  6   -  -
483   8 108 208 308 108  8   -  -   -  -
484  10 110 210 310 110 10   -  - 310 10
485  12 112 212 312 112 12 212 12   -  -
486  14 114 214 314 114 14   -  -   -  -
487  16 116 216 316 116 16   -  -   -  -
488  18 118 218 318 118 18 218 18   -  -
489  20 120 220 320 120 20   -  - 320 20
490  22 122 222 322 122 22   -  -   -  -
491  24 124 224 324 124 24 224 24   -  -
492  26 126 226 326 126 26   -  -   -  -
493  28 128 228 328 128 28   -  -   -  -
494  30 130 230 330 130 30 230 30 330 30
495  32 132 232 332 132 32   -  -   -  -
496  34 134 234 334 134 34   -  -   -  -
497  36 136 236 336 136 36 236 36   -  -
498  38 138 238 338 138 38   -  -   -  -
499  40 140 240 340 140 40   -  - 340 40
500  42 142 242 342 142 42 242 42   -  -
501  44 144 244 344 144 44   -  -   -  -
502  46 146 246 346 146 46   -  -   -  -
503  48 148 248 348 148 48 248 48   -  -
504  50 150 250 350 150 50   -  - 350 50
505  52 152 252 352 152 52   -  -   -  -
506  54 154 254 354 154 54 254 54   -  -
507  56 156 256 356 156 56   -  -   -  -
508  58 158 258 358 158 58   -  -   -  -
509  60 160 260 360 160 60 260 60 360 60
510  62 162 262 362 162 62   -  -   -  -
511  64 164 264 364 164 64   -  -   -  -
512  66 166 266 366 166 66 266 66   -  -
513  68 168 268 368 168 68   -  -   -  -
514  70 170 270 370 170 70   -  - 370 70
515  72 172 272 372 172 72 272 72   -  -
516  74 174 274 374 174 74   -  -   -  -
517  76 176 276 376 176 76   -  -   -  -
518  78 178 278 378 178 78 278 78   -  -
519  80 180 280 380 180 80   -  - 380 80
520  82 182 282 382 182 82   -  -   -  -
521  84 184 284 384 184 84 284 84   -  -
522  86 186 286 386 186 86   -  -   -  -
523  88 188 288 388 188 88   -  -   -  -
524  90 190 290 390 190 90 290 90 390 90
525  92 192 292 392 192 92   -  -   -  -
526  94 194 294 394 194 94   -  -   -  -
527   -   -   -   -   -  - 200  0   -  -
528   -   -   -   -   -  - 203  3   -  -
529   -   -   -   -   -  - 209  9   -  -
530   -   -   -   -   -  - 215 15   -  -
531   -   -   -   -   -  - 221 21   -  -
532   -   -   -   -   -  - 227 27   -  -
533   -   -   -   -   -  - 233 33   -  -
534   -   -   -   -   -  - 239 39   -  -
535   -   -   -   -   -  - 245 45   -  -
536   -   -   -   -   -  - 251 51   -  -
537   -   -   -   -   -  - 257 57   -  -
538   -   -   -   -   -  - 263 63   -  -
539   -   -   -   -   -  - 269 69   -  -
540   -   -   -   -   -  - 275 75   -  -
541   -   -   -   -   -  - 281 81   -  -
542   -   -   -   -   -  - 287 87   -  -
543   -   -   -   -   -  - 293 93   -  -
544}
545do_execsql_test joinD-15 {
546  SELECT t1.*, t2.*, t3.*, t4.*
547  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
548  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
549  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
550  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
551} {
552  10 110 210 310 110 10   -  - 310 10
553  20 120 220 320 120 20   -  - 320 20
554  30 130 230 330 130 30 230 30 330 30
555  40 140 240 340 140 40   -  - 340 40
556  50 150 250 350 150 50   -  - 350 50
557  60 160 260 360 160 60 260 60 360 60
558  70 170 270 370 170 70   -  - 370 70
559  80 180 280 380 180 80   -  - 380 80
560  90 190 290 390 190 90 290 90 390 90
561   -   -   -   -   -  -   -  - 300  0
562   -   -   -   -   -  -   -  - 305  5
563   -   -   -   -   -  -   -  - 315 15
564   -   -   -   -   -  -   -  - 325 25
565   -   -   -   -   -  -   -  - 335 35
566   -   -   -   -   -  -   -  - 345 45
567   -   -   -   -   -  -   -  - 355 55
568   -   -   -   -   -  -   -  - 365 65
569   -   -   -   -   -  -   -  - 375 75
570   -   -   -   -   -  -   -  - 385 85
571   -   -   -   -   -  -   -  - 395 95
572}
573do_execsql_test joinD-16 {
574  SELECT t1.*, t2.*, t3.*, t4.*
575  FROM t1 INNER JOIN t2 ON t1.b=t2.b AND t2.x>0
576  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
577  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
578  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
579} {
580   2 102 202 302 102  2   -  -   -  -
581   4 104 204 304 104  4   -  -   -  -
582   6 106 206 306 106  6 206  6   -  -
583   8 108 208 308 108  8   -  -   -  -
584  10 110 210 310 110 10   -  - 310 10
585  12 112 212 312 112 12 212 12   -  -
586  14 114 214 314 114 14   -  -   -  -
587  16 116 216 316 116 16   -  -   -  -
588  18 118 218 318 118 18 218 18   -  -
589  20 120 220 320 120 20   -  - 320 20
590  22 122 222 322 122 22   -  -   -  -
591  24 124 224 324 124 24 224 24   -  -
592  26 126 226 326 126 26   -  -   -  -
593  28 128 228 328 128 28   -  -   -  -
594  30 130 230 330 130 30 230 30 330 30
595  32 132 232 332 132 32   -  -   -  -
596  34 134 234 334 134 34   -  -   -  -
597  36 136 236 336 136 36 236 36   -  -
598  38 138 238 338 138 38   -  -   -  -
599  40 140 240 340 140 40   -  - 340 40
600  42 142 242 342 142 42 242 42   -  -
601  44 144 244 344 144 44   -  -   -  -
602  46 146 246 346 146 46   -  -   -  -
603  48 148 248 348 148 48 248 48   -  -
604  50 150 250 350 150 50   -  - 350 50
605  52 152 252 352 152 52   -  -   -  -
606  54 154 254 354 154 54 254 54   -  -
607  56 156 256 356 156 56   -  -   -  -
608  58 158 258 358 158 58   -  -   -  -
609  60 160 260 360 160 60 260 60 360 60
610  62 162 262 362 162 62   -  -   -  -
611  64 164 264 364 164 64   -  -   -  -
612  66 166 266 366 166 66 266 66   -  -
613  68 168 268 368 168 68   -  -   -  -
614  70 170 270 370 170 70   -  - 370 70
615  72 172 272 372 172 72 272 72   -  -
616  74 174 274 374 174 74   -  -   -  -
617  76 176 276 376 176 76   -  -   -  -
618  78 178 278 378 178 78 278 78   -  -
619  80 180 280 380 180 80   -  - 380 80
620  82 182 282 382 182 82   -  -   -  -
621  84 184 284 384 184 84 284 84   -  -
622  86 186 286 386 186 86   -  -   -  -
623  88 188 288 388 188 88   -  -   -  -
624  90 190 290 390 190 90 290 90 390 90
625  92 192 292 392 192 92   -  -   -  -
626  94 194 294 394 194 94   -  -   -  -
627   -   -   -   -   -  - 200  0   -  -
628   -   -   -   -   -  - 203  3   -  -
629   -   -   -   -   -  - 209  9   -  -
630   -   -   -   -   -  - 215 15   -  -
631   -   -   -   -   -  - 221 21   -  -
632   -   -   -   -   -  - 227 27   -  -
633   -   -   -   -   -  - 233 33   -  -
634   -   -   -   -   -  - 239 39   -  -
635   -   -   -   -   -  - 245 45   -  -
636   -   -   -   -   -  - 251 51   -  -
637   -   -   -   -   -  - 257 57   -  -
638   -   -   -   -   -  - 263 63   -  -
639   -   -   -   -   -  - 269 69   -  -
640   -   -   -   -   -  - 275 75   -  -
641   -   -   -   -   -  - 281 81   -  -
642   -   -   -   -   -  - 287 87   -  -
643   -   -   -   -   -  - 293 93   -  -
644   -   -   -   -   -  -   -  - 300  0
645   -   -   -   -   -  -   -  - 305  5
646   -   -   -   -   -  -   -  - 315 15
647   -   -   -   -   -  -   -  - 325 25
648   -   -   -   -   -  -   -  - 335 35
649   -   -   -   -   -  -   -  - 345 45
650   -   -   -   -   -  -   -  - 355 55
651   -   -   -   -   -  -   -  - 365 65
652   -   -   -   -   -  -   -  - 375 75
653   -   -   -   -   -  -   -  - 385 85
654   -   -   -   -   -  -   -  - 395 95
655}
656do_execsql_test joinD-17 {
657  SELECT t1.*, t2.*, t3.*, t4.*
658  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
659  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
660  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
661  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
662} {
663  15 115 215 315   -  - 215 15 315 15
664  30 130 230 330 130 30 230 30 330 30
665  45 145 245 345   -  - 245 45 345 45
666  60 160 260 360 160 60 260 60 360 60
667  75 175 275 375   -  - 275 75 375 75
668  90 190 290 390 190 90 290 90 390 90
669}
670do_execsql_test joinD-18 {
671  SELECT t1.*, t2.*, t3.*, t4.*
672  FROM t1 LEFT 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  LEFT 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   3 103 203 303   -  - 203  3   -  -
678   6 106 206 306 106  6 206  6   -  -
679   9 109 209 309   -  - 209  9   -  -
680  12 112 212 312 112 12 212 12   -  -
681  15 115 215 315   -  - 215 15 315 15
682  18 118 218 318 118 18 218 18   -  -
683  21 121 221 321   -  - 221 21   -  -
684  24 124 224 324 124 24 224 24   -  -
685  27 127 227 327   -  - 227 27   -  -
686  30 130 230 330 130 30 230 30 330 30
687  33 133 233 333   -  - 233 33   -  -
688  36 136 236 336 136 36 236 36   -  -
689  39 139 239 339   -  - 239 39   -  -
690  42 142 242 342 142 42 242 42   -  -
691  45 145 245 345   -  - 245 45 345 45
692  48 148 248 348 148 48 248 48   -  -
693  51 151 251 351   -  - 251 51   -  -
694  54 154 254 354 154 54 254 54   -  -
695  57 157 257 357   -  - 257 57   -  -
696  60 160 260 360 160 60 260 60 360 60
697  63 163 263 363   -  - 263 63   -  -
698  66 166 266 366 166 66 266 66   -  -
699  69 169 269 369   -  - 269 69   -  -
700  72 172 272 372 172 72 272 72   -  -
701  75 175 275 375   -  - 275 75 375 75
702  78 178 278 378 178 78 278 78   -  -
703  81 181 281 381   -  - 281 81   -  -
704  84 184 284 384 184 84 284 84   -  -
705  87 187 287 387   -  - 287 87   -  -
706  90 190 290 390 190 90 290 90 390 90
707  93 193 293 393   -  - 293 93   -  -
708}
709do_execsql_test joinD-19 {
710  SELECT t1.*, t2.*, t3.*, t4.*
711  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
712  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
713  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
714  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
715} {
716  15 115 215 315   -  - 215 15 315 15
717  30 130 230 330 130 30 230 30 330 30
718  45 145 245 345   -  - 245 45 345 45
719  60 160 260 360 160 60 260 60 360 60
720  75 175 275 375   -  - 275 75 375 75
721  90 190 290 390 190 90 290 90 390 90
722   -   -   -   -   -  -   -  - 300  0
723   -   -   -   -   -  -   -  - 305  5
724   -   -   -   -   -  -   -  - 310 10
725   -   -   -   -   -  -   -  - 320 20
726   -   -   -   -   -  -   -  - 325 25
727   -   -   -   -   -  -   -  - 335 35
728   -   -   -   -   -  -   -  - 340 40
729   -   -   -   -   -  -   -  - 350 50
730   -   -   -   -   -  -   -  - 355 55
731   -   -   -   -   -  -   -  - 365 65
732   -   -   -   -   -  -   -  - 370 70
733   -   -   -   -   -  -   -  - 380 80
734   -   -   -   -   -  -   -  - 385 85
735   -   -   -   -   -  -   -  - 395 95
736}
737do_execsql_test joinD-20 {
738  SELECT t1.*, t2.*, t3.*, t4.*
739  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
740  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
741  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
742  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
743} {
744   3 103 203 303   -  - 203  3   -  -
745   6 106 206 306 106  6 206  6   -  -
746   9 109 209 309   -  - 209  9   -  -
747  12 112 212 312 112 12 212 12   -  -
748  15 115 215 315   -  - 215 15 315 15
749  18 118 218 318 118 18 218 18   -  -
750  21 121 221 321   -  - 221 21   -  -
751  24 124 224 324 124 24 224 24   -  -
752  27 127 227 327   -  - 227 27   -  -
753  30 130 230 330 130 30 230 30 330 30
754  33 133 233 333   -  - 233 33   -  -
755  36 136 236 336 136 36 236 36   -  -
756  39 139 239 339   -  - 239 39   -  -
757  42 142 242 342 142 42 242 42   -  -
758  45 145 245 345   -  - 245 45 345 45
759  48 148 248 348 148 48 248 48   -  -
760  51 151 251 351   -  - 251 51   -  -
761  54 154 254 354 154 54 254 54   -  -
762  57 157 257 357   -  - 257 57   -  -
763  60 160 260 360 160 60 260 60 360 60
764  63 163 263 363   -  - 263 63   -  -
765  66 166 266 366 166 66 266 66   -  -
766  69 169 269 369   -  - 269 69   -  -
767  72 172 272 372 172 72 272 72   -  -
768  75 175 275 375   -  - 275 75 375 75
769  78 178 278 378 178 78 278 78   -  -
770  81 181 281 381   -  - 281 81   -  -
771  84 184 284 384 184 84 284 84   -  -
772  87 187 287 387   -  - 287 87   -  -
773  90 190 290 390 190 90 290 90 390 90
774  93 193 293 393   -  - 293 93   -  -
775   -   -   -   -   -  -   -  - 300  0
776   -   -   -   -   -  -   -  - 305  5
777   -   -   -   -   -  -   -  - 310 10
778   -   -   -   -   -  -   -  - 320 20
779   -   -   -   -   -  -   -  - 325 25
780   -   -   -   -   -  -   -  - 335 35
781   -   -   -   -   -  -   -  - 340 40
782   -   -   -   -   -  -   -  - 350 50
783   -   -   -   -   -  -   -  - 355 55
784   -   -   -   -   -  -   -  - 365 65
785   -   -   -   -   -  -   -  - 370 70
786   -   -   -   -   -  -   -  - 380 80
787   -   -   -   -   -  -   -  - 385 85
788   -   -   -   -   -  -   -  - 395 95
789}
790do_execsql_test joinD-21 {
791  SELECT t1.*, t2.*, t3.*, t4.*
792  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
793  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
794  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
795  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
796} {
797   5 105 205 305   -  -   -  - 305  5
798  10 110 210 310 110 10   -  - 310 10
799  15 115 215 315   -  - 215 15 315 15
800  20 120 220 320 120 20   -  - 320 20
801  25 125 225 325   -  -   -  - 325 25
802  30 130 230 330 130 30 230 30 330 30
803  35 135 235 335   -  -   -  - 335 35
804  40 140 240 340 140 40   -  - 340 40
805  45 145 245 345   -  - 245 45 345 45
806  50 150 250 350 150 50   -  - 350 50
807  55 155 255 355   -  -   -  - 355 55
808  60 160 260 360 160 60 260 60 360 60
809  65 165 265 365   -  -   -  - 365 65
810  70 170 270 370 170 70   -  - 370 70
811  75 175 275 375   -  - 275 75 375 75
812  80 180 280 380 180 80   -  - 380 80
813  85 185 285 385   -  -   -  - 385 85
814  90 190 290 390 190 90 290 90 390 90
815  95 195 295 395   -  -   -  - 395 95
816}
817do_execsql_test joinD-22 {
818  SELECT t1.*, t2.*, t3.*, t4.*
819  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
820  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
821  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
822  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
823} {
824   0 100 200 300   -  -   -  -   -  -
825   1 101 201 301   -  -   -  -   -  -
826   2 102 202 302 102  2   -  -   -  -
827   3 103 203 303   -  - 203  3   -  -
828   4 104 204 304 104  4   -  -   -  -
829   5 105 205 305   -  -   -  - 305  5
830   6 106 206 306 106  6 206  6   -  -
831   7 107 207 307   -  -   -  -   -  -
832   8 108 208 308 108  8   -  -   -  -
833   9 109 209 309   -  - 209  9   -  -
834  10 110 210 310 110 10   -  - 310 10
835  11 111 211 311   -  -   -  -   -  -
836  12 112 212 312 112 12 212 12   -  -
837  13 113 213 313   -  -   -  -   -  -
838  14 114 214 314 114 14   -  -   -  -
839  15 115 215 315   -  - 215 15 315 15
840  16 116 216 316 116 16   -  -   -  -
841  17 117 217 317   -  -   -  -   -  -
842  18 118 218 318 118 18 218 18   -  -
843  19 119 219 319   -  -   -  -   -  -
844  20 120 220 320 120 20   -  - 320 20
845  21 121 221 321   -  - 221 21   -  -
846  22 122 222 322 122 22   -  -   -  -
847  23 123 223 323   -  -   -  -   -  -
848  24 124 224 324 124 24 224 24   -  -
849  25 125 225 325   -  -   -  - 325 25
850  26 126 226 326 126 26   -  -   -  -
851  27 127 227 327   -  - 227 27   -  -
852  28 128 228 328 128 28   -  -   -  -
853  29 129 229 329   -  -   -  -   -  -
854  30 130 230 330 130 30 230 30 330 30
855  31 131 231 331   -  -   -  -   -  -
856  32 132 232 332 132 32   -  -   -  -
857  33 133 233 333   -  - 233 33   -  -
858  34 134 234 334 134 34   -  -   -  -
859  35 135 235 335   -  -   -  - 335 35
860  36 136 236 336 136 36 236 36   -  -
861  37 137 237 337   -  -   -  -   -  -
862  38 138 238 338 138 38   -  -   -  -
863  39 139 239 339   -  - 239 39   -  -
864  40 140 240 340 140 40   -  - 340 40
865  41 141 241 341   -  -   -  -   -  -
866  42 142 242 342 142 42 242 42   -  -
867  43 143 243 343   -  -   -  -   -  -
868  44 144 244 344 144 44   -  -   -  -
869  45 145 245 345   -  - 245 45 345 45
870  46 146 246 346 146 46   -  -   -  -
871  47 147 247 347   -  -   -  -   -  -
872  48 148 248 348 148 48 248 48   -  -
873  49 149 249 349   -  -   -  -   -  -
874  50 150 250 350 150 50   -  - 350 50
875  51 151 251 351   -  - 251 51   -  -
876  52 152 252 352 152 52   -  -   -  -
877  53 153 253 353   -  -   -  -   -  -
878  54 154 254 354 154 54 254 54   -  -
879  55 155 255 355   -  -   -  - 355 55
880  56 156 256 356 156 56   -  -   -  -
881  57 157 257 357   -  - 257 57   -  -
882  58 158 258 358 158 58   -  -   -  -
883  59 159 259 359   -  -   -  -   -  -
884  60 160 260 360 160 60 260 60 360 60
885  61 161 261 361   -  -   -  -   -  -
886  62 162 262 362 162 62   -  -   -  -
887  63 163 263 363   -  - 263 63   -  -
888  64 164 264 364 164 64   -  -   -  -
889  65 165 265 365   -  -   -  - 365 65
890  66 166 266 366 166 66 266 66   -  -
891  67 167 267 367   -  -   -  -   -  -
892  68 168 268 368 168 68   -  -   -  -
893  69 169 269 369   -  - 269 69   -  -
894  70 170 270 370 170 70   -  - 370 70
895  71 171 271 371   -  -   -  -   -  -
896  72 172 272 372 172 72 272 72   -  -
897  73 173 273 373   -  -   -  -   -  -
898  74 174 274 374 174 74   -  -   -  -
899  75 175 275 375   -  - 275 75 375 75
900  76 176 276 376 176 76   -  -   -  -
901  77 177 277 377   -  -   -  -   -  -
902  78 178 278 378 178 78 278 78   -  -
903  79 179 279 379   -  -   -  -   -  -
904  80 180 280 380 180 80   -  - 380 80
905  81 181 281 381   -  - 281 81   -  -
906  82 182 282 382 182 82   -  -   -  -
907  83 183 283 383   -  -   -  -   -  -
908  84 184 284 384 184 84 284 84   -  -
909  85 185 285 385   -  -   -  - 385 85
910  86 186 286 386 186 86   -  -   -  -
911  87 187 287 387   -  - 287 87   -  -
912  88 188 288 388 188 88   -  -   -  -
913  89 189 289 389   -  -   -  -   -  -
914  90 190 290 390 190 90 290 90 390 90
915  91 191 291 391   -  -   -  -   -  -
916  92 192 292 392 192 92   -  -   -  -
917  93 193 293 393   -  - 293 93   -  -
918  94 194 294 394 194 94   -  -   -  -
919  95 195 295 395   -  -   -  - 395 95
920  96   - 296 396   -  -   -  -   -  -
921  97 197   - 397   -  -   -  -   -  -
922  98 198 298   -   -  -   -  -   -  -
923  99   -   -   -   -  -   -  -   -  -
924}
925do_execsql_test joinD-23 {
926  SELECT t1.*, t2.*, t3.*, t4.*
927  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
928  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
929  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
930  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
931} {
932   5 105 205 305   -  -   -  - 305  5
933  10 110 210 310 110 10   -  - 310 10
934  15 115 215 315   -  - 215 15 315 15
935  20 120 220 320 120 20   -  - 320 20
936  25 125 225 325   -  -   -  - 325 25
937  30 130 230 330 130 30 230 30 330 30
938  35 135 235 335   -  -   -  - 335 35
939  40 140 240 340 140 40   -  - 340 40
940  45 145 245 345   -  - 245 45 345 45
941  50 150 250 350 150 50   -  - 350 50
942  55 155 255 355   -  -   -  - 355 55
943  60 160 260 360 160 60 260 60 360 60
944  65 165 265 365   -  -   -  - 365 65
945  70 170 270 370 170 70   -  - 370 70
946  75 175 275 375   -  - 275 75 375 75
947  80 180 280 380 180 80   -  - 380 80
948  85 185 285 385   -  -   -  - 385 85
949  90 190 290 390 190 90 290 90 390 90
950  95 195 295 395   -  -   -  - 395 95
951   -   -   -   -   -  -   -  - 300  0
952}
953do_execsql_test joinD-24 {
954  SELECT t1.*, t2.*, t3.*, t4.*
955  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
956  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
957  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
958  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
959} {
960   0 100 200 300   -  -   -  -   -  -
961   1 101 201 301   -  -   -  -   -  -
962   2 102 202 302 102  2   -  -   -  -
963   3 103 203 303   -  - 203  3   -  -
964   4 104 204 304 104  4   -  -   -  -
965   5 105 205 305   -  -   -  - 305  5
966   6 106 206 306 106  6 206  6   -  -
967   7 107 207 307   -  -   -  -   -  -
968   8 108 208 308 108  8   -  -   -  -
969   9 109 209 309   -  - 209  9   -  -
970  10 110 210 310 110 10   -  - 310 10
971  11 111 211 311   -  -   -  -   -  -
972  12 112 212 312 112 12 212 12   -  -
973  13 113 213 313   -  -   -  -   -  -
974  14 114 214 314 114 14   -  -   -  -
975  15 115 215 315   -  - 215 15 315 15
976  16 116 216 316 116 16   -  -   -  -
977  17 117 217 317   -  -   -  -   -  -
978  18 118 218 318 118 18 218 18   -  -
979  19 119 219 319   -  -   -  -   -  -
980  20 120 220 320 120 20   -  - 320 20
981  21 121 221 321   -  - 221 21   -  -
982  22 122 222 322 122 22   -  -   -  -
983  23 123 223 323   -  -   -  -   -  -
984  24 124 224 324 124 24 224 24   -  -
985  25 125 225 325   -  -   -  - 325 25
986  26 126 226 326 126 26   -  -   -  -
987  27 127 227 327   -  - 227 27   -  -
988  28 128 228 328 128 28   -  -   -  -
989  29 129 229 329   -  -   -  -   -  -
990  30 130 230 330 130 30 230 30 330 30
991  31 131 231 331   -  -   -  -   -  -
992  32 132 232 332 132 32   -  -   -  -
993  33 133 233 333   -  - 233 33   -  -
994  34 134 234 334 134 34   -  -   -  -
995  35 135 235 335   -  -   -  - 335 35
996  36 136 236 336 136 36 236 36   -  -
997  37 137 237 337   -  -   -  -   -  -
998  38 138 238 338 138 38   -  -   -  -
999  39 139 239 339   -  - 239 39   -  -
1000  40 140 240 340 140 40   -  - 340 40
1001  41 141 241 341   -  -   -  -   -  -
1002  42 142 242 342 142 42 242 42   -  -
1003  43 143 243 343   -  -   -  -   -  -
1004  44 144 244 344 144 44   -  -   -  -
1005  45 145 245 345   -  - 245 45 345 45
1006  46 146 246 346 146 46   -  -   -  -
1007  47 147 247 347   -  -   -  -   -  -
1008  48 148 248 348 148 48 248 48   -  -
1009  49 149 249 349   -  -   -  -   -  -
1010  50 150 250 350 150 50   -  - 350 50
1011  51 151 251 351   -  - 251 51   -  -
1012  52 152 252 352 152 52   -  -   -  -
1013  53 153 253 353   -  -   -  -   -  -
1014  54 154 254 354 154 54 254 54   -  -
1015  55 155 255 355   -  -   -  - 355 55
1016  56 156 256 356 156 56   -  -   -  -
1017  57 157 257 357   -  - 257 57   -  -
1018  58 158 258 358 158 58   -  -   -  -
1019  59 159 259 359   -  -   -  -   -  -
1020  60 160 260 360 160 60 260 60 360 60
1021  61 161 261 361   -  -   -  -   -  -
1022  62 162 262 362 162 62   -  -   -  -
1023  63 163 263 363   -  - 263 63   -  -
1024  64 164 264 364 164 64   -  -   -  -
1025  65 165 265 365   -  -   -  - 365 65
1026  66 166 266 366 166 66 266 66   -  -
1027  67 167 267 367   -  -   -  -   -  -
1028  68 168 268 368 168 68   -  -   -  -
1029  69 169 269 369   -  - 269 69   -  -
1030  70 170 270 370 170 70   -  - 370 70
1031  71 171 271 371   -  -   -  -   -  -
1032  72 172 272 372 172 72 272 72   -  -
1033  73 173 273 373   -  -   -  -   -  -
1034  74 174 274 374 174 74   -  -   -  -
1035  75 175 275 375   -  - 275 75 375 75
1036  76 176 276 376 176 76   -  -   -  -
1037  77 177 277 377   -  -   -  -   -  -
1038  78 178 278 378 178 78 278 78   -  -
1039  79 179 279 379   -  -   -  -   -  -
1040  80 180 280 380 180 80   -  - 380 80
1041  81 181 281 381   -  - 281 81   -  -
1042  82 182 282 382 182 82   -  -   -  -
1043  83 183 283 383   -  -   -  -   -  -
1044  84 184 284 384 184 84 284 84   -  -
1045  85 185 285 385   -  -   -  - 385 85
1046  86 186 286 386 186 86   -  -   -  -
1047  87 187 287 387   -  - 287 87   -  -
1048  88 188 288 388 188 88   -  -   -  -
1049  89 189 289 389   -  -   -  -   -  -
1050  90 190 290 390 190 90 290 90 390 90
1051  91 191 291 391   -  -   -  -   -  -
1052  92 192 292 392 192 92   -  -   -  -
1053  93 193 293 393   -  - 293 93   -  -
1054  94 194 294 394 194 94   -  -   -  -
1055  95 195 295 395   -  -   -  - 395 95
1056  96   - 296 396   -  -   -  -   -  -
1057  97 197   - 397   -  -   -  -   -  -
1058  98 198 298   -   -  -   -  -   -  -
1059  99   -   -   -   -  -   -  -   -  -
1060   -   -   -   -   -  -   -  - 300  0
1061}
1062do_execsql_test joinD-25 {
1063  SELECT t1.*, t2.*, t3.*, t4.*
1064  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1065  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1066  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1067  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1068} {
1069  15 115 215 315   -  - 215 15 315 15
1070  30 130 230 330 130 30 230 30 330 30
1071  45 145 245 345   -  - 245 45 345 45
1072  60 160 260 360 160 60 260 60 360 60
1073  75 175 275 375   -  - 275 75 375 75
1074  90 190 290 390 190 90 290 90 390 90
1075}
1076do_execsql_test joinD-26 {
1077  SELECT t1.*, t2.*, t3.*, t4.*
1078  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1079  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1080  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1081  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1082} {
1083   3 103 203 303   -  - 203  3   -  -
1084   6 106 206 306 106  6 206  6   -  -
1085   9 109 209 309   -  - 209  9   -  -
1086  12 112 212 312 112 12 212 12   -  -
1087  15 115 215 315   -  - 215 15 315 15
1088  18 118 218 318 118 18 218 18   -  -
1089  21 121 221 321   -  - 221 21   -  -
1090  24 124 224 324 124 24 224 24   -  -
1091  27 127 227 327   -  - 227 27   -  -
1092  30 130 230 330 130 30 230 30 330 30
1093  33 133 233 333   -  - 233 33   -  -
1094  36 136 236 336 136 36 236 36   -  -
1095  39 139 239 339   -  - 239 39   -  -
1096  42 142 242 342 142 42 242 42   -  -
1097  45 145 245 345   -  - 245 45 345 45
1098  48 148 248 348 148 48 248 48   -  -
1099  51 151 251 351   -  - 251 51   -  -
1100  54 154 254 354 154 54 254 54   -  -
1101  57 157 257 357   -  - 257 57   -  -
1102  60 160 260 360 160 60 260 60 360 60
1103  63 163 263 363   -  - 263 63   -  -
1104  66 166 266 366 166 66 266 66   -  -
1105  69 169 269 369   -  - 269 69   -  -
1106  72 172 272 372 172 72 272 72   -  -
1107  75 175 275 375   -  - 275 75 375 75
1108  78 178 278 378 178 78 278 78   -  -
1109  81 181 281 381   -  - 281 81   -  -
1110  84 184 284 384 184 84 284 84   -  -
1111  87 187 287 387   -  - 287 87   -  -
1112  90 190 290 390 190 90 290 90 390 90
1113  93 193 293 393   -  - 293 93   -  -
1114   -   -   -   -   -  - 200  0   -  -
1115}
1116do_execsql_test joinD-27 {
1117  SELECT t1.*, t2.*, t3.*, t4.*
1118  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1119  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1120  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1121  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1122} {
1123  15 115 215 315   -  - 215 15 315 15
1124  30 130 230 330 130 30 230 30 330 30
1125  45 145 245 345   -  - 245 45 345 45
1126  60 160 260 360 160 60 260 60 360 60
1127  75 175 275 375   -  - 275 75 375 75
1128  90 190 290 390 190 90 290 90 390 90
1129   -   -   -   -   -  -   -  - 300  0
1130   -   -   -   -   -  -   -  - 305  5
1131   -   -   -   -   -  -   -  - 310 10
1132   -   -   -   -   -  -   -  - 320 20
1133   -   -   -   -   -  -   -  - 325 25
1134   -   -   -   -   -  -   -  - 335 35
1135   -   -   -   -   -  -   -  - 340 40
1136   -   -   -   -   -  -   -  - 350 50
1137   -   -   -   -   -  -   -  - 355 55
1138   -   -   -   -   -  -   -  - 365 65
1139   -   -   -   -   -  -   -  - 370 70
1140   -   -   -   -   -  -   -  - 380 80
1141   -   -   -   -   -  -   -  - 385 85
1142   -   -   -   -   -  -   -  - 395 95
1143}
1144do_execsql_test joinD-28 {
1145  SELECT t1.*, t2.*, t3.*, t4.*
1146  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1147  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1148  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1149  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1150} {
1151   3 103 203 303   -  - 203  3   -  -
1152   6 106 206 306 106  6 206  6   -  -
1153   9 109 209 309   -  - 209  9   -  -
1154  12 112 212 312 112 12 212 12   -  -
1155  15 115 215 315   -  - 215 15 315 15
1156  18 118 218 318 118 18 218 18   -  -
1157  21 121 221 321   -  - 221 21   -  -
1158  24 124 224 324 124 24 224 24   -  -
1159  27 127 227 327   -  - 227 27   -  -
1160  30 130 230 330 130 30 230 30 330 30
1161  33 133 233 333   -  - 233 33   -  -
1162  36 136 236 336 136 36 236 36   -  -
1163  39 139 239 339   -  - 239 39   -  -
1164  42 142 242 342 142 42 242 42   -  -
1165  45 145 245 345   -  - 245 45 345 45
1166  48 148 248 348 148 48 248 48   -  -
1167  51 151 251 351   -  - 251 51   -  -
1168  54 154 254 354 154 54 254 54   -  -
1169  57 157 257 357   -  - 257 57   -  -
1170  60 160 260 360 160 60 260 60 360 60
1171  63 163 263 363   -  - 263 63   -  -
1172  66 166 266 366 166 66 266 66   -  -
1173  69 169 269 369   -  - 269 69   -  -
1174  72 172 272 372 172 72 272 72   -  -
1175  75 175 275 375   -  - 275 75 375 75
1176  78 178 278 378 178 78 278 78   -  -
1177  81 181 281 381   -  - 281 81   -  -
1178  84 184 284 384 184 84 284 84   -  -
1179  87 187 287 387   -  - 287 87   -  -
1180  90 190 290 390 190 90 290 90 390 90
1181  93 193 293 393   -  - 293 93   -  -
1182   -   -   -   -   -  - 200  0   -  -
1183   -   -   -   -   -  -   -  - 300  0
1184   -   -   -   -   -  -   -  - 305  5
1185   -   -   -   -   -  -   -  - 310 10
1186   -   -   -   -   -  -   -  - 320 20
1187   -   -   -   -   -  -   -  - 325 25
1188   -   -   -   -   -  -   -  - 335 35
1189   -   -   -   -   -  -   -  - 340 40
1190   -   -   -   -   -  -   -  - 350 50
1191   -   -   -   -   -  -   -  - 355 55
1192   -   -   -   -   -  -   -  - 365 65
1193   -   -   -   -   -  -   -  - 370 70
1194   -   -   -   -   -  -   -  - 380 80
1195   -   -   -   -   -  -   -  - 385 85
1196   -   -   -   -   -  -   -  - 395 95
1197}
1198do_execsql_test joinD-29 {
1199  SELECT t1.*, t2.*, t3.*, t4.*
1200  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1201  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1202  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1203  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1204} {
1205   5 105 205 305   -  -   -  - 305  5
1206  10 110 210 310 110 10   -  - 310 10
1207  15 115 215 315   -  - 215 15 315 15
1208  20 120 220 320 120 20   -  - 320 20
1209  25 125 225 325   -  -   -  - 325 25
1210  30 130 230 330 130 30 230 30 330 30
1211  35 135 235 335   -  -   -  - 335 35
1212  40 140 240 340 140 40   -  - 340 40
1213  45 145 245 345   -  - 245 45 345 45
1214  50 150 250 350 150 50   -  - 350 50
1215  55 155 255 355   -  -   -  - 355 55
1216  60 160 260 360 160 60 260 60 360 60
1217  65 165 265 365   -  -   -  - 365 65
1218  70 170 270 370 170 70   -  - 370 70
1219  75 175 275 375   -  - 275 75 375 75
1220  80 180 280 380 180 80   -  - 380 80
1221  85 185 285 385   -  -   -  - 385 85
1222  90 190 290 390 190 90 290 90 390 90
1223  95 195 295 395   -  -   -  - 395 95
1224}
1225do_execsql_test joinD-30 {
1226  SELECT t1.*, t2.*, t3.*, t4.*
1227  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1228  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1229  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1230  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1231} {
1232   0 100 200 300   -  -   -  -   -  -
1233   1 101 201 301   -  -   -  -   -  -
1234   2 102 202 302 102  2   -  -   -  -
1235   3 103 203 303   -  - 203  3   -  -
1236   4 104 204 304 104  4   -  -   -  -
1237   5 105 205 305   -  -   -  - 305  5
1238   6 106 206 306 106  6 206  6   -  -
1239   7 107 207 307   -  -   -  -   -  -
1240   8 108 208 308 108  8   -  -   -  -
1241   9 109 209 309   -  - 209  9   -  -
1242  10 110 210 310 110 10   -  - 310 10
1243  11 111 211 311   -  -   -  -   -  -
1244  12 112 212 312 112 12 212 12   -  -
1245  13 113 213 313   -  -   -  -   -  -
1246  14 114 214 314 114 14   -  -   -  -
1247  15 115 215 315   -  - 215 15 315 15
1248  16 116 216 316 116 16   -  -   -  -
1249  17 117 217 317   -  -   -  -   -  -
1250  18 118 218 318 118 18 218 18   -  -
1251  19 119 219 319   -  -   -  -   -  -
1252  20 120 220 320 120 20   -  - 320 20
1253  21 121 221 321   -  - 221 21   -  -
1254  22 122 222 322 122 22   -  -   -  -
1255  23 123 223 323   -  -   -  -   -  -
1256  24 124 224 324 124 24 224 24   -  -
1257  25 125 225 325   -  -   -  - 325 25
1258  26 126 226 326 126 26   -  -   -  -
1259  27 127 227 327   -  - 227 27   -  -
1260  28 128 228 328 128 28   -  -   -  -
1261  29 129 229 329   -  -   -  -   -  -
1262  30 130 230 330 130 30 230 30 330 30
1263  31 131 231 331   -  -   -  -   -  -
1264  32 132 232 332 132 32   -  -   -  -
1265  33 133 233 333   -  - 233 33   -  -
1266  34 134 234 334 134 34   -  -   -  -
1267  35 135 235 335   -  -   -  - 335 35
1268  36 136 236 336 136 36 236 36   -  -
1269  37 137 237 337   -  -   -  -   -  -
1270  38 138 238 338 138 38   -  -   -  -
1271  39 139 239 339   -  - 239 39   -  -
1272  40 140 240 340 140 40   -  - 340 40
1273  41 141 241 341   -  -   -  -   -  -
1274  42 142 242 342 142 42 242 42   -  -
1275  43 143 243 343   -  -   -  -   -  -
1276  44 144 244 344 144 44   -  -   -  -
1277  45 145 245 345   -  - 245 45 345 45
1278  46 146 246 346 146 46   -  -   -  -
1279  47 147 247 347   -  -   -  -   -  -
1280  48 148 248 348 148 48 248 48   -  -
1281  49 149 249 349   -  -   -  -   -  -
1282  50 150 250 350 150 50   -  - 350 50
1283  51 151 251 351   -  - 251 51   -  -
1284  52 152 252 352 152 52   -  -   -  -
1285  53 153 253 353   -  -   -  -   -  -
1286  54 154 254 354 154 54 254 54   -  -
1287  55 155 255 355   -  -   -  - 355 55
1288  56 156 256 356 156 56   -  -   -  -
1289  57 157 257 357   -  - 257 57   -  -
1290  58 158 258 358 158 58   -  -   -  -
1291  59 159 259 359   -  -   -  -   -  -
1292  60 160 260 360 160 60 260 60 360 60
1293  61 161 261 361   -  -   -  -   -  -
1294  62 162 262 362 162 62   -  -   -  -
1295  63 163 263 363   -  - 263 63   -  -
1296  64 164 264 364 164 64   -  -   -  -
1297  65 165 265 365   -  -   -  - 365 65
1298  66 166 266 366 166 66 266 66   -  -
1299  67 167 267 367   -  -   -  -   -  -
1300  68 168 268 368 168 68   -  -   -  -
1301  69 169 269 369   -  - 269 69   -  -
1302  70 170 270 370 170 70   -  - 370 70
1303  71 171 271 371   -  -   -  -   -  -
1304  72 172 272 372 172 72 272 72   -  -
1305  73 173 273 373   -  -   -  -   -  -
1306  74 174 274 374 174 74   -  -   -  -
1307  75 175 275 375   -  - 275 75 375 75
1308  76 176 276 376 176 76   -  -   -  -
1309  77 177 277 377   -  -   -  -   -  -
1310  78 178 278 378 178 78 278 78   -  -
1311  79 179 279 379   -  -   -  -   -  -
1312  80 180 280 380 180 80   -  - 380 80
1313  81 181 281 381   -  - 281 81   -  -
1314  82 182 282 382 182 82   -  -   -  -
1315  83 183 283 383   -  -   -  -   -  -
1316  84 184 284 384 184 84 284 84   -  -
1317  85 185 285 385   -  -   -  - 385 85
1318  86 186 286 386 186 86   -  -   -  -
1319  87 187 287 387   -  - 287 87   -  -
1320  88 188 288 388 188 88   -  -   -  -
1321  89 189 289 389   -  -   -  -   -  -
1322  90 190 290 390 190 90 290 90 390 90
1323  91 191 291 391   -  -   -  -   -  -
1324  92 192 292 392 192 92   -  -   -  -
1325  93 193 293 393   -  - 293 93   -  -
1326  94 194 294 394 194 94   -  -   -  -
1327  95 195 295 395   -  -   -  - 395 95
1328  96   - 296 396   -  -   -  -   -  -
1329  97 197   - 397   -  -   -  -   -  -
1330  98 198 298   -   -  -   -  -   -  -
1331  99   -   -   -   -  -   -  -   -  -
1332   -   -   -   -   -  - 200  0   -  -
1333}
1334do_execsql_test joinD-31 {
1335  SELECT t1.*, t2.*, t3.*, t4.*
1336  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1337  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1338  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1339  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1340} {
1341   5 105 205 305   -  -   -  - 305  5
1342  10 110 210 310 110 10   -  - 310 10
1343  15 115 215 315   -  - 215 15 315 15
1344  20 120 220 320 120 20   -  - 320 20
1345  25 125 225 325   -  -   -  - 325 25
1346  30 130 230 330 130 30 230 30 330 30
1347  35 135 235 335   -  -   -  - 335 35
1348  40 140 240 340 140 40   -  - 340 40
1349  45 145 245 345   -  - 245 45 345 45
1350  50 150 250 350 150 50   -  - 350 50
1351  55 155 255 355   -  -   -  - 355 55
1352  60 160 260 360 160 60 260 60 360 60
1353  65 165 265 365   -  -   -  - 365 65
1354  70 170 270 370 170 70   -  - 370 70
1355  75 175 275 375   -  - 275 75 375 75
1356  80 180 280 380 180 80   -  - 380 80
1357  85 185 285 385   -  -   -  - 385 85
1358  90 190 290 390 190 90 290 90 390 90
1359  95 195 295 395   -  -   -  - 395 95
1360   -   -   -   -   -  -   -  - 300  0
1361}
1362do_execsql_test joinD-32 {
1363  SELECT t1.*, t2.*, t3.*, t4.*
1364  FROM t1 LEFT JOIN t2 ON t1.b=t2.b AND t2.x>0
1365  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1366  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1367  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1368} {
1369   0 100 200 300   -  -   -  -   -  -
1370   1 101 201 301   -  -   -  -   -  -
1371   2 102 202 302 102  2   -  -   -  -
1372   3 103 203 303   -  - 203  3   -  -
1373   4 104 204 304 104  4   -  -   -  -
1374   5 105 205 305   -  -   -  - 305  5
1375   6 106 206 306 106  6 206  6   -  -
1376   7 107 207 307   -  -   -  -   -  -
1377   8 108 208 308 108  8   -  -   -  -
1378   9 109 209 309   -  - 209  9   -  -
1379  10 110 210 310 110 10   -  - 310 10
1380  11 111 211 311   -  -   -  -   -  -
1381  12 112 212 312 112 12 212 12   -  -
1382  13 113 213 313   -  -   -  -   -  -
1383  14 114 214 314 114 14   -  -   -  -
1384  15 115 215 315   -  - 215 15 315 15
1385  16 116 216 316 116 16   -  -   -  -
1386  17 117 217 317   -  -   -  -   -  -
1387  18 118 218 318 118 18 218 18   -  -
1388  19 119 219 319   -  -   -  -   -  -
1389  20 120 220 320 120 20   -  - 320 20
1390  21 121 221 321   -  - 221 21   -  -
1391  22 122 222 322 122 22   -  -   -  -
1392  23 123 223 323   -  -   -  -   -  -
1393  24 124 224 324 124 24 224 24   -  -
1394  25 125 225 325   -  -   -  - 325 25
1395  26 126 226 326 126 26   -  -   -  -
1396  27 127 227 327   -  - 227 27   -  -
1397  28 128 228 328 128 28   -  -   -  -
1398  29 129 229 329   -  -   -  -   -  -
1399  30 130 230 330 130 30 230 30 330 30
1400  31 131 231 331   -  -   -  -   -  -
1401  32 132 232 332 132 32   -  -   -  -
1402  33 133 233 333   -  - 233 33   -  -
1403  34 134 234 334 134 34   -  -   -  -
1404  35 135 235 335   -  -   -  - 335 35
1405  36 136 236 336 136 36 236 36   -  -
1406  37 137 237 337   -  -   -  -   -  -
1407  38 138 238 338 138 38   -  -   -  -
1408  39 139 239 339   -  - 239 39   -  -
1409  40 140 240 340 140 40   -  - 340 40
1410  41 141 241 341   -  -   -  -   -  -
1411  42 142 242 342 142 42 242 42   -  -
1412  43 143 243 343   -  -   -  -   -  -
1413  44 144 244 344 144 44   -  -   -  -
1414  45 145 245 345   -  - 245 45 345 45
1415  46 146 246 346 146 46   -  -   -  -
1416  47 147 247 347   -  -   -  -   -  -
1417  48 148 248 348 148 48 248 48   -  -
1418  49 149 249 349   -  -   -  -   -  -
1419  50 150 250 350 150 50   -  - 350 50
1420  51 151 251 351   -  - 251 51   -  -
1421  52 152 252 352 152 52   -  -   -  -
1422  53 153 253 353   -  -   -  -   -  -
1423  54 154 254 354 154 54 254 54   -  -
1424  55 155 255 355   -  -   -  - 355 55
1425  56 156 256 356 156 56   -  -   -  -
1426  57 157 257 357   -  - 257 57   -  -
1427  58 158 258 358 158 58   -  -   -  -
1428  59 159 259 359   -  -   -  -   -  -
1429  60 160 260 360 160 60 260 60 360 60
1430  61 161 261 361   -  -   -  -   -  -
1431  62 162 262 362 162 62   -  -   -  -
1432  63 163 263 363   -  - 263 63   -  -
1433  64 164 264 364 164 64   -  -   -  -
1434  65 165 265 365   -  -   -  - 365 65
1435  66 166 266 366 166 66 266 66   -  -
1436  67 167 267 367   -  -   -  -   -  -
1437  68 168 268 368 168 68   -  -   -  -
1438  69 169 269 369   -  - 269 69   -  -
1439  70 170 270 370 170 70   -  - 370 70
1440  71 171 271 371   -  -   -  -   -  -
1441  72 172 272 372 172 72 272 72   -  -
1442  73 173 273 373   -  -   -  -   -  -
1443  74 174 274 374 174 74   -  -   -  -
1444  75 175 275 375   -  - 275 75 375 75
1445  76 176 276 376 176 76   -  -   -  -
1446  77 177 277 377   -  -   -  -   -  -
1447  78 178 278 378 178 78 278 78   -  -
1448  79 179 279 379   -  -   -  -   -  -
1449  80 180 280 380 180 80   -  - 380 80
1450  81 181 281 381   -  - 281 81   -  -
1451  82 182 282 382 182 82   -  -   -  -
1452  83 183 283 383   -  -   -  -   -  -
1453  84 184 284 384 184 84 284 84   -  -
1454  85 185 285 385   -  -   -  - 385 85
1455  86 186 286 386 186 86   -  -   -  -
1456  87 187 287 387   -  - 287 87   -  -
1457  88 188 288 388 188 88   -  -   -  -
1458  89 189 289 389   -  -   -  -   -  -
1459  90 190 290 390 190 90 290 90 390 90
1460  91 191 291 391   -  -   -  -   -  -
1461  92 192 292 392 192 92   -  -   -  -
1462  93 193 293 393   -  - 293 93   -  -
1463  94 194 294 394 194 94   -  -   -  -
1464  95 195 295 395   -  -   -  - 395 95
1465  96   - 296 396   -  -   -  -   -  -
1466  97 197   - 397   -  -   -  -   -  -
1467  98 198 298   -   -  -   -  -   -  -
1468  99   -   -   -   -  -   -  -   -  -
1469   -   -   -   -   -  - 200  0   -  -
1470   -   -   -   -   -  -   -  - 300  0
1471}
1472do_execsql_test joinD-33 {
1473  SELECT t1.*, t2.*, t3.*, t4.*
1474  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1475  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1476  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1477  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1478} {
1479  30 130 230 330 130 30 230 30 330 30
1480  60 160 260 360 160 60 260 60 360 60
1481  90 190 290 390 190 90 290 90 390 90
1482}
1483do_execsql_test joinD-34 {
1484  SELECT t1.*, t2.*, t3.*, t4.*
1485  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1486  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1487  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1488  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1489} {
1490   6 106 206 306 106  6 206  6   -  -
1491  12 112 212 312 112 12 212 12   -  -
1492  18 118 218 318 118 18 218 18   -  -
1493  24 124 224 324 124 24 224 24   -  -
1494  30 130 230 330 130 30 230 30 330 30
1495  36 136 236 336 136 36 236 36   -  -
1496  42 142 242 342 142 42 242 42   -  -
1497  48 148 248 348 148 48 248 48   -  -
1498  54 154 254 354 154 54 254 54   -  -
1499  60 160 260 360 160 60 260 60 360 60
1500  66 166 266 366 166 66 266 66   -  -
1501  72 172 272 372 172 72 272 72   -  -
1502  78 178 278 378 178 78 278 78   -  -
1503  84 184 284 384 184 84 284 84   -  -
1504  90 190 290 390 190 90 290 90 390 90
1505}
1506do_execsql_test joinD-35 {
1507  SELECT t1.*, t2.*, t3.*, t4.*
1508  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1509  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1510  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1511  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1512} {
1513  30 130 230 330 130 30 230 30 330 30
1514  60 160 260 360 160 60 260 60 360 60
1515  90 190 290 390 190 90 290 90 390 90
1516   -   -   -   -   -  -   -  - 300  0
1517   -   -   -   -   -  -   -  - 305  5
1518   -   -   -   -   -  -   -  - 310 10
1519   -   -   -   -   -  -   -  - 315 15
1520   -   -   -   -   -  -   -  - 320 20
1521   -   -   -   -   -  -   -  - 325 25
1522   -   -   -   -   -  -   -  - 335 35
1523   -   -   -   -   -  -   -  - 340 40
1524   -   -   -   -   -  -   -  - 345 45
1525   -   -   -   -   -  -   -  - 350 50
1526   -   -   -   -   -  -   -  - 355 55
1527   -   -   -   -   -  -   -  - 365 65
1528   -   -   -   -   -  -   -  - 370 70
1529   -   -   -   -   -  -   -  - 375 75
1530   -   -   -   -   -  -   -  - 380 80
1531   -   -   -   -   -  -   -  - 385 85
1532   -   -   -   -   -  -   -  - 395 95
1533}
1534do_execsql_test joinD-36 {
1535  SELECT t1.*, t2.*, t3.*, t4.*
1536  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1537  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
1538  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1539  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1540} {
1541   6 106 206 306 106  6 206  6   -  -
1542  12 112 212 312 112 12 212 12   -  -
1543  18 118 218 318 118 18 218 18   -  -
1544  24 124 224 324 124 24 224 24   -  -
1545  30 130 230 330 130 30 230 30 330 30
1546  36 136 236 336 136 36 236 36   -  -
1547  42 142 242 342 142 42 242 42   -  -
1548  48 148 248 348 148 48 248 48   -  -
1549  54 154 254 354 154 54 254 54   -  -
1550  60 160 260 360 160 60 260 60 360 60
1551  66 166 266 366 166 66 266 66   -  -
1552  72 172 272 372 172 72 272 72   -  -
1553  78 178 278 378 178 78 278 78   -  -
1554  84 184 284 384 184 84 284 84   -  -
1555  90 190 290 390 190 90 290 90 390 90
1556   -   -   -   -   -  -   -  - 300  0
1557   -   -   -   -   -  -   -  - 305  5
1558   -   -   -   -   -  -   -  - 310 10
1559   -   -   -   -   -  -   -  - 315 15
1560   -   -   -   -   -  -   -  - 320 20
1561   -   -   -   -   -  -   -  - 325 25
1562   -   -   -   -   -  -   -  - 335 35
1563   -   -   -   -   -  -   -  - 340 40
1564   -   -   -   -   -  -   -  - 345 45
1565   -   -   -   -   -  -   -  - 350 50
1566   -   -   -   -   -  -   -  - 355 55
1567   -   -   -   -   -  -   -  - 365 65
1568   -   -   -   -   -  -   -  - 370 70
1569   -   -   -   -   -  -   -  - 375 75
1570   -   -   -   -   -  -   -  - 380 80
1571   -   -   -   -   -  -   -  - 385 85
1572   -   -   -   -   -  -   -  - 395 95
1573}
1574do_execsql_test joinD-37 {
1575  SELECT t1.*, t2.*, t3.*, t4.*
1576  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1577  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1578  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1579  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1580} {
1581  10 110 210 310 110 10   -  - 310 10
1582  20 120 220 320 120 20   -  - 320 20
1583  30 130 230 330 130 30 230 30 330 30
1584  40 140 240 340 140 40   -  - 340 40
1585  50 150 250 350 150 50   -  - 350 50
1586  60 160 260 360 160 60 260 60 360 60
1587  70 170 270 370 170 70   -  - 370 70
1588  80 180 280 380 180 80   -  - 380 80
1589  90 190 290 390 190 90 290 90 390 90
1590}
1591do_execsql_test joinD-38 {
1592  SELECT t1.*, t2.*, t3.*, t4.*
1593  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1594  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1595  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1596  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1597} {
1598   2 102 202 302 102  2   -  -   -  -
1599   4 104 204 304 104  4   -  -   -  -
1600   6 106 206 306 106  6 206  6   -  -
1601   8 108 208 308 108  8   -  -   -  -
1602  10 110 210 310 110 10   -  - 310 10
1603  12 112 212 312 112 12 212 12   -  -
1604  14 114 214 314 114 14   -  -   -  -
1605  16 116 216 316 116 16   -  -   -  -
1606  18 118 218 318 118 18 218 18   -  -
1607  20 120 220 320 120 20   -  - 320 20
1608  22 122 222 322 122 22   -  -   -  -
1609  24 124 224 324 124 24 224 24   -  -
1610  26 126 226 326 126 26   -  -   -  -
1611  28 128 228 328 128 28   -  -   -  -
1612  30 130 230 330 130 30 230 30 330 30
1613  32 132 232 332 132 32   -  -   -  -
1614  34 134 234 334 134 34   -  -   -  -
1615  36 136 236 336 136 36 236 36   -  -
1616  38 138 238 338 138 38   -  -   -  -
1617  40 140 240 340 140 40   -  - 340 40
1618  42 142 242 342 142 42 242 42   -  -
1619  44 144 244 344 144 44   -  -   -  -
1620  46 146 246 346 146 46   -  -   -  -
1621  48 148 248 348 148 48 248 48   -  -
1622  50 150 250 350 150 50   -  - 350 50
1623  52 152 252 352 152 52   -  -   -  -
1624  54 154 254 354 154 54 254 54   -  -
1625  56 156 256 356 156 56   -  -   -  -
1626  58 158 258 358 158 58   -  -   -  -
1627  60 160 260 360 160 60 260 60 360 60
1628  62 162 262 362 162 62   -  -   -  -
1629  64 164 264 364 164 64   -  -   -  -
1630  66 166 266 366 166 66 266 66   -  -
1631  68 168 268 368 168 68   -  -   -  -
1632  70 170 270 370 170 70   -  - 370 70
1633  72 172 272 372 172 72 272 72   -  -
1634  74 174 274 374 174 74   -  -   -  -
1635  76 176 276 376 176 76   -  -   -  -
1636  78 178 278 378 178 78 278 78   -  -
1637  80 180 280 380 180 80   -  - 380 80
1638  82 182 282 382 182 82   -  -   -  -
1639  84 184 284 384 184 84 284 84   -  -
1640  86 186 286 386 186 86   -  -   -  -
1641  88 188 288 388 188 88   -  -   -  -
1642  90 190 290 390 190 90 290 90 390 90
1643  92 192 292 392 192 92   -  -   -  -
1644  94 194 294 394 194 94   -  -   -  -
1645   -   -   -   - 100  0   -  -   -  -
1646}
1647do_execsql_test joinD-39 {
1648  SELECT t1.*, t2.*, t3.*, t4.*
1649  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1650  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1651  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1652  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1653} {
1654  10 110 210 310 110 10   -  - 310 10
1655  20 120 220 320 120 20   -  - 320 20
1656  30 130 230 330 130 30 230 30 330 30
1657  40 140 240 340 140 40   -  - 340 40
1658  50 150 250 350 150 50   -  - 350 50
1659  60 160 260 360 160 60 260 60 360 60
1660  70 170 270 370 170 70   -  - 370 70
1661  80 180 280 380 180 80   -  - 380 80
1662  90 190 290 390 190 90 290 90 390 90
1663   -   -   -   -   -  -   -  - 300  0
1664   -   -   -   -   -  -   -  - 305  5
1665   -   -   -   -   -  -   -  - 315 15
1666   -   -   -   -   -  -   -  - 325 25
1667   -   -   -   -   -  -   -  - 335 35
1668   -   -   -   -   -  -   -  - 345 45
1669   -   -   -   -   -  -   -  - 355 55
1670   -   -   -   -   -  -   -  - 365 65
1671   -   -   -   -   -  -   -  - 375 75
1672   -   -   -   -   -  -   -  - 385 85
1673   -   -   -   -   -  -   -  - 395 95
1674}
1675do_execsql_test joinD-40 {
1676  SELECT t1.*, t2.*, t3.*, t4.*
1677  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1678  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
1679  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1680  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1681} {
1682   2 102 202 302 102  2   -  -   -  -
1683   4 104 204 304 104  4   -  -   -  -
1684   6 106 206 306 106  6 206  6   -  -
1685   8 108 208 308 108  8   -  -   -  -
1686  10 110 210 310 110 10   -  - 310 10
1687  12 112 212 312 112 12 212 12   -  -
1688  14 114 214 314 114 14   -  -   -  -
1689  16 116 216 316 116 16   -  -   -  -
1690  18 118 218 318 118 18 218 18   -  -
1691  20 120 220 320 120 20   -  - 320 20
1692  22 122 222 322 122 22   -  -   -  -
1693  24 124 224 324 124 24 224 24   -  -
1694  26 126 226 326 126 26   -  -   -  -
1695  28 128 228 328 128 28   -  -   -  -
1696  30 130 230 330 130 30 230 30 330 30
1697  32 132 232 332 132 32   -  -   -  -
1698  34 134 234 334 134 34   -  -   -  -
1699  36 136 236 336 136 36 236 36   -  -
1700  38 138 238 338 138 38   -  -   -  -
1701  40 140 240 340 140 40   -  - 340 40
1702  42 142 242 342 142 42 242 42   -  -
1703  44 144 244 344 144 44   -  -   -  -
1704  46 146 246 346 146 46   -  -   -  -
1705  48 148 248 348 148 48 248 48   -  -
1706  50 150 250 350 150 50   -  - 350 50
1707  52 152 252 352 152 52   -  -   -  -
1708  54 154 254 354 154 54 254 54   -  -
1709  56 156 256 356 156 56   -  -   -  -
1710  58 158 258 358 158 58   -  -   -  -
1711  60 160 260 360 160 60 260 60 360 60
1712  62 162 262 362 162 62   -  -   -  -
1713  64 164 264 364 164 64   -  -   -  -
1714  66 166 266 366 166 66 266 66   -  -
1715  68 168 268 368 168 68   -  -   -  -
1716  70 170 270 370 170 70   -  - 370 70
1717  72 172 272 372 172 72 272 72   -  -
1718  74 174 274 374 174 74   -  -   -  -
1719  76 176 276 376 176 76   -  -   -  -
1720  78 178 278 378 178 78 278 78   -  -
1721  80 180 280 380 180 80   -  - 380 80
1722  82 182 282 382 182 82   -  -   -  -
1723  84 184 284 384 184 84 284 84   -  -
1724  86 186 286 386 186 86   -  -   -  -
1725  88 188 288 388 188 88   -  -   -  -
1726  90 190 290 390 190 90 290 90 390 90
1727  92 192 292 392 192 92   -  -   -  -
1728  94 194 294 394 194 94   -  -   -  -
1729   -   -   -   - 100  0   -  -   -  -
1730   -   -   -   -   -  -   -  - 300  0
1731   -   -   -   -   -  -   -  - 305  5
1732   -   -   -   -   -  -   -  - 315 15
1733   -   -   -   -   -  -   -  - 325 25
1734   -   -   -   -   -  -   -  - 335 35
1735   -   -   -   -   -  -   -  - 345 45
1736   -   -   -   -   -  -   -  - 355 55
1737   -   -   -   -   -  -   -  - 365 65
1738   -   -   -   -   -  -   -  - 375 75
1739   -   -   -   -   -  -   -  - 385 85
1740   -   -   -   -   -  -   -  - 395 95
1741}
1742do_execsql_test joinD-41 {
1743  SELECT t1.*, t2.*, t3.*, t4.*
1744  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1745  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1746  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1747  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1748} {
1749  30 130 230 330 130 30 230 30 330 30
1750  60 160 260 360 160 60 260 60 360 60
1751  90 190 290 390 190 90 290 90 390 90
1752}
1753do_execsql_test joinD-42 {
1754  SELECT t1.*, t2.*, t3.*, t4.*
1755  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1756  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1757  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1758  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1759} {
1760   6 106 206 306 106  6 206  6   -  -
1761  12 112 212 312 112 12 212 12   -  -
1762  18 118 218 318 118 18 218 18   -  -
1763  24 124 224 324 124 24 224 24   -  -
1764  30 130 230 330 130 30 230 30 330 30
1765  36 136 236 336 136 36 236 36   -  -
1766  42 142 242 342 142 42 242 42   -  -
1767  48 148 248 348 148 48 248 48   -  -
1768  54 154 254 354 154 54 254 54   -  -
1769  60 160 260 360 160 60 260 60 360 60
1770  66 166 266 366 166 66 266 66   -  -
1771  72 172 272 372 172 72 272 72   -  -
1772  78 178 278 378 178 78 278 78   -  -
1773  84 184 284 384 184 84 284 84   -  -
1774  90 190 290 390 190 90 290 90 390 90
1775   -   -   -   -   -  - 200  0   -  -
1776   -   -   -   -   -  - 203  3   -  -
1777   -   -   -   -   -  - 209  9   -  -
1778   -   -   -   -   -  - 215 15   -  -
1779   -   -   -   -   -  - 221 21   -  -
1780   -   -   -   -   -  - 227 27   -  -
1781   -   -   -   -   -  - 233 33   -  -
1782   -   -   -   -   -  - 239 39   -  -
1783   -   -   -   -   -  - 245 45   -  -
1784   -   -   -   -   -  - 251 51   -  -
1785   -   -   -   -   -  - 257 57   -  -
1786   -   -   -   -   -  - 263 63   -  -
1787   -   -   -   -   -  - 269 69   -  -
1788   -   -   -   -   -  - 275 75   -  -
1789   -   -   -   -   -  - 281 81   -  -
1790   -   -   -   -   -  - 287 87   -  -
1791   -   -   -   -   -  - 293 93   -  -
1792}
1793do_execsql_test joinD-43 {
1794  SELECT t1.*, t2.*, t3.*, t4.*
1795  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1796  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1797  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1798  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1799} {
1800  30 130 230 330 130 30 230 30 330 30
1801  60 160 260 360 160 60 260 60 360 60
1802  90 190 290 390 190 90 290 90 390 90
1803   -   -   -   -   -  -   -  - 300  0
1804   -   -   -   -   -  -   -  - 305  5
1805   -   -   -   -   -  -   -  - 310 10
1806   -   -   -   -   -  -   -  - 315 15
1807   -   -   -   -   -  -   -  - 320 20
1808   -   -   -   -   -  -   -  - 325 25
1809   -   -   -   -   -  -   -  - 335 35
1810   -   -   -   -   -  -   -  - 340 40
1811   -   -   -   -   -  -   -  - 345 45
1812   -   -   -   -   -  -   -  - 350 50
1813   -   -   -   -   -  -   -  - 355 55
1814   -   -   -   -   -  -   -  - 365 65
1815   -   -   -   -   -  -   -  - 370 70
1816   -   -   -   -   -  -   -  - 375 75
1817   -   -   -   -   -  -   -  - 380 80
1818   -   -   -   -   -  -   -  - 385 85
1819   -   -   -   -   -  -   -  - 395 95
1820}
1821do_execsql_test joinD-44 {
1822  SELECT t1.*, t2.*, t3.*, t4.*
1823  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1824  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
1825  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
1826  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1827} {
1828   6 106 206 306 106  6 206  6   -  -
1829  12 112 212 312 112 12 212 12   -  -
1830  18 118 218 318 118 18 218 18   -  -
1831  24 124 224 324 124 24 224 24   -  -
1832  30 130 230 330 130 30 230 30 330 30
1833  36 136 236 336 136 36 236 36   -  -
1834  42 142 242 342 142 42 242 42   -  -
1835  48 148 248 348 148 48 248 48   -  -
1836  54 154 254 354 154 54 254 54   -  -
1837  60 160 260 360 160 60 260 60 360 60
1838  66 166 266 366 166 66 266 66   -  -
1839  72 172 272 372 172 72 272 72   -  -
1840  78 178 278 378 178 78 278 78   -  -
1841  84 184 284 384 184 84 284 84   -  -
1842  90 190 290 390 190 90 290 90 390 90
1843   -   -   -   -   -  - 200  0   -  -
1844   -   -   -   -   -  - 203  3   -  -
1845   -   -   -   -   -  - 209  9   -  -
1846   -   -   -   -   -  - 215 15   -  -
1847   -   -   -   -   -  - 221 21   -  -
1848   -   -   -   -   -  - 227 27   -  -
1849   -   -   -   -   -  - 233 33   -  -
1850   -   -   -   -   -  - 239 39   -  -
1851   -   -   -   -   -  - 245 45   -  -
1852   -   -   -   -   -  - 251 51   -  -
1853   -   -   -   -   -  - 257 57   -  -
1854   -   -   -   -   -  - 263 63   -  -
1855   -   -   -   -   -  - 269 69   -  -
1856   -   -   -   -   -  - 275 75   -  -
1857   -   -   -   -   -  - 281 81   -  -
1858   -   -   -   -   -  - 287 87   -  -
1859   -   -   -   -   -  - 293 93   -  -
1860   -   -   -   -   -  -   -  - 300  0
1861   -   -   -   -   -  -   -  - 305  5
1862   -   -   -   -   -  -   -  - 310 10
1863   -   -   -   -   -  -   -  - 315 15
1864   -   -   -   -   -  -   -  - 320 20
1865   -   -   -   -   -  -   -  - 325 25
1866   -   -   -   -   -  -   -  - 335 35
1867   -   -   -   -   -  -   -  - 340 40
1868   -   -   -   -   -  -   -  - 345 45
1869   -   -   -   -   -  -   -  - 350 50
1870   -   -   -   -   -  -   -  - 355 55
1871   -   -   -   -   -  -   -  - 365 65
1872   -   -   -   -   -  -   -  - 370 70
1873   -   -   -   -   -  -   -  - 375 75
1874   -   -   -   -   -  -   -  - 380 80
1875   -   -   -   -   -  -   -  - 385 85
1876   -   -   -   -   -  -   -  - 395 95
1877}
1878do_execsql_test joinD-45 {
1879  SELECT t1.*, t2.*, t3.*, t4.*
1880  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1881  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1882  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
1883  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1884} {
1885  10 110 210 310 110 10   -  - 310 10
1886  20 120 220 320 120 20   -  - 320 20
1887  30 130 230 330 130 30 230 30 330 30
1888  40 140 240 340 140 40   -  - 340 40
1889  50 150 250 350 150 50   -  - 350 50
1890  60 160 260 360 160 60 260 60 360 60
1891  70 170 270 370 170 70   -  - 370 70
1892  80 180 280 380 180 80   -  - 380 80
1893  90 190 290 390 190 90 290 90 390 90
1894}
1895do_execsql_test joinD-46 {
1896  SELECT t1.*, t2.*, t3.*, t4.*
1897  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1898  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1899  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
1900  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1901} {
1902   2 102 202 302 102  2   -  -   -  -
1903   4 104 204 304 104  4   -  -   -  -
1904   6 106 206 306 106  6 206  6   -  -
1905   8 108 208 308 108  8   -  -   -  -
1906  10 110 210 310 110 10   -  - 310 10
1907  12 112 212 312 112 12 212 12   -  -
1908  14 114 214 314 114 14   -  -   -  -
1909  16 116 216 316 116 16   -  -   -  -
1910  18 118 218 318 118 18 218 18   -  -
1911  20 120 220 320 120 20   -  - 320 20
1912  22 122 222 322 122 22   -  -   -  -
1913  24 124 224 324 124 24 224 24   -  -
1914  26 126 226 326 126 26   -  -   -  -
1915  28 128 228 328 128 28   -  -   -  -
1916  30 130 230 330 130 30 230 30 330 30
1917  32 132 232 332 132 32   -  -   -  -
1918  34 134 234 334 134 34   -  -   -  -
1919  36 136 236 336 136 36 236 36   -  -
1920  38 138 238 338 138 38   -  -   -  -
1921  40 140 240 340 140 40   -  - 340 40
1922  42 142 242 342 142 42 242 42   -  -
1923  44 144 244 344 144 44   -  -   -  -
1924  46 146 246 346 146 46   -  -   -  -
1925  48 148 248 348 148 48 248 48   -  -
1926  50 150 250 350 150 50   -  - 350 50
1927  52 152 252 352 152 52   -  -   -  -
1928  54 154 254 354 154 54 254 54   -  -
1929  56 156 256 356 156 56   -  -   -  -
1930  58 158 258 358 158 58   -  -   -  -
1931  60 160 260 360 160 60 260 60 360 60
1932  62 162 262 362 162 62   -  -   -  -
1933  64 164 264 364 164 64   -  -   -  -
1934  66 166 266 366 166 66 266 66   -  -
1935  68 168 268 368 168 68   -  -   -  -
1936  70 170 270 370 170 70   -  - 370 70
1937  72 172 272 372 172 72 272 72   -  -
1938  74 174 274 374 174 74   -  -   -  -
1939  76 176 276 376 176 76   -  -   -  -
1940  78 178 278 378 178 78 278 78   -  -
1941  80 180 280 380 180 80   -  - 380 80
1942  82 182 282 382 182 82   -  -   -  -
1943  84 184 284 384 184 84 284 84   -  -
1944  86 186 286 386 186 86   -  -   -  -
1945  88 188 288 388 188 88   -  -   -  -
1946  90 190 290 390 190 90 290 90 390 90
1947  92 192 292 392 192 92   -  -   -  -
1948  94 194 294 394 194 94   -  -   -  -
1949   -   -   -   - 100  0   -  -   -  -
1950   -   -   -   -   -  - 200  0   -  -
1951   -   -   -   -   -  - 203  3   -  -
1952   -   -   -   -   -  - 209  9   -  -
1953   -   -   -   -   -  - 215 15   -  -
1954   -   -   -   -   -  - 221 21   -  -
1955   -   -   -   -   -  - 227 27   -  -
1956   -   -   -   -   -  - 233 33   -  -
1957   -   -   -   -   -  - 239 39   -  -
1958   -   -   -   -   -  - 245 45   -  -
1959   -   -   -   -   -  - 251 51   -  -
1960   -   -   -   -   -  - 257 57   -  -
1961   -   -   -   -   -  - 263 63   -  -
1962   -   -   -   -   -  - 269 69   -  -
1963   -   -   -   -   -  - 275 75   -  -
1964   -   -   -   -   -  - 281 81   -  -
1965   -   -   -   -   -  - 287 87   -  -
1966   -   -   -   -   -  - 293 93   -  -
1967}
1968do_execsql_test joinD-47 {
1969  SELECT t1.*, t2.*, t3.*, t4.*
1970  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1971  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
1972  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
1973  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
1974} {
1975  10 110 210 310 110 10   -  - 310 10
1976  20 120 220 320 120 20   -  - 320 20
1977  30 130 230 330 130 30 230 30 330 30
1978  40 140 240 340 140 40   -  - 340 40
1979  50 150 250 350 150 50   -  - 350 50
1980  60 160 260 360 160 60 260 60 360 60
1981  70 170 270 370 170 70   -  - 370 70
1982  80 180 280 380 180 80   -  - 380 80
1983  90 190 290 390 190 90 290 90 390 90
1984   -   -   -   -   -  -   -  - 300  0
1985   -   -   -   -   -  -   -  - 305  5
1986   -   -   -   -   -  -   -  - 315 15
1987   -   -   -   -   -  -   -  - 325 25
1988   -   -   -   -   -  -   -  - 335 35
1989   -   -   -   -   -  -   -  - 345 45
1990   -   -   -   -   -  -   -  - 355 55
1991   -   -   -   -   -  -   -  - 365 65
1992   -   -   -   -   -  -   -  - 375 75
1993   -   -   -   -   -  -   -  - 385 85
1994   -   -   -   -   -  -   -  - 395 95
1995}
1996do_execsql_test joinD-48 {
1997  SELECT t1.*, t2.*, t3.*, t4.*
1998  FROM t1 RIGHT JOIN t2 ON t1.b=t2.b AND t2.x>0
1999  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
2000  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
2001  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2002} {
2003   2 102 202 302 102  2   -  -   -  -
2004   4 104 204 304 104  4   -  -   -  -
2005   6 106 206 306 106  6 206  6   -  -
2006   8 108 208 308 108  8   -  -   -  -
2007  10 110 210 310 110 10   -  - 310 10
2008  12 112 212 312 112 12 212 12   -  -
2009  14 114 214 314 114 14   -  -   -  -
2010  16 116 216 316 116 16   -  -   -  -
2011  18 118 218 318 118 18 218 18   -  -
2012  20 120 220 320 120 20   -  - 320 20
2013  22 122 222 322 122 22   -  -   -  -
2014  24 124 224 324 124 24 224 24   -  -
2015  26 126 226 326 126 26   -  -   -  -
2016  28 128 228 328 128 28   -  -   -  -
2017  30 130 230 330 130 30 230 30 330 30
2018  32 132 232 332 132 32   -  -   -  -
2019  34 134 234 334 134 34   -  -   -  -
2020  36 136 236 336 136 36 236 36   -  -
2021  38 138 238 338 138 38   -  -   -  -
2022  40 140 240 340 140 40   -  - 340 40
2023  42 142 242 342 142 42 242 42   -  -
2024  44 144 244 344 144 44   -  -   -  -
2025  46 146 246 346 146 46   -  -   -  -
2026  48 148 248 348 148 48 248 48   -  -
2027  50 150 250 350 150 50   -  - 350 50
2028  52 152 252 352 152 52   -  -   -  -
2029  54 154 254 354 154 54 254 54   -  -
2030  56 156 256 356 156 56   -  -   -  -
2031  58 158 258 358 158 58   -  -   -  -
2032  60 160 260 360 160 60 260 60 360 60
2033  62 162 262 362 162 62   -  -   -  -
2034  64 164 264 364 164 64   -  -   -  -
2035  66 166 266 366 166 66 266 66   -  -
2036  68 168 268 368 168 68   -  -   -  -
2037  70 170 270 370 170 70   -  - 370 70
2038  72 172 272 372 172 72 272 72   -  -
2039  74 174 274 374 174 74   -  -   -  -
2040  76 176 276 376 176 76   -  -   -  -
2041  78 178 278 378 178 78 278 78   -  -
2042  80 180 280 380 180 80   -  - 380 80
2043  82 182 282 382 182 82   -  -   -  -
2044  84 184 284 384 184 84 284 84   -  -
2045  86 186 286 386 186 86   -  -   -  -
2046  88 188 288 388 188 88   -  -   -  -
2047  90 190 290 390 190 90 290 90 390 90
2048  92 192 292 392 192 92   -  -   -  -
2049  94 194 294 394 194 94   -  -   -  -
2050   -   -   -   - 100  0   -  -   -  -
2051   -   -   -   -   -  - 200  0   -  -
2052   -   -   -   -   -  - 203  3   -  -
2053   -   -   -   -   -  - 209  9   -  -
2054   -   -   -   -   -  - 215 15   -  -
2055   -   -   -   -   -  - 221 21   -  -
2056   -   -   -   -   -  - 227 27   -  -
2057   -   -   -   -   -  - 233 33   -  -
2058   -   -   -   -   -  - 239 39   -  -
2059   -   -   -   -   -  - 245 45   -  -
2060   -   -   -   -   -  - 251 51   -  -
2061   -   -   -   -   -  - 257 57   -  -
2062   -   -   -   -   -  - 263 63   -  -
2063   -   -   -   -   -  - 269 69   -  -
2064   -   -   -   -   -  - 275 75   -  -
2065   -   -   -   -   -  - 281 81   -  -
2066   -   -   -   -   -  - 287 87   -  -
2067   -   -   -   -   -  - 293 93   -  -
2068   -   -   -   -   -  -   -  - 300  0
2069   -   -   -   -   -  -   -  - 305  5
2070   -   -   -   -   -  -   -  - 315 15
2071   -   -   -   -   -  -   -  - 325 25
2072   -   -   -   -   -  -   -  - 335 35
2073   -   -   -   -   -  -   -  - 345 45
2074   -   -   -   -   -  -   -  - 355 55
2075   -   -   -   -   -  -   -  - 365 65
2076   -   -   -   -   -  -   -  - 375 75
2077   -   -   -   -   -  -   -  - 385 85
2078   -   -   -   -   -  -   -  - 395 95
2079}
2080do_execsql_test joinD-49 {
2081  SELECT t1.*, t2.*, t3.*, t4.*
2082  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2083  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
2084  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
2085  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2086} {
2087  15 115 215 315   -  - 215 15 315 15
2088  30 130 230 330 130 30 230 30 330 30
2089  45 145 245 345   -  - 245 45 345 45
2090  60 160 260 360 160 60 260 60 360 60
2091  75 175 275 375   -  - 275 75 375 75
2092  90 190 290 390 190 90 290 90 390 90
2093}
2094do_execsql_test joinD-50 {
2095  SELECT t1.*, t2.*, t3.*, t4.*
2096  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2097  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
2098  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2099  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2100} {
2101   3 103 203 303   -  - 203  3   -  -
2102   6 106 206 306 106  6 206  6   -  -
2103   9 109 209 309   -  - 209  9   -  -
2104  12 112 212 312 112 12 212 12   -  -
2105  15 115 215 315   -  - 215 15 315 15
2106  18 118 218 318 118 18 218 18   -  -
2107  21 121 221 321   -  - 221 21   -  -
2108  24 124 224 324 124 24 224 24   -  -
2109  27 127 227 327   -  - 227 27   -  -
2110  30 130 230 330 130 30 230 30 330 30
2111  33 133 233 333   -  - 233 33   -  -
2112  36 136 236 336 136 36 236 36   -  -
2113  39 139 239 339   -  - 239 39   -  -
2114  42 142 242 342 142 42 242 42   -  -
2115  45 145 245 345   -  - 245 45 345 45
2116  48 148 248 348 148 48 248 48   -  -
2117  51 151 251 351   -  - 251 51   -  -
2118  54 154 254 354 154 54 254 54   -  -
2119  57 157 257 357   -  - 257 57   -  -
2120  60 160 260 360 160 60 260 60 360 60
2121  63 163 263 363   -  - 263 63   -  -
2122  66 166 266 366 166 66 266 66   -  -
2123  69 169 269 369   -  - 269 69   -  -
2124  72 172 272 372 172 72 272 72   -  -
2125  75 175 275 375   -  - 275 75 375 75
2126  78 178 278 378 178 78 278 78   -  -
2127  81 181 281 381   -  - 281 81   -  -
2128  84 184 284 384 184 84 284 84   -  -
2129  87 187 287 387   -  - 287 87   -  -
2130  90 190 290 390 190 90 290 90 390 90
2131  93 193 293 393   -  - 293 93   -  -
2132}
2133do_execsql_test joinD-51 {
2134  SELECT t1.*, t2.*, t3.*, t4.*
2135  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2136  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
2137  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2138  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2139} {
2140  15 115 215 315   -  - 215 15 315 15
2141  30 130 230 330 130 30 230 30 330 30
2142  45 145 245 345   -  - 245 45 345 45
2143  60 160 260 360 160 60 260 60 360 60
2144  75 175 275 375   -  - 275 75 375 75
2145  90 190 290 390 190 90 290 90 390 90
2146   -   -   -   -   -  -   -  - 300  0
2147   -   -   -   -   -  -   -  - 305  5
2148   -   -   -   -   -  -   -  - 310 10
2149   -   -   -   -   -  -   -  - 320 20
2150   -   -   -   -   -  -   -  - 325 25
2151   -   -   -   -   -  -   -  - 335 35
2152   -   -   -   -   -  -   -  - 340 40
2153   -   -   -   -   -  -   -  - 350 50
2154   -   -   -   -   -  -   -  - 355 55
2155   -   -   -   -   -  -   -  - 365 65
2156   -   -   -   -   -  -   -  - 370 70
2157   -   -   -   -   -  -   -  - 380 80
2158   -   -   -   -   -  -   -  - 385 85
2159   -   -   -   -   -  -   -  - 395 95
2160}
2161do_execsql_test joinD-52 {
2162  SELECT t1.*, t2.*, t3.*, t4.*
2163  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2164  INNER JOIN t3 ON t1.c=t3.c AND t3.y>0
2165  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
2166  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2167} {
2168   3 103 203 303   -  - 203  3   -  -
2169   6 106 206 306 106  6 206  6   -  -
2170   9 109 209 309   -  - 209  9   -  -
2171  12 112 212 312 112 12 212 12   -  -
2172  15 115 215 315   -  - 215 15 315 15
2173  18 118 218 318 118 18 218 18   -  -
2174  21 121 221 321   -  - 221 21   -  -
2175  24 124 224 324 124 24 224 24   -  -
2176  27 127 227 327   -  - 227 27   -  -
2177  30 130 230 330 130 30 230 30 330 30
2178  33 133 233 333   -  - 233 33   -  -
2179  36 136 236 336 136 36 236 36   -  -
2180  39 139 239 339   -  - 239 39   -  -
2181  42 142 242 342 142 42 242 42   -  -
2182  45 145 245 345   -  - 245 45 345 45
2183  48 148 248 348 148 48 248 48   -  -
2184  51 151 251 351   -  - 251 51   -  -
2185  54 154 254 354 154 54 254 54   -  -
2186  57 157 257 357   -  - 257 57   -  -
2187  60 160 260 360 160 60 260 60 360 60
2188  63 163 263 363   -  - 263 63   -  -
2189  66 166 266 366 166 66 266 66   -  -
2190  69 169 269 369   -  - 269 69   -  -
2191  72 172 272 372 172 72 272 72   -  -
2192  75 175 275 375   -  - 275 75 375 75
2193  78 178 278 378 178 78 278 78   -  -
2194  81 181 281 381   -  - 281 81   -  -
2195  84 184 284 384 184 84 284 84   -  -
2196  87 187 287 387   -  - 287 87   -  -
2197  90 190 290 390 190 90 290 90 390 90
2198  93 193 293 393   -  - 293 93   -  -
2199   -   -   -   -   -  -   -  - 300  0
2200   -   -   -   -   -  -   -  - 305  5
2201   -   -   -   -   -  -   -  - 310 10
2202   -   -   -   -   -  -   -  - 320 20
2203   -   -   -   -   -  -   -  - 325 25
2204   -   -   -   -   -  -   -  - 335 35
2205   -   -   -   -   -  -   -  - 340 40
2206   -   -   -   -   -  -   -  - 350 50
2207   -   -   -   -   -  -   -  - 355 55
2208   -   -   -   -   -  -   -  - 365 65
2209   -   -   -   -   -  -   -  - 370 70
2210   -   -   -   -   -  -   -  - 380 80
2211   -   -   -   -   -  -   -  - 385 85
2212   -   -   -   -   -  -   -  - 395 95
2213}
2214do_execsql_test joinD-53 {
2215  SELECT t1.*, t2.*, t3.*, t4.*
2216  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2217  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2218  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
2219  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2220} {
2221   5 105 205 305   -  -   -  - 305  5
2222  10 110 210 310 110 10   -  - 310 10
2223  15 115 215 315   -  - 215 15 315 15
2224  20 120 220 320 120 20   -  - 320 20
2225  25 125 225 325   -  -   -  - 325 25
2226  30 130 230 330 130 30 230 30 330 30
2227  35 135 235 335   -  -   -  - 335 35
2228  40 140 240 340 140 40   -  - 340 40
2229  45 145 245 345   -  - 245 45 345 45
2230  50 150 250 350 150 50   -  - 350 50
2231  55 155 255 355   -  -   -  - 355 55
2232  60 160 260 360 160 60 260 60 360 60
2233  65 165 265 365   -  -   -  - 365 65
2234  70 170 270 370 170 70   -  - 370 70
2235  75 175 275 375   -  - 275 75 375 75
2236  80 180 280 380 180 80   -  - 380 80
2237  85 185 285 385   -  -   -  - 385 85
2238  90 190 290 390 190 90 290 90 390 90
2239  95 195 295 395   -  -   -  - 395 95
2240}
2241do_execsql_test joinD-54 {
2242  SELECT t1.*, t2.*, t3.*, t4.*
2243  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2244  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2245  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2246  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2247} {
2248   0 100 200 300   -  -   -  -   -  -
2249   1 101 201 301   -  -   -  -   -  -
2250   2 102 202 302 102  2   -  -   -  -
2251   3 103 203 303   -  - 203  3   -  -
2252   4 104 204 304 104  4   -  -   -  -
2253   5 105 205 305   -  -   -  - 305  5
2254   6 106 206 306 106  6 206  6   -  -
2255   7 107 207 307   -  -   -  -   -  -
2256   8 108 208 308 108  8   -  -   -  -
2257   9 109 209 309   -  - 209  9   -  -
2258  10 110 210 310 110 10   -  - 310 10
2259  11 111 211 311   -  -   -  -   -  -
2260  12 112 212 312 112 12 212 12   -  -
2261  13 113 213 313   -  -   -  -   -  -
2262  14 114 214 314 114 14   -  -   -  -
2263  15 115 215 315   -  - 215 15 315 15
2264  16 116 216 316 116 16   -  -   -  -
2265  17 117 217 317   -  -   -  -   -  -
2266  18 118 218 318 118 18 218 18   -  -
2267  19 119 219 319   -  -   -  -   -  -
2268  20 120 220 320 120 20   -  - 320 20
2269  21 121 221 321   -  - 221 21   -  -
2270  22 122 222 322 122 22   -  -   -  -
2271  23 123 223 323   -  -   -  -   -  -
2272  24 124 224 324 124 24 224 24   -  -
2273  25 125 225 325   -  -   -  - 325 25
2274  26 126 226 326 126 26   -  -   -  -
2275  27 127 227 327   -  - 227 27   -  -
2276  28 128 228 328 128 28   -  -   -  -
2277  29 129 229 329   -  -   -  -   -  -
2278  30 130 230 330 130 30 230 30 330 30
2279  31 131 231 331   -  -   -  -   -  -
2280  32 132 232 332 132 32   -  -   -  -
2281  33 133 233 333   -  - 233 33   -  -
2282  34 134 234 334 134 34   -  -   -  -
2283  35 135 235 335   -  -   -  - 335 35
2284  36 136 236 336 136 36 236 36   -  -
2285  37 137 237 337   -  -   -  -   -  -
2286  38 138 238 338 138 38   -  -   -  -
2287  39 139 239 339   -  - 239 39   -  -
2288  40 140 240 340 140 40   -  - 340 40
2289  41 141 241 341   -  -   -  -   -  -
2290  42 142 242 342 142 42 242 42   -  -
2291  43 143 243 343   -  -   -  -   -  -
2292  44 144 244 344 144 44   -  -   -  -
2293  45 145 245 345   -  - 245 45 345 45
2294  46 146 246 346 146 46   -  -   -  -
2295  47 147 247 347   -  -   -  -   -  -
2296  48 148 248 348 148 48 248 48   -  -
2297  49 149 249 349   -  -   -  -   -  -
2298  50 150 250 350 150 50   -  - 350 50
2299  51 151 251 351   -  - 251 51   -  -
2300  52 152 252 352 152 52   -  -   -  -
2301  53 153 253 353   -  -   -  -   -  -
2302  54 154 254 354 154 54 254 54   -  -
2303  55 155 255 355   -  -   -  - 355 55
2304  56 156 256 356 156 56   -  -   -  -
2305  57 157 257 357   -  - 257 57   -  -
2306  58 158 258 358 158 58   -  -   -  -
2307  59 159 259 359   -  -   -  -   -  -
2308  60 160 260 360 160 60 260 60 360 60
2309  61 161 261 361   -  -   -  -   -  -
2310  62 162 262 362 162 62   -  -   -  -
2311  63 163 263 363   -  - 263 63   -  -
2312  64 164 264 364 164 64   -  -   -  -
2313  65 165 265 365   -  -   -  - 365 65
2314  66 166 266 366 166 66 266 66   -  -
2315  67 167 267 367   -  -   -  -   -  -
2316  68 168 268 368 168 68   -  -   -  -
2317  69 169 269 369   -  - 269 69   -  -
2318  70 170 270 370 170 70   -  - 370 70
2319  71 171 271 371   -  -   -  -   -  -
2320  72 172 272 372 172 72 272 72   -  -
2321  73 173 273 373   -  -   -  -   -  -
2322  74 174 274 374 174 74   -  -   -  -
2323  75 175 275 375   -  - 275 75 375 75
2324  76 176 276 376 176 76   -  -   -  -
2325  77 177 277 377   -  -   -  -   -  -
2326  78 178 278 378 178 78 278 78   -  -
2327  79 179 279 379   -  -   -  -   -  -
2328  80 180 280 380 180 80   -  - 380 80
2329  81 181 281 381   -  - 281 81   -  -
2330  82 182 282 382 182 82   -  -   -  -
2331  83 183 283 383   -  -   -  -   -  -
2332  84 184 284 384 184 84 284 84   -  -
2333  85 185 285 385   -  -   -  - 385 85
2334  86 186 286 386 186 86   -  -   -  -
2335  87 187 287 387   -  - 287 87   -  -
2336  88 188 288 388 188 88   -  -   -  -
2337  89 189 289 389   -  -   -  -   -  -
2338  90 190 290 390 190 90 290 90 390 90
2339  91 191 291 391   -  -   -  -   -  -
2340  92 192 292 392 192 92   -  -   -  -
2341  93 193 293 393   -  - 293 93   -  -
2342  94 194 294 394 194 94   -  -   -  -
2343  95 195 295 395   -  -   -  - 395 95
2344  96   - 296 396   -  -   -  -   -  -
2345  97 197   - 397   -  -   -  -   -  -
2346  98 198 298   -   -  -   -  -   -  -
2347  99   -   -   -   -  -   -  -   -  -
2348   -   -   -   - 100  0   -  -   -  -
2349}
2350do_execsql_test joinD-55 {
2351  SELECT t1.*, t2.*, t3.*, t4.*
2352  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2353  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2354  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2355  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2356} {
2357   5 105 205 305   -  -   -  - 305  5
2358  10 110 210 310 110 10   -  - 310 10
2359  15 115 215 315   -  - 215 15 315 15
2360  20 120 220 320 120 20   -  - 320 20
2361  25 125 225 325   -  -   -  - 325 25
2362  30 130 230 330 130 30 230 30 330 30
2363  35 135 235 335   -  -   -  - 335 35
2364  40 140 240 340 140 40   -  - 340 40
2365  45 145 245 345   -  - 245 45 345 45
2366  50 150 250 350 150 50   -  - 350 50
2367  55 155 255 355   -  -   -  - 355 55
2368  60 160 260 360 160 60 260 60 360 60
2369  65 165 265 365   -  -   -  - 365 65
2370  70 170 270 370 170 70   -  - 370 70
2371  75 175 275 375   -  - 275 75 375 75
2372  80 180 280 380 180 80   -  - 380 80
2373  85 185 285 385   -  -   -  - 385 85
2374  90 190 290 390 190 90 290 90 390 90
2375  95 195 295 395   -  -   -  - 395 95
2376   -   -   -   -   -  -   -  - 300  0
2377}
2378do_execsql_test joinD-56 {
2379  SELECT t1.*, t2.*, t3.*, t4.*
2380  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2381  LEFT JOIN t3 ON t1.c=t3.c AND t3.y>0
2382  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
2383  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2384} {
2385   0 100 200 300   -  -   -  -   -  -
2386   1 101 201 301   -  -   -  -   -  -
2387   2 102 202 302 102  2   -  -   -  -
2388   3 103 203 303   -  - 203  3   -  -
2389   4 104 204 304 104  4   -  -   -  -
2390   5 105 205 305   -  -   -  - 305  5
2391   6 106 206 306 106  6 206  6   -  -
2392   7 107 207 307   -  -   -  -   -  -
2393   8 108 208 308 108  8   -  -   -  -
2394   9 109 209 309   -  - 209  9   -  -
2395  10 110 210 310 110 10   -  - 310 10
2396  11 111 211 311   -  -   -  -   -  -
2397  12 112 212 312 112 12 212 12   -  -
2398  13 113 213 313   -  -   -  -   -  -
2399  14 114 214 314 114 14   -  -   -  -
2400  15 115 215 315   -  - 215 15 315 15
2401  16 116 216 316 116 16   -  -   -  -
2402  17 117 217 317   -  -   -  -   -  -
2403  18 118 218 318 118 18 218 18   -  -
2404  19 119 219 319   -  -   -  -   -  -
2405  20 120 220 320 120 20   -  - 320 20
2406  21 121 221 321   -  - 221 21   -  -
2407  22 122 222 322 122 22   -  -   -  -
2408  23 123 223 323   -  -   -  -   -  -
2409  24 124 224 324 124 24 224 24   -  -
2410  25 125 225 325   -  -   -  - 325 25
2411  26 126 226 326 126 26   -  -   -  -
2412  27 127 227 327   -  - 227 27   -  -
2413  28 128 228 328 128 28   -  -   -  -
2414  29 129 229 329   -  -   -  -   -  -
2415  30 130 230 330 130 30 230 30 330 30
2416  31 131 231 331   -  -   -  -   -  -
2417  32 132 232 332 132 32   -  -   -  -
2418  33 133 233 333   -  - 233 33   -  -
2419  34 134 234 334 134 34   -  -   -  -
2420  35 135 235 335   -  -   -  - 335 35
2421  36 136 236 336 136 36 236 36   -  -
2422  37 137 237 337   -  -   -  -   -  -
2423  38 138 238 338 138 38   -  -   -  -
2424  39 139 239 339   -  - 239 39   -  -
2425  40 140 240 340 140 40   -  - 340 40
2426  41 141 241 341   -  -   -  -   -  -
2427  42 142 242 342 142 42 242 42   -  -
2428  43 143 243 343   -  -   -  -   -  -
2429  44 144 244 344 144 44   -  -   -  -
2430  45 145 245 345   -  - 245 45 345 45
2431  46 146 246 346 146 46   -  -   -  -
2432  47 147 247 347   -  -   -  -   -  -
2433  48 148 248 348 148 48 248 48   -  -
2434  49 149 249 349   -  -   -  -   -  -
2435  50 150 250 350 150 50   -  - 350 50
2436  51 151 251 351   -  - 251 51   -  -
2437  52 152 252 352 152 52   -  -   -  -
2438  53 153 253 353   -  -   -  -   -  -
2439  54 154 254 354 154 54 254 54   -  -
2440  55 155 255 355   -  -   -  - 355 55
2441  56 156 256 356 156 56   -  -   -  -
2442  57 157 257 357   -  - 257 57   -  -
2443  58 158 258 358 158 58   -  -   -  -
2444  59 159 259 359   -  -   -  -   -  -
2445  60 160 260 360 160 60 260 60 360 60
2446  61 161 261 361   -  -   -  -   -  -
2447  62 162 262 362 162 62   -  -   -  -
2448  63 163 263 363   -  - 263 63   -  -
2449  64 164 264 364 164 64   -  -   -  -
2450  65 165 265 365   -  -   -  - 365 65
2451  66 166 266 366 166 66 266 66   -  -
2452  67 167 267 367   -  -   -  -   -  -
2453  68 168 268 368 168 68   -  -   -  -
2454  69 169 269 369   -  - 269 69   -  -
2455  70 170 270 370 170 70   -  - 370 70
2456  71 171 271 371   -  -   -  -   -  -
2457  72 172 272 372 172 72 272 72   -  -
2458  73 173 273 373   -  -   -  -   -  -
2459  74 174 274 374 174 74   -  -   -  -
2460  75 175 275 375   -  - 275 75 375 75
2461  76 176 276 376 176 76   -  -   -  -
2462  77 177 277 377   -  -   -  -   -  -
2463  78 178 278 378 178 78 278 78   -  -
2464  79 179 279 379   -  -   -  -   -  -
2465  80 180 280 380 180 80   -  - 380 80
2466  81 181 281 381   -  - 281 81   -  -
2467  82 182 282 382 182 82   -  -   -  -
2468  83 183 283 383   -  -   -  -   -  -
2469  84 184 284 384 184 84 284 84   -  -
2470  85 185 285 385   -  -   -  - 385 85
2471  86 186 286 386 186 86   -  -   -  -
2472  87 187 287 387   -  - 287 87   -  -
2473  88 188 288 388 188 88   -  -   -  -
2474  89 189 289 389   -  -   -  -   -  -
2475  90 190 290 390 190 90 290 90 390 90
2476  91 191 291 391   -  -   -  -   -  -
2477  92 192 292 392 192 92   -  -   -  -
2478  93 193 293 393   -  - 293 93   -  -
2479  94 194 294 394 194 94   -  -   -  -
2480  95 195 295 395   -  -   -  - 395 95
2481  96   - 296 396   -  -   -  -   -  -
2482  97 197   - 397   -  -   -  -   -  -
2483  98 198 298   -   -  -   -  -   -  -
2484  99   -   -   -   -  -   -  -   -  -
2485   -   -   -   - 100  0   -  -   -  -
2486   -   -   -   -   -  -   -  - 300  0
2487}
2488do_execsql_test joinD-57 {
2489  SELECT t1.*, t2.*, t3.*, t4.*
2490  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2491  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
2492  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
2493  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2494} {
2495  15 115 215 315   -  - 215 15 315 15
2496  30 130 230 330 130 30 230 30 330 30
2497  45 145 245 345   -  - 245 45 345 45
2498  60 160 260 360 160 60 260 60 360 60
2499  75 175 275 375   -  - 275 75 375 75
2500  90 190 290 390 190 90 290 90 390 90
2501}
2502do_execsql_test joinD-58 {
2503  SELECT t1.*, t2.*, t3.*, t4.*
2504  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2505  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
2506  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2507  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2508} {
2509   3 103 203 303   -  - 203  3   -  -
2510   6 106 206 306 106  6 206  6   -  -
2511   9 109 209 309   -  - 209  9   -  -
2512  12 112 212 312 112 12 212 12   -  -
2513  15 115 215 315   -  - 215 15 315 15
2514  18 118 218 318 118 18 218 18   -  -
2515  21 121 221 321   -  - 221 21   -  -
2516  24 124 224 324 124 24 224 24   -  -
2517  27 127 227 327   -  - 227 27   -  -
2518  30 130 230 330 130 30 230 30 330 30
2519  33 133 233 333   -  - 233 33   -  -
2520  36 136 236 336 136 36 236 36   -  -
2521  39 139 239 339   -  - 239 39   -  -
2522  42 142 242 342 142 42 242 42   -  -
2523  45 145 245 345   -  - 245 45 345 45
2524  48 148 248 348 148 48 248 48   -  -
2525  51 151 251 351   -  - 251 51   -  -
2526  54 154 254 354 154 54 254 54   -  -
2527  57 157 257 357   -  - 257 57   -  -
2528  60 160 260 360 160 60 260 60 360 60
2529  63 163 263 363   -  - 263 63   -  -
2530  66 166 266 366 166 66 266 66   -  -
2531  69 169 269 369   -  - 269 69   -  -
2532  72 172 272 372 172 72 272 72   -  -
2533  75 175 275 375   -  - 275 75 375 75
2534  78 178 278 378 178 78 278 78   -  -
2535  81 181 281 381   -  - 281 81   -  -
2536  84 184 284 384 184 84 284 84   -  -
2537  87 187 287 387   -  - 287 87   -  -
2538  90 190 290 390 190 90 290 90 390 90
2539  93 193 293 393   -  - 293 93   -  -
2540   -   -   -   -   -  - 200  0   -  -
2541}
2542do_execsql_test joinD-59 {
2543  SELECT t1.*, t2.*, t3.*, t4.*
2544  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2545  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
2546  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2547  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2548} {
2549  15 115 215 315   -  - 215 15 315 15
2550  30 130 230 330 130 30 230 30 330 30
2551  45 145 245 345   -  - 245 45 345 45
2552  60 160 260 360 160 60 260 60 360 60
2553  75 175 275 375   -  - 275 75 375 75
2554  90 190 290 390 190 90 290 90 390 90
2555   -   -   -   -   -  -   -  - 300  0
2556   -   -   -   -   -  -   -  - 305  5
2557   -   -   -   -   -  -   -  - 310 10
2558   -   -   -   -   -  -   -  - 320 20
2559   -   -   -   -   -  -   -  - 325 25
2560   -   -   -   -   -  -   -  - 335 35
2561   -   -   -   -   -  -   -  - 340 40
2562   -   -   -   -   -  -   -  - 350 50
2563   -   -   -   -   -  -   -  - 355 55
2564   -   -   -   -   -  -   -  - 365 65
2565   -   -   -   -   -  -   -  - 370 70
2566   -   -   -   -   -  -   -  - 380 80
2567   -   -   -   -   -  -   -  - 385 85
2568   -   -   -   -   -  -   -  - 395 95
2569}
2570do_execsql_test joinD-60 {
2571  SELECT t1.*, t2.*, t3.*, t4.*
2572  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2573  RIGHT JOIN t3 ON t1.c=t3.c AND t3.y>0
2574  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
2575  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2576} {
2577   3 103 203 303   -  - 203  3   -  -
2578   6 106 206 306 106  6 206  6   -  -
2579   9 109 209 309   -  - 209  9   -  -
2580  12 112 212 312 112 12 212 12   -  -
2581  15 115 215 315   -  - 215 15 315 15
2582  18 118 218 318 118 18 218 18   -  -
2583  21 121 221 321   -  - 221 21   -  -
2584  24 124 224 324 124 24 224 24   -  -
2585  27 127 227 327   -  - 227 27   -  -
2586  30 130 230 330 130 30 230 30 330 30
2587  33 133 233 333   -  - 233 33   -  -
2588  36 136 236 336 136 36 236 36   -  -
2589  39 139 239 339   -  - 239 39   -  -
2590  42 142 242 342 142 42 242 42   -  -
2591  45 145 245 345   -  - 245 45 345 45
2592  48 148 248 348 148 48 248 48   -  -
2593  51 151 251 351   -  - 251 51   -  -
2594  54 154 254 354 154 54 254 54   -  -
2595  57 157 257 357   -  - 257 57   -  -
2596  60 160 260 360 160 60 260 60 360 60
2597  63 163 263 363   -  - 263 63   -  -
2598  66 166 266 366 166 66 266 66   -  -
2599  69 169 269 369   -  - 269 69   -  -
2600  72 172 272 372 172 72 272 72   -  -
2601  75 175 275 375   -  - 275 75 375 75
2602  78 178 278 378 178 78 278 78   -  -
2603  81 181 281 381   -  - 281 81   -  -
2604  84 184 284 384 184 84 284 84   -  -
2605  87 187 287 387   -  - 287 87   -  -
2606  90 190 290 390 190 90 290 90 390 90
2607  93 193 293 393   -  - 293 93   -  -
2608   -   -   -   -   -  - 200  0   -  -
2609   -   -   -   -   -  -   -  - 300  0
2610   -   -   -   -   -  -   -  - 305  5
2611   -   -   -   -   -  -   -  - 310 10
2612   -   -   -   -   -  -   -  - 320 20
2613   -   -   -   -   -  -   -  - 325 25
2614   -   -   -   -   -  -   -  - 335 35
2615   -   -   -   -   -  -   -  - 340 40
2616   -   -   -   -   -  -   -  - 350 50
2617   -   -   -   -   -  -   -  - 355 55
2618   -   -   -   -   -  -   -  - 365 65
2619   -   -   -   -   -  -   -  - 370 70
2620   -   -   -   -   -  -   -  - 380 80
2621   -   -   -   -   -  -   -  - 385 85
2622   -   -   -   -   -  -   -  - 395 95
2623}
2624do_execsql_test joinD-61 {
2625  SELECT t1.*, t2.*, t3.*, t4.*
2626  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2627  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
2628  INNER JOIN t4 ON t1.d=t4.d AND t4.z>0
2629  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2630} {
2631   5 105 205 305   -  -   -  - 305  5
2632  10 110 210 310 110 10   -  - 310 10
2633  15 115 215 315   -  - 215 15 315 15
2634  20 120 220 320 120 20   -  - 320 20
2635  25 125 225 325   -  -   -  - 325 25
2636  30 130 230 330 130 30 230 30 330 30
2637  35 135 235 335   -  -   -  - 335 35
2638  40 140 240 340 140 40   -  - 340 40
2639  45 145 245 345   -  - 245 45 345 45
2640  50 150 250 350 150 50   -  - 350 50
2641  55 155 255 355   -  -   -  - 355 55
2642  60 160 260 360 160 60 260 60 360 60
2643  65 165 265 365   -  -   -  - 365 65
2644  70 170 270 370 170 70   -  - 370 70
2645  75 175 275 375   -  - 275 75 375 75
2646  80 180 280 380 180 80   -  - 380 80
2647  85 185 285 385   -  -   -  - 385 85
2648  90 190 290 390 190 90 290 90 390 90
2649  95 195 295 395   -  -   -  - 395 95
2650}
2651do_execsql_test joinD-62 {
2652  SELECT t1.*, t2.*, t3.*, t4.*
2653  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2654  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
2655  LEFT JOIN t4 ON t1.d=t4.d AND t4.z>0
2656  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2657} {
2658   0 100 200 300   -  -   -  -   -  -
2659   1 101 201 301   -  -   -  -   -  -
2660   2 102 202 302 102  2   -  -   -  -
2661   3 103 203 303   -  - 203  3   -  -
2662   4 104 204 304 104  4   -  -   -  -
2663   5 105 205 305   -  -   -  - 305  5
2664   6 106 206 306 106  6 206  6   -  -
2665   7 107 207 307   -  -   -  -   -  -
2666   8 108 208 308 108  8   -  -   -  -
2667   9 109 209 309   -  - 209  9   -  -
2668  10 110 210 310 110 10   -  - 310 10
2669  11 111 211 311   -  -   -  -   -  -
2670  12 112 212 312 112 12 212 12   -  -
2671  13 113 213 313   -  -   -  -   -  -
2672  14 114 214 314 114 14   -  -   -  -
2673  15 115 215 315   -  - 215 15 315 15
2674  16 116 216 316 116 16   -  -   -  -
2675  17 117 217 317   -  -   -  -   -  -
2676  18 118 218 318 118 18 218 18   -  -
2677  19 119 219 319   -  -   -  -   -  -
2678  20 120 220 320 120 20   -  - 320 20
2679  21 121 221 321   -  - 221 21   -  -
2680  22 122 222 322 122 22   -  -   -  -
2681  23 123 223 323   -  -   -  -   -  -
2682  24 124 224 324 124 24 224 24   -  -
2683  25 125 225 325   -  -   -  - 325 25
2684  26 126 226 326 126 26   -  -   -  -
2685  27 127 227 327   -  - 227 27   -  -
2686  28 128 228 328 128 28   -  -   -  -
2687  29 129 229 329   -  -   -  -   -  -
2688  30 130 230 330 130 30 230 30 330 30
2689  31 131 231 331   -  -   -  -   -  -
2690  32 132 232 332 132 32   -  -   -  -
2691  33 133 233 333   -  - 233 33   -  -
2692  34 134 234 334 134 34   -  -   -  -
2693  35 135 235 335   -  -   -  - 335 35
2694  36 136 236 336 136 36 236 36   -  -
2695  37 137 237 337   -  -   -  -   -  -
2696  38 138 238 338 138 38   -  -   -  -
2697  39 139 239 339   -  - 239 39   -  -
2698  40 140 240 340 140 40   -  - 340 40
2699  41 141 241 341   -  -   -  -   -  -
2700  42 142 242 342 142 42 242 42   -  -
2701  43 143 243 343   -  -   -  -   -  -
2702  44 144 244 344 144 44   -  -   -  -
2703  45 145 245 345   -  - 245 45 345 45
2704  46 146 246 346 146 46   -  -   -  -
2705  47 147 247 347   -  -   -  -   -  -
2706  48 148 248 348 148 48 248 48   -  -
2707  49 149 249 349   -  -   -  -   -  -
2708  50 150 250 350 150 50   -  - 350 50
2709  51 151 251 351   -  - 251 51   -  -
2710  52 152 252 352 152 52   -  -   -  -
2711  53 153 253 353   -  -   -  -   -  -
2712  54 154 254 354 154 54 254 54   -  -
2713  55 155 255 355   -  -   -  - 355 55
2714  56 156 256 356 156 56   -  -   -  -
2715  57 157 257 357   -  - 257 57   -  -
2716  58 158 258 358 158 58   -  -   -  -
2717  59 159 259 359   -  -   -  -   -  -
2718  60 160 260 360 160 60 260 60 360 60
2719  61 161 261 361   -  -   -  -   -  -
2720  62 162 262 362 162 62   -  -   -  -
2721  63 163 263 363   -  - 263 63   -  -
2722  64 164 264 364 164 64   -  -   -  -
2723  65 165 265 365   -  -   -  - 365 65
2724  66 166 266 366 166 66 266 66   -  -
2725  67 167 267 367   -  -   -  -   -  -
2726  68 168 268 368 168 68   -  -   -  -
2727  69 169 269 369   -  - 269 69   -  -
2728  70 170 270 370 170 70   -  - 370 70
2729  71 171 271 371   -  -   -  -   -  -
2730  72 172 272 372 172 72 272 72   -  -
2731  73 173 273 373   -  -   -  -   -  -
2732  74 174 274 374 174 74   -  -   -  -
2733  75 175 275 375   -  - 275 75 375 75
2734  76 176 276 376 176 76   -  -   -  -
2735  77 177 277 377   -  -   -  -   -  -
2736  78 178 278 378 178 78 278 78   -  -
2737  79 179 279 379   -  -   -  -   -  -
2738  80 180 280 380 180 80   -  - 380 80
2739  81 181 281 381   -  - 281 81   -  -
2740  82 182 282 382 182 82   -  -   -  -
2741  83 183 283 383   -  -   -  -   -  -
2742  84 184 284 384 184 84 284 84   -  -
2743  85 185 285 385   -  -   -  - 385 85
2744  86 186 286 386 186 86   -  -   -  -
2745  87 187 287 387   -  - 287 87   -  -
2746  88 188 288 388 188 88   -  -   -  -
2747  89 189 289 389   -  -   -  -   -  -
2748  90 190 290 390 190 90 290 90 390 90
2749  91 191 291 391   -  -   -  -   -  -
2750  92 192 292 392 192 92   -  -   -  -
2751  93 193 293 393   -  - 293 93   -  -
2752  94 194 294 394 194 94   -  -   -  -
2753  95 195 295 395   -  -   -  - 395 95
2754  96   - 296 396   -  -   -  -   -  -
2755  97 197   - 397   -  -   -  -   -  -
2756  98 198 298   -   -  -   -  -   -  -
2757  99   -   -   -   -  -   -  -   -  -
2758   -   -   -   - 100  0   -  -   -  -
2759   -   -   -   -   -  - 200  0   -  -
2760}
2761do_execsql_test joinD-63 {
2762  SELECT t1.*, t2.*, t3.*, t4.*
2763  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2764  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
2765  RIGHT JOIN t4 ON t1.d=t4.d AND t4.z>0
2766  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2767} {
2768   5 105 205 305   -  -   -  - 305  5
2769  10 110 210 310 110 10   -  - 310 10
2770  15 115 215 315   -  - 215 15 315 15
2771  20 120 220 320 120 20   -  - 320 20
2772  25 125 225 325   -  -   -  - 325 25
2773  30 130 230 330 130 30 230 30 330 30
2774  35 135 235 335   -  -   -  - 335 35
2775  40 140 240 340 140 40   -  - 340 40
2776  45 145 245 345   -  - 245 45 345 45
2777  50 150 250 350 150 50   -  - 350 50
2778  55 155 255 355   -  -   -  - 355 55
2779  60 160 260 360 160 60 260 60 360 60
2780  65 165 265 365   -  -   -  - 365 65
2781  70 170 270 370 170 70   -  - 370 70
2782  75 175 275 375   -  - 275 75 375 75
2783  80 180 280 380 180 80   -  - 380 80
2784  85 185 285 385   -  -   -  - 385 85
2785  90 190 290 390 190 90 290 90 390 90
2786  95 195 295 395   -  -   -  - 395 95
2787   -   -   -   -   -  -   -  - 300  0
2788}
2789do_execsql_test joinD-64 {
2790  SELECT t1.*, t2.*, t3.*, t4.*
2791  FROM t1 FULL JOIN t2 ON t1.b=t2.b AND t2.x>0
2792  FULL JOIN t3 ON t1.c=t3.c AND t3.y>0
2793  FULL JOIN t4 ON t1.d=t4.d AND t4.z>0
2794  ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);
2795} {
2796   0 100 200 300   -  -   -  -   -  -
2797   1 101 201 301   -  -   -  -   -  -
2798   2 102 202 302 102  2   -  -   -  -
2799   3 103 203 303   -  - 203  3   -  -
2800   4 104 204 304 104  4   -  -   -  -
2801   5 105 205 305   -  -   -  - 305  5
2802   6 106 206 306 106  6 206  6   -  -
2803   7 107 207 307   -  -   -  -   -  -
2804   8 108 208 308 108  8   -  -   -  -
2805   9 109 209 309   -  - 209  9   -  -
2806  10 110 210 310 110 10   -  - 310 10
2807  11 111 211 311   -  -   -  -   -  -
2808  12 112 212 312 112 12 212 12   -  -
2809  13 113 213 313   -  -   -  -   -  -
2810  14 114 214 314 114 14   -  -   -  -
2811  15 115 215 315   -  - 215 15 315 15
2812  16 116 216 316 116 16   -  -   -  -
2813  17 117 217 317   -  -   -  -   -  -
2814  18 118 218 318 118 18 218 18   -  -
2815  19 119 219 319   -  -   -  -   -  -
2816  20 120 220 320 120 20   -  - 320 20
2817  21 121 221 321   -  - 221 21   -  -
2818  22 122 222 322 122 22   -  -   -  -
2819  23 123 223 323   -  -   -  -   -  -
2820  24 124 224 324 124 24 224 24   -  -
2821  25 125 225 325   -  -   -  - 325 25
2822  26 126 226 326 126 26   -  -   -  -
2823  27 127 227 327   -  - 227 27   -  -
2824  28 128 228 328 128 28   -  -   -  -
2825  29 129 229 329   -  -   -  -   -  -
2826  30 130 230 330 130 30 230 30 330 30
2827  31 131 231 331   -  -   -  -   -  -
2828  32 132 232 332 132 32   -  -   -  -
2829  33 133 233 333   -  - 233 33   -  -
2830  34 134 234 334 134 34   -  -   -  -
2831  35 135 235 335   -  -   -  - 335 35
2832  36 136 236 336 136 36 236 36   -  -
2833  37 137 237 337   -  -   -  -   -  -
2834  38 138 238 338 138 38   -  -   -  -
2835  39 139 239 339   -  - 239 39   -  -
2836  40 140 240 340 140 40   -  - 340 40
2837  41 141 241 341   -  -   -  -   -  -
2838  42 142 242 342 142 42 242 42   -  -
2839  43 143 243 343   -  -   -  -   -  -
2840  44 144 244 344 144 44   -  -   -  -
2841  45 145 245 345   -  - 245 45 345 45
2842  46 146 246 346 146 46   -  -   -  -
2843  47 147 247 347   -  -   -  -   -  -
2844  48 148 248 348 148 48 248 48   -  -
2845  49 149 249 349   -  -   -  -   -  -
2846  50 150 250 350 150 50   -  - 350 50
2847  51 151 251 351   -  - 251 51   -  -
2848  52 152 252 352 152 52   -  -   -  -
2849  53 153 253 353   -  -   -  -   -  -
2850  54 154 254 354 154 54 254 54   -  -
2851  55 155 255 355   -  -   -  - 355 55
2852  56 156 256 356 156 56   -  -   -  -
2853  57 157 257 357   -  - 257 57   -  -
2854  58 158 258 358 158 58   -  -   -  -
2855  59 159 259 359   -  -   -  -   -  -
2856  60 160 260 360 160 60 260 60 360 60
2857  61 161 261 361   -  -   -  -   -  -
2858  62 162 262 362 162 62   -  -   -  -
2859  63 163 263 363   -  - 263 63   -  -
2860  64 164 264 364 164 64   -  -   -  -
2861  65 165 265 365   -  -   -  - 365 65
2862  66 166 266 366 166 66 266 66   -  -
2863  67 167 267 367   -  -   -  -   -  -
2864  68 168 268 368 168 68   -  -   -  -
2865  69 169 269 369   -  - 269 69   -  -
2866  70 170 270 370 170 70   -  - 370 70
2867  71 171 271 371   -  -   -  -   -  -
2868  72 172 272 372 172 72 272 72   -  -
2869  73 173 273 373   -  -   -  -   -  -
2870  74 174 274 374 174 74   -  -   -  -
2871  75 175 275 375   -  - 275 75 375 75
2872  76 176 276 376 176 76   -  -   -  -
2873  77 177 277 377   -  -   -  -   -  -
2874  78 178 278 378 178 78 278 78   -  -
2875  79 179 279 379   -  -   -  -   -  -
2876  80 180 280 380 180 80   -  - 380 80
2877  81 181 281 381   -  - 281 81   -  -
2878  82 182 282 382 182 82   -  -   -  -
2879  83 183 283 383   -  -   -  -   -  -
2880  84 184 284 384 184 84 284 84   -  -
2881  85 185 285 385   -  -   -  - 385 85
2882  86 186 286 386 186 86   -  -   -  -
2883  87 187 287 387   -  - 287 87   -  -
2884  88 188 288 388 188 88   -  -   -  -
2885  89 189 289 389   -  -   -  -   -  -
2886  90 190 290 390 190 90 290 90 390 90
2887  91 191 291 391   -  -   -  -   -  -
2888  92 192 292 392 192 92   -  -   -  -
2889  93 193 293 393   -  - 293 93   -  -
2890  94 194 294 394 194 94   -  -   -  -
2891  95 195 295 395   -  -   -  - 395 95
2892  96   - 296 396   -  -   -  -   -  -
2893  97 197   - 397   -  -   -  -   -  -
2894  98 198 298   -   -  -   -  -   -  -
2895  99   -   -   -   -  -   -  -   -  -
2896   -   -   -   - 100  0   -  -   -  -
2897   -   -   -   -   -  - 200  0   -  -
2898   -   -   -   -   -  -   -  - 300  0
2899}
2900finish_test
2901#############################################################################
2902# This is the TCL script used to generate the psql script that generated
2903# the data above.
2904#
2905# puts "
2906# \\pset border off
2907# \\pset tuples_only on
2908# \\pset null -
2909#
2910# DROP TABLE IF EXISTS t1;
2911# DROP TABLE IF EXISTS t2;
2912# DROP TABLE IF EXISTS t3;
2913# DROP TABLE IF EXISTS t4;
2914# CREATE TABLE t1(a INT, b INT, c INT, d INT);
2915# WITH RECURSIVE c(x) AS (VALUES(0) UNION ALL SELECT x+1 FROM c WHERE x<95)
2916#   INSERT INTO t1(a,b,c,d) SELECT x, x+100, x+200, x+300 FROM c;
2917# CREATE TABLE t2(b INT, x INT);
2918# INSERT INTO t2(b,x) SELECT b, a FROM t1 WHERE a%2=0;
2919# CREATE INDEX t2b ON t2(b);
2920# CREATE TABLE t3(c INT, y INT);
2921# INSERT INTO t3(c,y) SELECT c, a FROM t1 WHERE a%3=0;
2922# CREATE INDEX t3c ON t3(c);
2923# CREATE TABLE t4(d INT, z INT);
2924# INSERT INTO t4(d,z) SELECT d, a FROM t1 WHERE a%5=0;
2925# CREATE INDEX t4d ON t4(d);
2926# INSERT INTO t1(a,b,c,d) VALUES
2927#   (96,NULL,296,396),
2928#   (97,197,NULL,397),
2929#   (98,198,298,NULL),
2930#   (99,NULL,NULL,NULL);
2931# "
2932#
2933# proc echo {prefix txt} {
2934#   regsub -all {\n} $txt \n$prefix txt
2935#   puts "$prefix$txt"
2936# }
2937#
2938# set n 0
2939# set k 0
2940# foreach j1 {INNER LEFT RIGHT FULL} {
2941#   foreach j2 {INNER LEFT RIGHT FULL} {
2942#     foreach j3 {INNER LEFT RIGHT FULL} {
2943#
2944# incr n
2945# incr k
2946# set q1 ""
2947# append q1 "SELECT t1.*, t2.*, t3.*, t4.*\n"
2948# append q1 "  FROM t1 $j1 JOIN t2 ON t1.b=t2.b AND t2.x>0\n"
2949# append q1 "          $j2 JOIN t3 ON t1.c=t3.c AND t3.y>0\n"
2950# append q1 "          $j3 JOIN t4 ON t1.d=t4.d AND t4.z>0\n"
2951# append q1 " ORDER BY coalesce(t1.a,t2.b,t3.c,t4.d,0);"
2952#
2953# echo "\\qecho " "do_execsql_test joinB-$n \{"
2954# echo "\\qecho X  " $q1
2955# echo "\\qecho " "\} \{"
2956# puts $q1
2957# echo "\\qecho " "\}"
2958#
2959#     }
2960#   }
2961# }
2962