DROP TABLE IF EXISTS t0,t1,t2,t3,t4,t5,t6,t7,t8,t9;
CREATE TABLE t0 (a int, b int, c int);
CREATE TABLE t1 (a int, b int, c int);
CREATE TABLE t2 (a int, b int, c int);
CREATE TABLE t3 (a int, b int, c int);
CREATE TABLE t4 (a int, b int, c int);
CREATE TABLE t5 (a int, b int, c int);
CREATE TABLE t6 (a int, b int, c int);
CREATE TABLE t7 (a int, b int, c int);
CREATE TABLE t8 (a int, b int, c int);
CREATE TABLE t9 (a int, b int, c int);
INSERT INTO t0 VALUES (1,1,0), (1,2,0), (2,2,0);
INSERT INTO t1 VALUES (1,3,0), (2,2,0), (3,2,0);
INSERT INTO t2 VALUES (3,3,0), (4,2,0), (5,3,0);
INSERT INTO t3 VALUES (1,2,0), (2,2,0);
INSERT INTO t4 VALUES (3,2,0), (4,2,0);
INSERT INTO t5 VALUES (3,1,0), (2,2,0), (3,3,0);
INSERT INTO t6 VALUES (3,2,0), (6,2,0), (6,1,0);
INSERT INTO t7 VALUES (1,1,0), (2,2,0);
INSERT INTO t8 VALUES (0,2,0), (1,2,0);
INSERT INTO t9 VALUES (1,1,0), (1,2,0), (3,3,0);
SELECT t2.a,t2.b
FROM t2;
a	b
3	3
4	2
5	3
SELECT t3.a,t3.b
FROM t3;
a	b
1	2
2	2
SELECT t4.a,t4.b
FROM t4;
a	b
3	2
4	2
SELECT t3.a,t3.b,t4.a,t4.b
FROM t3,t4;
a	b	a	b
1	2	3	2
2	2	3	2
1	2	4	2
2	2	4	2
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t2.b=t4.b;
a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL
4	2	1	2	3	2
4	2	1	2	4	2
4	2	2	2	3	2
4	2	2	2	4	2
5	3	NULL	NULL	NULL	NULL
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b;
a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL
4	2	1	2	3	2
4	2	1	2	4	2
5	3	NULL	NULL	NULL	NULL
EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t2.b=t4.b
WHERE t3.a=1 OR t3.c IS NULL;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
Warnings:
Note	1003	select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b` from test.t2 left join (test.t3 join test.t4) on((test.t2.b = test.t4.b)) where ((test.t3.a = 1) or isnull(test.t3.c))
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t2.b=t4.b
WHERE t3.a=1 OR t3.c IS NULL;
a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL
4	2	1	2	3	2
4	2	1	2	4	2
5	3	NULL	NULL	NULL	NULL
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t2.b=t4.b
WHERE t3.a>1 OR t3.c IS NULL;
a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL
4	2	2	2	3	2
4	2	2	2	4	2
5	3	NULL	NULL	NULL	NULL
SELECT t5.a,t5.b
FROM t5;
a	b
3	1
2	2
3	3
SELECT t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
FROM t3,t4,t5;
a	b	a	b	a	b
1	2	3	2	3	1
2	2	3	2	3	1
1	2	4	2	3	1
2	2	4	2	3	1
1	2	3	2	2	2
2	2	3	2	2	2
1	2	4	2	2	2
2	2	4	2	2	2
1	2	3	2	3	3
2	2	3	2	3	3
1	2	4	2	3	3
2	2	4	2	3	3
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
FROM t2
LEFT JOIN              
(t3, t4, t5)
ON t2.b=t4.b;
a	b	a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL	NULL	NULL
4	2	1	2	3	2	3	1
4	2	1	2	3	2	2	2
4	2	1	2	3	2	3	3
4	2	1	2	4	2	3	1
4	2	1	2	4	2	2	2
4	2	1	2	4	2	3	3
4	2	2	2	3	2	3	1
4	2	2	2	3	2	2	2
4	2	2	2	3	2	3	3
4	2	2	2	4	2	3	1
4	2	2	2	4	2	2	2
4	2	2	2	4	2	3	3
5	3	NULL	NULL	NULL	NULL	NULL	NULL
EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
FROM t2
LEFT JOIN              
(t3, t4, t5)
ON t2.b=t4.b
WHERE t3.a>1 OR t3.c IS NULL;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	
Warnings:
Note	1003	select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b` from test.t2 left join (test.t3 join test.t4 join test.t5) on((test.t2.b = test.t4.b)) where ((test.t3.a > 1) or isnull(test.t3.c))
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
FROM t2
LEFT JOIN              
(t3, t4, t5)
ON t2.b=t4.b
WHERE t3.a>1 OR t3.c IS NULL;
a	b	a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL	NULL	NULL
4	2	2	2	3	2	3	1
4	2	2	2	3	2	2	2
4	2	2	2	3	2	3	3
4	2	2	2	4	2	3	1
4	2	2	2	4	2	2	2
4	2	2	2	4	2	3	3
5	3	NULL	NULL	NULL	NULL	NULL	NULL
EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
FROM t2
LEFT JOIN              
(t3, t4, t5)
ON t2.b=t4.b
WHERE (t3.a>1 OR t3.c IS NULL) AND 
(t5.a<3 OR t5.c IS NULL);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
Warnings:
Note	1003	select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b` from test.t2 left join (test.t3 join test.t4 join test.t5) on((test.t2.b = test.t4.b)) where (((test.t3.a > 1) or isnull(test.t3.c)) and ((test.t5.a < 3) or isnull(test.t5.c)))
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,t5.a,t5.b
FROM t2
LEFT JOIN              
(t3, t4, t5)
ON t2.b=t4.b
WHERE (t3.a>1 OR t3.c IS NULL) AND 
(t5.a<3 OR t5.c IS NULL);
a	b	a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL	NULL	NULL
4	2	2	2	3	2	2	2
4	2	2	2	4	2	2	2
5	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t6.a,t6.b
FROM t6;
a	b
3	2
6	2
6	1
SELECT t7.a,t7.b
FROM t7;
a	b
1	1
2	2
SELECT t6.a,t6.b,t7.a,t7.b
FROM t6,t7;
a	b	a	b
3	2	1	1
3	2	2	2
6	2	1	1
6	2	2	2
6	1	1	1
6	1	2	2
SELECT t8.a,t8.b
FROM t8;
a	b
0	2
1	2
EXPLAIN EXTENDED
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	
1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	
Warnings:
Note	1003	select test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b` from test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10))) where 1
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10;
a	b	a	b	a	b
3	2	1	1	NULL	NULL
3	2	2	2	0	2
3	2	2	2	1	2
6	2	1	1	NULL	NULL
6	2	2	2	0	2
6	2	2	2	1	2
6	1	1	1	NULL	NULL
6	1	2	2	0	2
6	1	2	2	1	2
SELECT t5.a,t5.b
FROM t5;
a	b
3	1
2	2
3	3
SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b;
a	b	a	b	a	b	a	b
3	1	3	2	1	1	NULL	NULL
3	1	6	2	1	1	NULL	NULL
2	2	3	2	2	2	0	2
2	2	3	2	2	2	1	2
2	2	6	2	2	2	0	2
2	2	6	2	2	2	1	2
3	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b AND
(t8.a < 1 OR t8.c IS NULL);
a	b	a	b	a	b	a	b
3	1	3	2	1	1	NULL	NULL
3	1	6	2	1	1	NULL	NULL
2	2	3	2	2	2	0	2
2	2	6	2	2	2	0	2
3	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b;
a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL
4	2	1	2	3	2
4	2	1	2	4	2
5	3	NULL	NULL	NULL	NULL
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b;
a	b	a	b	a	b	a	b	a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
3	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL
4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL
5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
3	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
3	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
3	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
3	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
4	2	1	2	3	2	2	2	3	2	2	2	0	2
4	2	1	2	3	2	2	2	3	2	2	2	1	2
4	2	1	2	3	2	2	2	6	2	2	2	0	2
4	2	1	2	3	2	2	2	6	2	2	2	1	2
4	2	1	2	4	2	2	2	3	2	2	2	0	2
4	2	1	2	4	2	2	2	3	2	2	2	1	2
4	2	1	2	4	2	2	2	6	2	2	2	0	2
4	2	1	2	4	2	2	2	6	2	2	2	1	2
5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
3	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b
WHERE t2.a > 3 AND
(t6.a < 6 OR t6.c IS NULL);
a	b	a	b	a	b	a	b	a	b	a	b	a	b
4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
4	2	1	2	3	2	2	2	3	2	2	2	0	2
4	2	1	2	3	2	2	2	3	2	2	2	1	2
4	2	1	2	4	2	2	2	3	2	2	2	0	2
4	2	1	2	4	2	2	2	3	2	2	2	1	2
5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t1.a,t1.b
FROM t1;
a	b
1	3
2	2
3	2
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2);
a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b
1	3	3	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
1	3	3	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
1	3	3	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
1	3	3	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
1	3	3	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
1	3	3	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
1	3	3	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	3	4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
1	3	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL
1	3	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	3	4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
1	3	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL
1	3	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	3	5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
1	3	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
1	3	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
1	3	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
1	3	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
1	3	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
1	3	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL
3	2	3	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
3	2	3	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
3	2	3	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
3	2	3	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
3	2	3	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
3	2	3	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
3	2	3	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
3	2	4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL
3	2	4	2	1	2	3	2	2	2	3	2	2	2	0	2
3	2	4	2	1	2	3	2	2	2	3	2	2	2	1	2
3	2	4	2	1	2	3	2	2	2	6	2	2	2	0	2
3	2	4	2	1	2	3	2	2	2	6	2	2	2	1	2
3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
3	2	4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL
3	2	4	2	1	2	4	2	2	2	3	2	2	2	0	2
3	2	4	2	1	2	4	2	2	2	3	2	2	2	1	2
3	2	4	2	1	2	4	2	2	2	6	2	2	2	0	2
3	2	4	2	1	2	4	2	2	2	6	2	2	2	1	2
3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
3	2	5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
3	2	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
3	2	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2)
WHERE (t2.a >= 4 OR t2.c IS NULL);
a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b
1	3	4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
1	3	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL
1	3	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	3	4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
1	3	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL
1	3	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	3	5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
1	3	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
1	3	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
1	3	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
1	3	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
1	3	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
1	3	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL
3	2	4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL
3	2	4	2	1	2	3	2	2	2	3	2	2	2	0	2
3	2	4	2	1	2	3	2	2	2	3	2	2	2	1	2
3	2	4	2	1	2	3	2	2	2	6	2	2	2	0	2
3	2	4	2	1	2	3	2	2	2	6	2	2	2	1	2
3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
3	2	4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL
3	2	4	2	1	2	4	2	2	2	3	2	2	2	0	2
3	2	4	2	1	2	4	2	2	2	3	2	2	2	1	2
3	2	4	2	1	2	4	2	2	2	6	2	2	2	0	2
3	2	4	2	1	2	4	2	2	2	6	2	2	2	1	2
3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
3	2	5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
3	2	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
3	2	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
SELECT t0.a,t0.b
FROM t0;
a	b
1	1
1	2
2	2
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2)
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	
1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	
Warnings:
Note	1003	select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2)
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL);
a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b
1	2	2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL
1	2	3	2	4	2	1	2	3	2	3	1	3	2	1	1	NULL	NULL
1	2	3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL
1	2	3	2	4	2	1	2	3	2	2	2	3	2	2	2	0	2
1	2	3	2	4	2	1	2	3	2	2	2	3	2	2	2	1	2
1	2	3	2	4	2	1	2	3	2	2	2	6	2	2	2	0	2
1	2	3	2	4	2	1	2	3	2	2	2	6	2	2	2	1	2
1	2	3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	2	3	2	4	2	1	2	4	2	3	1	3	2	1	1	NULL	NULL
1	2	3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL
1	2	3	2	4	2	1	2	4	2	2	2	3	2	2	2	0	2
1	2	3	2	4	2	1	2	4	2	2	2	3	2	2	2	1	2
1	2	3	2	4	2	1	2	4	2	2	2	6	2	2	2	0	2
1	2	3	2	4	2	1	2	4	2	2	2	6	2	2	2	1	2
1	2	3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	1	3	2	1	1	NULL	NULL
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL
1	2	3	2	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	0	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	2	2	3	2	2	2	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
Warnings:
Note	1003	select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1))
SELECT t9.a,t9.b
FROM t9;
a	b
1	1
1	2
3	3
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b
1	2	2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL	1	1
1	2	3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL	1	1
1	2	3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL	1	1
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1	2
1	2	3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL	1	2
1	2	3	2	4	2	1	2	3	2	2	2	6	2	2	2	0	2	1	2
1	2	3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	2
1	2	3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL	1	2
1	2	3	2	4	2	1	2	4	2	2	2	6	2	2	2	0	2	1	2
1	2	3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	2
SELECT t1.a,t1.b
FROM t1;
a	b
1	3
2	2
3	2
SELECT t2.a,t2.b
FROM t2;
a	b
3	3
4	2
5	3
SELECT t3.a,t3.b
FROM t3;
a	b
1	2
2	2
SELECT t2.a,t2.b,t3.a,t3.b
FROM t2 
LEFT JOIN              
t3
ON t2.b=t3.b;
a	b	a	b
3	3	NULL	NULL
4	2	1	2
4	2	2	2
5	3	NULL	NULL
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b
FROM t1, t2 
LEFT JOIN              
t3
ON t2.b=t3.b
WHERE t1.a <= 2;
a	b	a	b	a	b
1	3	3	3	NULL	NULL
2	2	3	3	NULL	NULL
1	3	4	2	1	2
1	3	4	2	2	2
2	2	4	2	1	2
2	2	4	2	2	2
1	3	5	3	NULL	NULL
2	2	5	3	NULL	NULL
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b
FROM t1, t3 
RIGHT JOIN              
t2
ON t2.b=t3.b
WHERE t1.a <= 2;
a	b	a	b	a	b
1	3	3	3	NULL	NULL
2	2	3	3	NULL	NULL
1	3	4	2	1	2
1	3	4	2	2	2
2	2	4	2	1	2
2	2	4	2	2	2
1	3	5	3	NULL	NULL
2	2	5	3	NULL	NULL
SELECT t3.a,t3.b,t4.a,t4.b
FROM t3,t4;
a	b	a	b
1	2	3	2
2	2	3	2
1	2	4	2
2	2	4	2
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t2 
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b;
a	b	a	b	a	b
3	3	NULL	NULL	NULL	NULL
4	2	1	2	3	2
4	2	1	2	4	2
5	3	NULL	NULL	NULL	NULL
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t1, t2 
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b
WHERE t1.a <= 2;
a	b	a	b	a	b	a	b
1	3	3	3	NULL	NULL	NULL	NULL
2	2	3	3	NULL	NULL	NULL	NULL
1	3	4	2	1	2	3	2
1	3	4	2	1	2	4	2
2	2	4	2	1	2	3	2
2	2	4	2	1	2	4	2
1	3	5	3	NULL	NULL	NULL	NULL
2	2	5	3	NULL	NULL	NULL	NULL
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t1, (t3, t4) 
RIGHT JOIN              
t2
ON t3.a=1 AND t2.b=t4.b
WHERE t1.a <= 2;
a	b	a	b	a	b	a	b
1	3	3	3	NULL	NULL	NULL	NULL
2	2	3	3	NULL	NULL	NULL	NULL
1	3	4	2	1	2	3	2
1	3	4	2	1	2	4	2
2	2	4	2	1	2	3	2
2	2	4	2	1	2	4	2
1	3	5	3	NULL	NULL	NULL	NULL
2	2	5	3	NULL	NULL	NULL	NULL
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t1, t3, t4 
RIGHT JOIN              
t2
ON t3.a=1 AND t2.b=t4.b
WHERE t1.a <= 2;
a	b	a	b	a	b	a	b
1	3	3	3	1	2	NULL	NULL
1	3	3	3	2	2	NULL	NULL
2	2	3	3	1	2	NULL	NULL
2	2	3	3	2	2	NULL	NULL
1	3	4	2	1	2	3	2
1	3	4	2	1	2	4	2
1	3	4	2	2	2	NULL	NULL
2	2	4	2	1	2	3	2
2	2	4	2	1	2	4	2
2	2	4	2	2	2	NULL	NULL
1	3	5	3	1	2	NULL	NULL
1	3	5	3	2	2	NULL	NULL
2	2	5	3	1	2	NULL	NULL
2	2	5	3	2	2	NULL	NULL
CREATE INDEX idx_b ON t2(b);
EXPLAIN EXTENDED
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t3,t4 
LEFT JOIN              
(t1,t2)
ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	
1	SIMPLE	t2	ref	idx_b	idx_b	5	test.t3.b	2	
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	
Warnings:
Note	1003	select test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b` from test.t3 join test.t4 left join (test.t1 join test.t2) on(((test.t3.a = 1) and (test.t3.b = test.t2.b) and (test.t2.b = test.t4.b))) where 1
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
FROM t3,t4 
LEFT JOIN              
(t1,t2)
ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
a	b	a	b	a	b
4	2	1	2	3	2
4	2	1	2	3	2
4	2	1	2	3	2
NULL	NULL	2	2	3	2
4	2	1	2	4	2
4	2	1	2	4	2
4	2	1	2	4	2
NULL	NULL	2	2	4	2
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
Warnings:
Note	1003	select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1))
CREATE INDEX idx_b ON t4(b);
CREATE INDEX idx_b ON t5(b);
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	Using where
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t8	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
Warnings:
Note	1003	select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1))
CREATE INDEX idx_b ON t8(b);
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	Using where
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t7.b	2	Using where
1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
Warnings:
Note	1003	select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1))
CREATE INDEX idx_b ON t1(b);
CREATE INDEX idx_a ON t0(a);
EXPLAIN EXTENDED
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t0	ref	idx_a	idx_a	5	const	1	Using where
1	SIMPLE	t1	ref	idx_b	idx_b	5	test.t0.b	2	Using where
1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t3	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t4	ref	idx_b	idx_b	5	test.t2.b	2	Using where
1	SIMPLE	t5	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t7	ALL	NULL	NULL	NULL	NULL	2	Using where
1	SIMPLE	t6	ALL	NULL	NULL	NULL	NULL	3	Using where
1	SIMPLE	t8	ref	idx_b	idx_b	5	test.t7.b	2	Using where
1	SIMPLE	t9	ALL	NULL	NULL	NULL	NULL	3	Using where
Warnings:
Note	1003	select test.t0.a AS `a`,test.t0.b AS `b`,test.t1.a AS `a`,test.t1.b AS `b`,test.t2.a AS `a`,test.t2.b AS `b`,test.t3.a AS `a`,test.t3.b AS `b`,test.t4.a AS `a`,test.t4.b AS `b`,test.t5.a AS `a`,test.t5.b AS `b`,test.t6.a AS `a`,test.t6.b AS `b`,test.t7.a AS `a`,test.t7.b AS `b`,test.t8.a AS `a`,test.t8.b AS `b`,test.t9.a AS `a`,test.t9.b AS `b` from test.t0 join test.t1 left join (test.t2 left join (test.t3 join test.t4) on(((test.t3.a = 1) and (test.t2.b = test.t4.b))) join test.t5 left join (test.t6 join test.t7 left join test.t8 on(((test.t7.b = test.t8.b) and (test.t6.b < 10)))) on(((test.t6.b >= 2) and (test.t5.b = test.t7.b)))) on((((test.t3.b = 2) or isnull(test.t3.c)) and ((test.t6.b = 2) or isnull(test.t6.c)) and ((test.t1.b = test.t5.b) or isnull(test.t3.c) or isnull(test.t6.c) or isnull(test.t8.c)) and (test.t1.a <> 2))) join test.t9 where ((test.t0.a = 1) and (test.t0.b = test.t1.b) and ((test.t2.a >= 4) or isnull(test.t2.c)) and ((test.t3.a < 5) or isnull(test.t3.c)) and ((test.t3.b = test.t4.b) or isnull(test.t3.c) or isnull(test.t4.c)) and ((test.t5.a >= 2) or isnull(test.t5.c)) and ((test.t6.a >= 4) or isnull(test.t6.c)) and ((test.t7.a <= 2) or isnull(test.t7.c)) and ((test.t8.a < 1) or isnull(test.t8.c)) and ((test.t8.b = test.t9.b) or isnull(test.t8.c)) and (test.t9.a = 1))
SELECT t0.a,t0.b,t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b,
t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b,t9.a,t9.b
FROM t0,t1
LEFT JOIN                
( 
t2
LEFT JOIN              
(t3, t4)
ON t3.a=1 AND t2.b=t4.b,
t5 
LEFT JOIN 
( 
t6,
t7 
LEFT JOIN 
t8
ON t7.b=t8.b AND t6.b < 10
)
ON t6.b >= 2 AND t5.b=t7.b 
)
ON (t3.b=2 OR t3.c IS NULL) AND (t6.b=2 OR t6.c IS NULL) AND
(t1.b=t5.b OR t3.c IS NULL OR t6.c IS NULL or t8.c IS NULL) AND
(t1.a != 2),
t9
WHERE t0.a=1 AND
t0.b=t1.b AND          
(t2.a >= 4 OR t2.c IS NULL) AND
(t3.a < 5 OR t3.c IS NULL) AND
(t3.b=t4.b OR t3.c IS NULL OR t4.c IS NULL) AND
(t5.a >=2 OR t5.c IS NULL) AND
(t6.a >=4 OR t6.c IS NULL) AND
(t7.a <= 2 OR t7.c IS NULL) AND
(t8.a < 1 OR t8.c IS NULL) AND
(t8.b=t9.b OR t8.c IS NULL) AND
(t9.a=1);
a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b	a	b
1	2	2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL	1	1
1	2	3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL	1	1
1	2	3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL	1	1
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	1
1	2	2	2	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	NULL	1	2
1	2	3	2	4	2	1	2	3	2	3	1	6	2	1	1	NULL	NULL	1	2
1	2	3	2	4	2	1	2	3	2	2	2	6	2	2	2	0	2	1	2
1	2	3	2	4	2	1	2	3	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	2
1	2	3	2	4	2	1	2	4	2	3	1	6	2	1	1	NULL	NULL	1	2
1	2	3	2	4	2	1	2	4	2	2	2	6	2	2	2	0	2	1	2
1	2	3	2	4	2	1	2	4	2	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	1	6	2	1	1	NULL	NULL	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	2	2	6	2	2	2	0	2	1	2
1	2	3	2	5	3	NULL	NULL	NULL	NULL	3	3	NULL	NULL	NULL	NULL	NULL	NULL	1	2
SELECT t2.a,t2.b
FROM t2;
a	b
3	3
4	2
5	3
SELECT t3.a,t3.b
FROM t3;
a	b
1	2
2	2
SELECT t2.a,t2.b,t3.a,t3.b
FROM t2 LEFT JOIN t3 ON t2.b=t3.b
WHERE t2.a = 4 OR (t2.a > 4 AND t3.a IS NULL);
a	b	a	b
4	2	1	2
4	2	2	2
5	3	NULL	NULL
SELECT t2.a,t2.b,t3.a,t3.b
FROM t2 LEFT JOIN (t3) ON t2.b=t3.b
WHERE t2.a = 4 OR (t2.a > 4 AND t3.a IS NULL);
a	b	a	b
4	2	1	2
4	2	2	2
5	3	NULL	NULL
ALTER TABLE t3
CHANGE COLUMN a a1 int,
CHANGE COLUMN c c1 int;
SELECT t2.a,t2.b,t3.a1,t3.b
FROM t2 LEFT JOIN t3 ON t2.b=t3.b
WHERE t2.a = 4 OR (t2.a > 4 AND t3.a1 IS NULL);
a	b	a1	b
4	2	1	2
4	2	2	2
5	3	NULL	NULL
SELECT t2.a,t2.b,t3.a1,t3.b
FROM t2 NATURAL LEFT JOIN t3
WHERE t2.a = 4 OR (t2.a > 4 AND t3.a1 IS NULL);
a	b	a1	b
4	2	1	2
4	2	2	2
5	3	NULL	NULL
DROP TABLE t0,t1,t2,t3,t4,t5,t6,t7,t8,t9;