Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Not a Bug
-
5.5.28, 5.3.11
-
None
-
None
Description
a query like
select t1.id |
from t1 |
left join t2 on t1.id = t2.t1_id |
left join t3 on t2.id = t3.t2_id; |
is rewritten by the optimizer into
select t1.id |
from t1 |
left join t2 on (t2.t1_id = t1.id and t1.id is not null) |
the table t3 is correctly eliminated, but the extended condition does not allow the table t2 to be eliminated too.
insert t1 values (1),(2);
|
create table t2 (t1_id int primary key, id int, key (id));
|
insert t2 values (1,1),(2,2);
|
create table t3 (t2_id int primary key);
|
insert t3 values (1),(2);
|
set sql_quote_show_create=0;
|
explain extended select t1.id from t1 left join t2 on t1.id = t2.t1_id left join t3 on t2.id = t3.t2_id;
|
on 5.1 and 5.2 the table t2 is not eliminated either, but the condition, as shown by EXPLAIN EXTENDED does not have the new clause.