mirror of
https://github.com/MariaDB/server.git
synced 2025-05-27 01:57:48 +03:00
59 lines
1.9 KiB
Plaintext
59 lines
1.9 KiB
Plaintext
#
|
|
# Table elimination (MWL#17) tests
|
|
#
|
|
--disable_warnings
|
|
drop table if exists t0, t1, t2, t3;
|
|
--enable_warnings
|
|
|
|
create table t1 (a int);
|
|
insert into t1 values (0),(1),(2),(3);
|
|
create table t0 as select * from t1;
|
|
|
|
create table t2 (a int primary key, b int)
|
|
as select a, a as b from t1 where a in (1,2);
|
|
|
|
create table t3 (a int primary key, b int)
|
|
as select a, a as b from t1 where a in (1,3);
|
|
|
|
--echo # This will be eliminated:
|
|
explain select t1.a from t1 left join t2 on t2.a=t1.a;
|
|
explain extended select t1.a from t1 left join t2 on t2.a=t1.a;
|
|
|
|
select t1.a from t1 left join t2 on t2.a=t1.a;
|
|
|
|
--echo # This will not be eliminated as t2.b is in in select list:
|
|
explain select * from t1 left join t2 on t2.a=t1.a;
|
|
|
|
--echo # This will not be eliminated as t2.b is in in order list:
|
|
explain select t1.a from t1 left join t2 on t2.a=t1.a order by t2.b;
|
|
|
|
--echo # This will not be eliminated as t2.b is in group list:
|
|
explain select t1.a from t1 left join t2 on t2.a=t1.a group by t2.b;
|
|
|
|
--echo # This will not be eliminated as t2.b is in the WHERE
|
|
explain select t1.a from t1 left join t2 on t2.a=t1.a where t2.b < 3 or t2.b is null;
|
|
|
|
--echo # Elimination of multiple tables:
|
|
explain select t1.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a;
|
|
|
|
--echo # Elimination of multiple tables (2):
|
|
explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and t3.a=t1.a;
|
|
|
|
--echo # Elimination when done within an outer join nest:
|
|
explain extended
|
|
select t0.*
|
|
from
|
|
t0 left join (t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and
|
|
t3.a=t1.a) on t0.a=t1.a;
|
|
|
|
--echo # Elimination with aggregate functions
|
|
explain select count(*) from t1 left join t2 on t2.a=t1.a;
|
|
explain select count(1) from t1 left join t2 on t2.a=t1.a;
|
|
explain select count(1) from t1 left join t2 on t2.a=t1.a group by t1.a;
|
|
|
|
--echo This must not use elimination:
|
|
explain select count(1) from t1 left join t2 on t2.a=t1.a group by t2.a;
|
|
|
|
drop table t0, t1, t2, t3;
|
|
|