~drizzle-trunk/drizzle/development

1 by brian
clean slate
1
--disable_warnings
2
DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5,t6,t7,t8,t9;
3
--enable_warnings
4
5
CREATE TABLE t0 (a int, b int, c int);
6
CREATE TABLE t1 (a int, b int, c int);
7
CREATE TABLE t2 (a int, b int, c int);
8
CREATE TABLE t3 (a int, b int, c int);
9
CREATE TABLE t4 (a int, b int, c int);
10
CREATE TABLE t5 (a int, b int, c int);
11
CREATE TABLE t6 (a int, b int, c int);
12
CREATE TABLE t7 (a int, b int, c int);
13
CREATE TABLE t8 (a int, b int, c int);
14
CREATE TABLE t9 (a int, b int, c int);
15
16
INSERT INTO t0 VALUES (1,1,0), (1,2,0), (2,2,0);
17
INSERT INTO t1 VALUES (1,3,0), (2,2,0), (3,2,0);
18
INSERT INTO t2 VALUES (3,3,0), (4,2,0), (5,3,0);
19
INSERT INTO t3 VALUES (1,2,0), (2,2,0);
20
INSERT INTO t4 VALUES (3,2,0), (4,2,0);
21
INSERT INTO t5 VALUES (3,1,0), (2,2,0), (3,3,0);
22
INSERT INTO t6 VALUES (3,2,0), (6,2,0), (6,1,0);
23
INSERT INTO t7 VALUES (1,1,0), (2,2,0);
24
INSERT INTO t8 VALUES (0,2,0), (1,2,0);
25
INSERT INTO t9 VALUES (1,1,0), (1,2,0), (3,3,0);
26
27
28
SELECT t2.a,t2.b
29
  FROM t2;
30
31
SELECT t3.a,t3.b
32
  FROM t3;
33
34
SELECT t4.a,t4.b
35
  FROM t4;
36
37
--error ER_CARTESIAN_JOIN_ATTEMPTED
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
38
SELECT t3.a,t3.b,t4.a,t4.b
1 by brian
clean slate
39
  FROM t3,t4;
40
41
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
42
  FROM t2
43
       LEFT JOIN              
44
       (t3, t4)
45
       ON t2.b=t4.b;
46
47
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
48
  FROM t2
49
       LEFT JOIN              
50
       (t3, t4)
51
       ON t3.a=1 AND t2.b=t4.b;
52
53
EXPLAIN EXTENDED
54
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
55
  FROM t2
56
       LEFT JOIN              
57
       (t3, t4)
58
       ON t2.b=t4.b
59
    WHERE t3.a=1 OR t3.c IS NULL;
60
61
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
62
  FROM t2
63
       LEFT JOIN              
64
       (t3, t4)
65
       ON t2.b=t4.b
66
    WHERE t3.a=1 OR t3.c IS NULL;
67
68
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
69
  FROM t2
70
       LEFT JOIN              
71
       (t3, t4)
72
       ON t2.b=t4.b
73
    WHERE t3.a>1 OR t3.c IS NULL;
74
75
SELECT t5.a,t5.b
76
  FROM t5;
77
78
--error ER_CARTESIAN_JOIN_ATTEMPTED
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
79
SELECT t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
1 by brian
clean slate
80
  FROM t3,t4,t5;
81
82
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
83
  FROM t2
84
       LEFT JOIN              
85
       (t3, t4, t5)
86
       ON t2.b=t4.b;
87
88
EXPLAIN EXTENDED
89
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
90
  FROM t2
91
       LEFT JOIN              
92
       (t3, t4, t5)
93
       ON t2.b=t4.b
94
    WHERE t3.a>1 OR t3.c IS NULL;
95
96
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
97
  FROM t2
98
       LEFT JOIN              
99
       (t3, t4, t5)
100
       ON t2.b=t4.b
101
    WHERE t3.a>1 OR t3.c IS NULL;
102
103
EXPLAIN EXTENDED
104
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
105
  FROM t2
106
       LEFT JOIN              
107
       (t3, t4, t5)
108
       ON t2.b=t4.b
109
    WHERE (t3.a>1 OR t3.c IS NULL) AND 
110
          (t5.a<3 OR t5.c IS NULL);
111
112
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
113
  FROM t2
114
       LEFT JOIN              
115
       (t3, t4, t5)
116
       ON t2.b=t4.b
117
    WHERE (t3.a>1 OR t3.c IS NULL) AND 
118
          (t5.a<3 OR t5.c IS NULL);
119
120
SELECT t6.a,t6.b
121
  FROM t6;
122
123
SELECT t7.a,t7.b
124
  FROM t7;
125
126
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
127
SELECT t6.a,t6.b,t7.a,t7.b
1 by brian
clean slate
128
  FROM t6 CROSS JOIN t7;
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
129
1 by brian
clean slate
130
SELECT t8.a,t8.b
131
  FROM t8;
132
133
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
134
EXPLAIN EXTENDED
1 by brian
clean slate
135
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
136
  FROM (t6, t7)
137
       LEFT JOIN 
138
       t8
139
       ON t7.b=t8.b AND t6.b < 10;
140
141
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
142
  FROM (t6, t7)
143
       LEFT JOIN 
144
       t8
145
       ON t7.b=t8.b AND t6.b < 10;
146
147
SELECT t5.a,t5.b
148
  FROM t5;
149
150
SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
151
  FROM t5 
152
       LEFT JOIN 
153
       ( 
154
         (t6, t7)
155
         LEFT JOIN 
156
         t8
157
         ON t7.b=t8.b AND t6.b < 10
158
       )
159
       ON t6.b >= 2 AND t5.b=t7.b;
160
161
--select_sorted
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
162
SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
1 by brian
clean slate
163
  FROM t5 
164
       LEFT JOIN 
165
       ( 
166
         (t6, t7)
167
         LEFT JOIN 
168
         t8
169
         ON t7.b=t8.b AND t6.b < 10
170
       )
171
       ON t6.b >= 2 AND t5.b=t7.b AND
172
          (t8.a < 1 OR t8.c IS NULL);
173
174
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
175
  FROM t2
176
       LEFT JOIN              
177
       (t3, t4)
178
       ON t3.a=1 AND t2.b=t4.b;
179
180
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
181
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
182
  FROM t2
183
       LEFT JOIN              
184
       (t3, t4)
185
       ON t3.a=1 AND t2.b=t4.b,
186
       t5 
187
       LEFT JOIN 
188
       ( 
189
         (t6, t7)
190
         LEFT JOIN 
191
         t8
192
         ON t7.b=t8.b AND t6.b < 10
193
       )
194
       ON t6.b >= 2 AND t5.b=t7.b; 
195
196
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
197
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
1 by brian
clean slate
198
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
199
  FROM t2
200
       LEFT JOIN              
201
       (t3, t4)
202
       ON t3.a=1 AND t2.b=t4.b,
203
       t5 
204
       LEFT JOIN 
205
       ( 
206
         (t6, t7)
207
         LEFT JOIN 
208
         t8
209
         ON t7.b=t8.b AND t6.b < 10
210
       )
211
       ON t6.b >= 2 AND t5.b=t7.b
212
    WHERE t2.a > 3 AND
213
          (t6.a < 6 OR t6.c IS NULL);
214
215
SELECT t1.a,t1.b
216
  FROM t1;
217
218
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
219
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
220
  FROM t1
221
       LEFT JOIN                
222
       ( 
223
         t2
224
         LEFT JOIN              
225
         (t3, t4)
226
         ON t3.a=1 AND t2.b=t4.b,
227
         t5 
228
         LEFT JOIN 
229
         ( 
230
           (t6, t7)
231
           LEFT JOIN 
232
           t8
233
           ON t7.b=t8.b AND t6.b < 10
234
         )
235
         ON t6.b >= 2 AND t5.b=t7.b 
236
       )
237
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
238
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
239
          (t1.a != 2);
240
241
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
242
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
243
  FROM t1
244
       LEFT JOIN                
245
       ( 
246
         t2
247
         LEFT JOIN              
248
         (t3, t4)
249
         ON t3.a=1 AND t2.b=t4.b,
250
         t5 
251
         LEFT JOIN 
252
         ( 
253
           (t6, t7)
254
           LEFT JOIN 
255
           t8
256
           ON t7.b=t8.b AND t6.b < 10
257
         )
258
         ON t6.b >= 2 AND t5.b=t7.b 
259
       )
260
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
261
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
262
          (t1.a != 2)
263
    WHERE (t2.a >= 4 OR t2.c IS NULL);
264
   
265
SELECT t0.a,t0.b
266
  FROM t0;
267
268
EXPLAIN EXTENDED
269
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
270
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
271
  FROM t0,t1
272
       LEFT JOIN                
273
       ( 
274
         t2
275
         LEFT JOIN              
276
         (t3, t4)
277
         ON t3.a=1 AND t2.b=t4.b,
278
         t5 
279
         LEFT JOIN 
280
         ( 
281
           (t6, t7)
282
           LEFT JOIN 
283
           t8
284
           ON t7.b=t8.b AND t6.b < 10
285
         )
286
         ON t6.b >= 2 AND t5.b=t7.b 
287
       )
288
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
289
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
290
          (t1.a != 2)
291
    WHERE t0.a=1 AND
292
          t0.b=t1.b AND          
293
          (t2.a >= 4 OR t2.c IS NULL); 
294
295
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
296
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
297
  FROM t0,t1
298
       LEFT JOIN                
299
       ( 
300
         t2
301
         LEFT JOIN              
302
         (t3, t4)
303
         ON t3.a=1 AND t2.b=t4.b,
304
         t5 
305
         LEFT JOIN 
306
         ( 
307
           (t6, t7)
308
           LEFT JOIN 
309
           t8
310
           ON t7.b=t8.b AND t6.b < 10
311
         )
312
         ON t6.b >= 2 AND t5.b=t7.b 
313
       )
314
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
315
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
316
          (t1.a != 2)
317
    WHERE t0.a=1 AND
318
          t0.b=t1.b AND          
319
          (t2.a >= 4 OR t2.c IS NULL); 
320
321
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
322
EXPLAIN EXTENDED
1 by brian
clean slate
323
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
324
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
325
  FROM t0,t1
326
       LEFT JOIN                
327
       ( 
328
         t2
329
         LEFT JOIN              
330
         (t3, t4)
331
         ON t3.a=1 AND t2.b=t4.b,
332
         t5 
333
         LEFT JOIN 
334
         ( 
335
           (t6, t7)
336
           LEFT JOIN 
337
           t8
338
           ON t7.b=t8.b AND t6.b < 10
339
         )
340
         ON t6.b >= 2 AND t5.b=t7.b 
341
       )
342
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
343
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
344
          (t1.a != 2),
345
       t9
346
     WHERE t0.a=1 AND
347
           t0.b=t1.b AND          
348
           (t2.a >= 4 OR t2.c IS NULL) AND
349
           (t3.a < 5 OR t3.c IS NULL) AND
350
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
351
           (t5.a >=2 OR t5.c IS NULL) AND
352
           (t6.a >=4 OR t6.c IS NULL) AND
353
           (t7.a <= 2 OR t7.c IS NULL) AND
354
           (t8.a < 1 OR t8.c IS NULL) AND
355
           (t8.b=t9.b OR t8.c IS NULL) AND
356
           (t9.a=1); 
357
358
SELECT t9.a,t9.b
359
  FROM t9;
360
361
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
362
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
363
  FROM t0,t1
364
       LEFT JOIN                
365
       ( 
366
         t2
367
         LEFT JOIN              
368
         (t3, t4)
369
         ON t3.a=1 AND t2.b=t4.b,
370
         t5 
371
         LEFT JOIN 
372
         ( 
373
           (t6, t7)
374
           LEFT JOIN 
375
           t8
376
           ON t7.b=t8.b AND t6.b < 10
377
         )
378
         ON t6.b >= 2 AND t5.b=t7.b 
379
       )
380
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
381
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
382
          (t1.a != 2),
383
       t9
384
     WHERE t0.a=1 AND
385
           t0.b=t1.b AND          
386
           (t2.a >= 4 OR t2.c IS NULL) AND
387
           (t3.a < 5 OR t3.c IS NULL) AND
388
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
389
           (t5.a >=2 OR t5.c IS NULL) AND
390
           (t6.a >=4 OR t6.c IS NULL) AND
391
           (t7.a <= 2 OR t7.c IS NULL) AND
392
           (t8.a < 1 OR t8.c IS NULL) AND
393
           (t8.b=t9.b OR t8.c IS NULL) AND
394
           (t9.a=1); 
395
396
SELECT t1.a,t1.b
397
  FROM t1;
398
399
SELECT t2.a,t2.b
400
  FROM t2;
401
402
SELECT t3.a,t3.b
403
  FROM t3;
404
405
SELECT t2.a,t2.b,t3.a,t3.b
406
  FROM t2 
407
       LEFT JOIN              
408
       t3
409
       ON t2.b=t3.b;
410
411
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
412
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b
1 by brian
clean slate
413
  FROM t1, t2 
414
       LEFT JOIN              
415
       t3
416
       ON t2.b=t3.b
417
    WHERE t1.a <= 2;
418
419
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
420
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b
1 by brian
clean slate
421
  FROM t1, t3 
422
       RIGHT JOIN              
423
       t2
424
       ON t2.b=t3.b
425
    WHERE t1.a <= 2;
426
427
SELECT t3.a,t3.b,t4.a,t4.b
428
  FROM t3 CROSS JOIN t4;
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
429
1 by brian
clean slate
430
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
431
  FROM t2 
432
       LEFT JOIN              
433
       (t3, t4)
434
       ON t3.a=1 AND t2.b=t4.b;
435
436
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
437
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
1 by brian
clean slate
438
  FROM t1, t2 
439
       LEFT JOIN              
440
       (t3, t4)
441
       ON t3.a=1 AND t2.b=t4.b
442
    WHERE t1.a <= 2;
443
444
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
445
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
1 by brian
clean slate
446
  FROM t1, (t3, t4) 
447
       RIGHT JOIN              
448
       t2
449
       ON t3.a=1 AND t2.b=t4.b
450
    WHERE t1.a <= 2;
451
452
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
453
  FROM t1, (t3, t4)
454
       RIGHT JOIN              
455
       t2
456
       ON t3.a=1 AND t2.b=t4.b
457
    WHERE t1.a <= 2;
458
459
EXPLAIN EXTENDED
460
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
461
  FROM t1, (t3, t4)
462
       RIGHT JOIN
463
       t2
464
       ON t3.a=1 AND t2.b=t4.b
465
    WHERE t1.a <= 2;
466
467
CREATE INDEX idx_b ON t2(b);
468
469
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
470
EXPLAIN EXTENDED
1 by brian
clean slate
471
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
472
  FROM (t3,t4)
473
       LEFT JOIN              
474
       (t1,t2)
475
       ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
476
477
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
478
  FROM (t3,t4)
479
       LEFT JOIN              
480
       (t1,t2)
481
       ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
482
483
--sorted_result
1718.2.1 by Lee Bieber
For the feature request (https://blueprints.launchpad.net/drizzle/+spec/limit-maximum-sort-size)
484
EXPLAIN EXTENDED
1 by brian
clean slate
485
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
486
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
487
  FROM t0,t1
488
       LEFT JOIN                
489
       ( 
490
         t2
491
         LEFT JOIN              
492
         (t3, t4)
493
         ON t3.a=1 AND t2.b=t4.b,
494
         t5 
495
         LEFT JOIN 
496
         ( 
497
           (t6, t7)
498
           LEFT JOIN 
499
           t8
500
           ON t7.b=t8.b AND t6.b < 10
501
         )
502
         ON t6.b >= 2 AND t5.b=t7.b 
503
       )
504
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
505
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
506
          (t1.a != 2),
507
       t9
508
     WHERE t0.a=1 AND
509
           t0.b=t1.b AND          
510
           (t2.a >= 4 OR t2.c IS NULL) AND
511
           (t3.a < 5 OR t3.c IS NULL) AND
512
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
513
           (t5.a >=2 OR t5.c IS NULL) AND
514
           (t6.a >=4 OR t6.c IS NULL) AND
515
           (t7.a <= 2 OR t7.c IS NULL) AND
516
           (t8.a < 1 OR t8.c IS NULL) AND
517
           (t8.b=t9.b OR t8.c IS NULL) AND
518
           (t9.a=1); 
519
520
CREATE INDEX idx_b ON t4(b);
521
CREATE INDEX idx_b ON t5(b);
522
523
EXPLAIN EXTENDED
524
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
525
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
526
  FROM t0,t1
527
       LEFT JOIN                
528
       ( 
529
         t2
530
         LEFT JOIN              
531
         (t3, t4)
532
         ON t3.a=1 AND t2.b=t4.b,
533
         t5 
534
         LEFT JOIN 
535
         ( 
536
           (t6, t7)
537
           LEFT JOIN 
538
           t8
539
           ON t7.b=t8.b AND t6.b < 10
540
         )
541
         ON t6.b >= 2 AND t5.b=t7.b 
542
       )
543
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
544
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
545
          (t1.a != 2),
546
       t9
547
     WHERE t0.a=1 AND
548
           t0.b=t1.b AND          
549
           (t2.a >= 4 OR t2.c IS NULL) AND
550
           (t3.a < 5 OR t3.c IS NULL) AND
551
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
552
           (t5.a >=2 OR t5.c IS NULL) AND
553
           (t6.a >=4 OR t6.c IS NULL) AND
554
           (t7.a <= 2 OR t7.c IS NULL) AND
555
           (t8.a < 1 OR t8.c IS NULL) AND
556
           (t8.b=t9.b OR t8.c IS NULL) AND
557
           (t9.a=1); 
558
559
CREATE INDEX idx_b ON t8(b);
560
561
EXPLAIN EXTENDED
562
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
563
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
564
  FROM t0,t1
565
       LEFT JOIN                
566
       ( 
567
         t2
568
         LEFT JOIN              
569
         (t3, t4)
570
         ON t3.a=1 AND t2.b=t4.b,
571
         t5 
572
         LEFT JOIN 
573
         ( 
574
           (t6, t7)
575
           LEFT JOIN 
576
           t8
577
           ON t7.b=t8.b AND t6.b < 10
578
         )
579
         ON t6.b >= 2 AND t5.b=t7.b 
580
       )
581
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
582
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
583
          (t1.a != 2),
584
       t9
585
     WHERE t0.a=1 AND
586
           t0.b=t1.b AND          
587
           (t2.a >= 4 OR t2.c IS NULL) AND
588
           (t3.a < 5 OR t3.c IS NULL) AND
589
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
590
           (t5.a >=2 OR t5.c IS NULL) AND
591
           (t6.a >=4 OR t6.c IS NULL) AND
592
           (t7.a <= 2 OR t7.c IS NULL) AND
593
           (t8.a < 1 OR t8.c IS NULL) AND
594
           (t8.b=t9.b OR t8.c IS NULL) AND
595
           (t9.a=1); 
596
597
CREATE INDEX idx_b ON t1(b);
598
CREATE INDEX idx_a ON t0(a);
599
600
EXPLAIN EXTENDED
601
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
602
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
603
  FROM t0,t1
604
       LEFT JOIN                
605
       ( 
606
         t2
607
         LEFT JOIN              
608
         (t3, t4)
609
         ON t3.a=1 AND t2.b=t4.b,
610
         t5 
611
         LEFT JOIN 
612
         ( 
613
           (t6, t7)
614
           LEFT JOIN 
615
           t8
616
           ON t7.b=t8.b AND t6.b < 10
617
         )
618
         ON t6.b >= 2 AND t5.b=t7.b 
619
       )
620
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
621
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
622
          (t1.a != 2),
623
       t9
624
     WHERE t0.a=1 AND
625
           t0.b=t1.b AND          
626
           (t2.a >= 4 OR t2.c IS NULL) AND
627
           (t3.a < 5 OR t3.c IS NULL) AND
628
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
629
           (t5.a >=2 OR t5.c IS NULL) AND
630
           (t6.a >=4 OR t6.c IS NULL) AND
631
           (t7.a <= 2 OR t7.c IS NULL) AND
632
           (t8.a < 1 OR t8.c IS NULL) AND
633
           (t8.b=t9.b OR t8.c IS NULL) AND
634
           (t9.a=1); 
635
636
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
637
       t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
638
  FROM t0,t1
639
       LEFT JOIN                
640
       ( 
641
         t2
642
         LEFT JOIN              
643
         (t3, t4)
644
         ON t3.a=1 AND t2.b=t4.b,
645
         t5 
646
         LEFT JOIN 
647
         ( 
648
           (t6, t7)
649
           LEFT JOIN 
650
           t8
651
           ON t7.b=t8.b AND t6.b < 10
652
         )
653
         ON t6.b >= 2 AND t5.b=t7.b 
654
       )
655
       ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
656
          (t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
657
          (t1.a != 2),
658
       t9
659
     WHERE t0.a=1 AND
660
           t0.b=t1.b AND          
661
           (t2.a >= 4 OR t2.c IS NULL) AND
662
           (t3.a < 5 OR t3.c IS NULL) AND
663
           (t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
664
           (t5.a >=2 OR t5.c IS NULL) AND
665
           (t6.a >=4 OR t6.c IS NULL) AND
666
           (t7.a <= 2 OR t7.c IS NULL) AND
667
           (t8.a < 1 OR t8.c IS NULL) AND
668
           (t8.b=t9.b OR t8.c IS NULL) AND
669
           (t9.a=1); 
670
671
SELECT t2.a,t2.b
672
  FROM t2;
673
674
SELECT t3.a,t3.b
675
  FROM t3;
676
677
SELECT t2.a,t2.b,t3.a,t3.b
678
  FROM t2 LEFT JOIN t3 ON t2.b=t3.b
679
    WHERE t2.a = 4 OR (t2.a > 4 AND t3.a IS NULL);
680
681
SELECT t2.a,t2.b,t3.a,t3.b
682
  FROM t2 LEFT JOIN (t3) ON t2.b=t3.b
683
    WHERE t2.a = 4 OR (t2.a > 4 AND t3.a IS NULL);
684
685
ALTER TABLE t3
686
  CHANGE COLUMN a a1 int,
687
  CHANGE COLUMN c c1 int; 
688
689
SELECT t2.a,t2.b,t3.a1,t3.b
690
  FROM t2 LEFT JOIN t3 ON t2.b=t3.b
691
    WHERE t2.a = 4 OR (t2.a > 4 AND t3.a1 IS NULL);
692
693
SELECT t2.a,t2.b,t3.a1,t3.b
694
  FROM t2 NATURAL LEFT JOIN t3
695
    WHERE t2.a = 4 OR (t2.a > 4 AND t3.a1 IS NULL);
696
697
DROP TABLE t0,t1,t2,t3,t4,t5,t6,t7,t8,t9;
698
699
CREATE TABLE t1 (a int);
700
CREATE TABLE t2 (a int);
701
CREATE TABLE t3 (a int);
702
703
INSERT INTO t1 VALUES (1);
704
INSERT INTO t2 VALUES (2);
705
INSERT INTO t3 VALUES (2);
706
INSERT INTO t1 VALUES (2);
707
708
#check proper syntax for nested outer joins
709
710
SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON t2.a=t3.a) ON t1.a=t3.a;
711
712
#must be equivalent to:
713
714
SELECT * FROM t1 LEFT JOIN t2 LEFT JOIN t3 ON t2.a=t3.a ON t1.a=t3.a;
715
716
#check that everything is al right when all tables contain not more than 1 row
717
#(bug #4922)
718
719
DELETE FROM t1 WHERE a=2;
720
SELECT * FROM t1 LEFT JOIN t2 LEFT JOIN t3 ON t2.a=t3.a ON t1.a=t3.a;
721
DELETE FROM t2;
722
SELECT * FROM t1 LEFT JOIN t2 LEFT JOIN t3 ON t2.a=t3.a ON t1.a=t3.a;
723
724
DROP TABLE t1,t2,t3;
725
726
#on expression for a nested outer join does not depend on the outer table
727
#bug #4976
728
729
CREATE TABLE t1(a int, key (a));                                              
730
CREATE TABLE t2(b int, key (b));                                               
731
CREATE TABLE t3(c int, key (c));                                               
732
733
INSERT INTO t1 VALUES (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
734
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
735
736
INSERT INTO t2 VALUES (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
737
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
738
739
INSERT INTO t3 VALUES (0), (1), (2), (3), (4), (5);
740
 
741
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON c < 3 and b = c;
742
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
743
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
744
745
DELETE FROM t3;
746
EXPLAIN SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
747
SELECT a, b, c FROM t1 LEFT JOIN (t2, t3) ON b < 3 and b = c;
748
749
DROP TABLE t1,t2,t3;
750
751
#
752
# Test for bug #11284: empty table in a nested left join
753
# 
754
755
CREATE TABLE t1 (c11 int);
756
CREATE TABLE t2 (c21 int);
757
CREATE TABLE t3 (c31 int);
758
759
INSERT INTO t1 VALUES (4), (5);
760
761
SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
762
EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON c11=c21;
763
764
SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
765
EXPLAIN SELECT * FROM t1 LEFT JOIN (t2 LEFT JOIN t3 ON c21=c31) ON c11=c21;
766
767
DROP TABLE t1,t2,t3;
768
769
# BUG#16393
770
create table t1 (a int);
771
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
772
create table t2 (a int, filler char(100), key(a));
773
insert into t2 select A.a + 10*B.a, '' from t1 A CROSS JOIN t1 B;
2141.4.2 by Andrew Hutchings
Implicit joins of the form "SELECT * FROM t1, t2" without WHERE or ON now error.
774
create table t3 like t2;
1 by brian
clean slate
775
insert into t3 select * from t2;
776
777
explain select * from t1 left join 
778
  (t2 left join t3 on (t2.a = t3.a)) 
779
  on (t1.a = t2.a);
780
drop table t1, t2, t3;
781
782
#
783
# Test for bug #24345: crash with nested left outer join when outer table is substituted
784
#                      for a row that happens to have a null value for the join attribute.
785
#
786
787
CREATE TABLE t1 (
788
  id int NOT NULL PRIMARY KEY,
789
  ct int DEFAULT NULL,
790
  pc int DEFAULT NULL,
791
  INDEX idx_ct (ct),
792
  INDEX idx_pc (pc)
793
);
794
INSERT INTO t1 VALUES  
795
 (1,NULL,NULL),(2,NULL,NULL),(3,NULL,NULL),(4,NULL,NULL),(5,NULL,NULL);
796
797
CREATE TABLE t2 (
798
  id int NOT NULL PRIMARY KEY,
799
  sr int NOT NULL,
800
  nm varchar(255) NOT NULL,
801
  INDEX idx_sr (sr)
802
);
803
INSERT INTO t2 VALUES
804
  (2441905,4308,'LesAbymes'),(2441906,4308,'Anse-Bertrand');
805
806
CREATE TABLE t3 (
807
  id int NOT NULL PRIMARY KEY,
808
  ct int NOT NULL,
809
  ln int NOT NULL,
810
  INDEX idx_ct (ct),
811
  INDEX idx_ln (ln)
812
);
813
814
CREATE TABLE t4 (
815
  id int NOT NULL PRIMARY KEY,
816
  nm varchar(255) NOT NULL
817
);
818
819
INSERT INTO t4 VALUES (4308,'Guadeloupe'),(4309,'Martinique');
820
821
SELECT t1.*
822
  FROM t1 LEFT JOIN
823
       (t2 LEFT JOIN t3 ON t3.ct=t2.id AND t3.ln='5') ON t1.ct=t2.id
824
    WHERE t1.id='5';
825
826
SELECT t1.*, t4.nm
827
  FROM t1 LEFT JOIN
828
      (t2 LEFT JOIN t3 ON t3.ct=t2.id AND t3.ln='5') ON t1.ct=t2.id
829
          LEFT JOIN t4 ON t2.sr=t4.id
830
    WHERE t1.id='5';
831
832
DROP TABLE t1,t2,t3,t4;
833
834
#
835
# BUG#25575: ERROR 1052 (Column in from clause is ambiguous) with sub-join
836
#
837
CREATE TABLE t1 (a INT, b INT);
838
CREATE TABLE t2 (a INT);
839
CREATE TABLE t3 (a INT, c INT);
840
CREATE TABLE t4 (a INT, c INT);
841
CREATE TABLE t5 (a INT, c INT);
842
843
SELECT b FROM t1 JOIN (t2 LEFT JOIN t3 USING (a) LEFT JOIN t4 USING (a)
844
LEFT JOIN t5 USING (a)) USING (a);
845
846
--error ER_NON_UNIQ_ERROR
847
SELECT c FROM t1 JOIN (t2 LEFT JOIN t3 USING (a) LEFT JOIN t4 USING (a)
848
LEFT JOIN t5 USING (a)) USING (a);
849
850
SELECT b FROM t1 JOIN (t2 JOIN t3 USING (a) JOIN t4 USING (a)
851
JOIN t5 USING (a)) USING (a);
852
853
--error ER_NON_UNIQ_ERROR
854
SELECT c FROM t1 JOIN (t2 JOIN t3 USING (a) JOIN t4 USING (a)
855
JOIN t5 USING (a)) USING (a);
856
857
DROP TABLE t1,t2,t3,t4,t5;
858
CREATE TABLE t1 (a INT, b INT);
859
CREATE TABLE t2 (a INT, b INT);
860
CREATE TABLE t3 (a INT, b INT);
861
862
INSERT INTO t1 VALUES (1,1);
863
INSERT INTO t2 VALUES (1,1);
864
INSERT INTO t3 VALUES (1,1);
865
866
--error ER_NON_UNIQ_ERROR
867
SELECT * FROM t1 JOIN (t2 JOIN t3 USING (b)) USING (a);
868
869
DROP TABLE t1,t2,t3;
870
871
#
872
# BUG#29604: inner nest of left join interleaves with outer tables
873
#
874
875
CREATE TABLE t1 (
876
  carrier char(2) default NULL,
877
  id int NOT NULL auto_increment PRIMARY KEY
878
);
879
INSERT INTO t1 VALUES
880
  ('CO',235371754),('CO',235376554),('CO',235376884),('CO',235377874),
881
  ('CO',231060394),('CO',231059224),('CO',231059314),('CO',231060484),
882
  ('CO',231060274),('CO',231060124),('CO',231060244),('CO',231058594),
883
  ('CO',231058924),('CO',231058504),('CO',231059344),('CO',231060424),
884
  ('CO',231059554),('CO',231060304),('CO',231059644),('CO',231059464),
885
  ('CO',231059764),('CO',231058294),('CO',231058624),('CO',231058864),
886
  ('CO',231059374),('CO',231059584),('CO',231059734),('CO',231059014),
887
  ('CO',231059854),('CO',231059494),('CO',231059794),('CO',231058534),
888
  ('CO',231058324),('CO',231058684),('CO',231059524),('CO',231059974);
889
890
CREATE TABLE t2 (
891
  scan_date date default NULL,
892
  package_id int default NULL,
893
  INDEX scan_date(scan_date),
894
  INDEX package_id(package_id)
895
);
896
INSERT INTO t2 VALUES
897
  ('2008-12-29',231062944),('2008-12-29',231065764),('2008-12-29',231066124),
898
  ('2008-12-29',231060094),('2008-12-29',231061054),('2008-12-29',231065644),
899
  ('2008-12-29',231064384),('2008-12-29',231064444),('2008-12-29',231073774),
900
  ('2008-12-29',231058594),('2008-12-29',231059374),('2008-12-29',231066004),
901
  ('2008-12-29',231068494),('2008-12-29',231070174),('2008-12-29',231071884),
902
  ('2008-12-29',231063274),('2008-12-29',231063754),('2008-12-29',231064144),
903
  ('2008-12-29',231069424),('2008-12-29',231073714),('2008-12-29',231058414),
904
  ('2008-12-29',231060994),('2008-12-29',231069154),('2008-12-29',231068614),
905
  ('2008-12-29',231071464),('2008-12-29',231074014),('2008-12-29',231059614),
906
  ('2008-12-29',231059074),('2008-12-29',231059464),('2008-12-29',231069094),
907
  ('2008-12-29',231067294),('2008-12-29',231070144),('2008-12-29',231073804),
908
  ('2008-12-29',231072634),('2008-12-29',231058294),('2008-12-29',231065344),
909
  ('2008-12-29',231066094),('2008-12-29',231069034),('2008-12-29',231058594),
910
  ('2008-12-29',231059854),('2008-12-29',231059884),('2008-12-29',231059914),
911
  ('2008-12-29',231063664),('2008-12-29',231063814),('2008-12-29',231063904);
912
913
CREATE TABLE t3 (
914
  package_id int default NULL,
915
  INDEX package_id(package_id)
916
);
917
INSERT INTO t3 VALUES
918
  (231058294),(231058324),(231058354),(231058384),(231058414),(231058444),
919
  (231058474),(231058504),(231058534),(231058564),(231058594),(231058624),
920
  (231058684),(231058744),(231058804),(231058864),(231058924),(231058954),
921
  (231059014),(231059074),(231059104),(231059134),(231059164),(231059194),
922
  (231059224),(231059254),(231059284),(231059314),(231059344),(231059374),
923
  (231059404),(231059434),(231059464),(231059494),(231059524),(231059554),
924
  (231059584),(231059614),(231059644),(231059674),(231059704),(231059734),
925
  (231059764),(231059794),(231059824),(231059854),(231059884),(231059914),
926
  (231059944),(231059974),(231060004),(231060034),(231060064),(231060094),
927
  (231060124),(231060154),(231060184),(231060214),(231060244),(231060274),
928
  (231060304),(231060334),(231060364),(231060394),(231060424),(231060454),
929
  (231060484),(231060514),(231060544),(231060574),(231060604),(231060634),
930
  (231060664),(231060694),(231060724),(231060754),(231060784),(231060814),
931
  (231060844),(231060874),(231060904),(231060934),(231060964),(231060994),
932
  (231061024),(231061054),(231061084),(231061144),(231061174),(231061204),
933
  (231061234),(231061294),(231061354),(231061384),(231061414),(231061474),
934
  (231061564),(231061594),(231061624),(231061684),(231061714),(231061774),
935
  (231061804),(231061894),(231061984),(231062074),(231062134),(231062224),
936
  (231062254),(231062314),(231062374),(231062434),(231062494),(231062554),
937
  (231062584),(231062614),(231062644),(231062704),(231062734),(231062794),
938
  (231062854),(231062884),(231062944),(231063004),(231063034),(231063064),
939
  (231063124),(231063154),(231063184),(231063214),(231063274),(231063334),
940
  (231063394),(231063424),(231063454),(231063514),(231063574),(231063664);
941
 
942
CREATE TABLE t4 (
943
  carrier char(2) NOT NULL default '' PRIMARY KEY,
944
  id int default NULL,
223 by Brian Aker
Cleanup int() work.
945
  INDEX id(id)
1 by brian
clean slate
946
);
947
INSERT INTO t4 VALUES
948
  ('99',6),('SK',456),('UA',486),('AI',1081),('OS',1111),('VS',1510);
949
950
CREATE TABLE t5 (
951
  carrier_id int default NULL,
952
  INDEX carrier_id(carrier_id)
953
);
954
INSERT INTO t5 VALUES
955
  (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
956
  (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
957
  (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
958
  (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
959
  (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),
960
  (6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(6),(456),(456),(456),
961
  (456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),(456),
962
  (456),(486),(1081),(1111),(1111),(1111),(1111),(1510);
963
964
SELECT COUNT(*) 
965
  FROM((t2 JOIN t1 ON t2.package_id = t1.id) 
966
        JOIN t3 ON t3.package_id = t1.id);
967
968
EXPLAIN
969
SELECT COUNT(*) 
970
  FROM ((t2 JOIN t1 ON t2.package_id = t1.id) 
971
         JOIN t3 ON t3.package_id = t1.id)
972
       LEFT JOIN 
973
       (t5 JOIN t4 ON t5.carrier_id = t4.id)
974
       ON t4.carrier = t1.carrier;
975
SELECT COUNT(*) 
976
  FROM ((t2 JOIN t1 ON t2.package_id = t1.id) 
977
        JOIN t3 ON t3.package_id = t1.id)
978
       LEFT JOIN 
979
       (t5 JOIN t4 ON t5.carrier_id = t4.id)
980
       ON t4.carrier = t1.carrier;
981
982
DROP TABLE t1,t2,t3,t4,t5;
983
984
--echo End of 5.0 tests
985
986