mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
MDEV-14579: New tests for condition pushdown into materialized views/defined tables
defined with INTERSECT/EXCEPT added
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -873,11 +873,585 @@ eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
|
||||
drop view v1,v2,v3,v4;
|
||||
drop view v_union,v2_union,v3_union,v4_union;
|
||||
drop view v_double,v_char,v_decimal;
|
||||
drop table t1,t2,t1_double,t2_double,t1_char,t2_char,t1_decimal,t2_decimal;
|
||||
drop table t1,t2,t1_double,t2_double,t1_char,t2_char,t1_decimal,t2_decimal;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14579: pushdown conditions into materialized views/derived tables
|
||||
--echo # that are defined with EXIST or/and INTERSECT
|
||||
--echo #
|
||||
|
||||
create table t1 (a int, b int, c int);
|
||||
create table t2 (a int, b int, c int);
|
||||
|
||||
insert into t1 values
|
||||
(1,21,345), (1,33,7), (8,33,114), (1,21,500), (1,19,117), (5,14,787),
|
||||
(8,33,123), (9,10,211), (5,16,207), (1,33,988), (5,27,132), (1,21,104),
|
||||
(6,20,309), (6,20,315), (1,21,101), (4,33,404), (9,10,800), (1,21,123);
|
||||
|
||||
insert into t2 values
|
||||
(2,3,207), (1,16,909), (5,14,312),
|
||||
(5,33,207), (6,20,211), (1,19,132),
|
||||
(8,33,117), (3,21,231), (6,23,303);
|
||||
|
||||
create view v1 as
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.a<9 group by a,b having c < 300
|
||||
intersect
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.b>10 group by a,b having c > 100;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # pushing equalities
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a=8);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE using equalities
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (t2.a=8);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.c>200);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # extracted or formula : pushing into WHERE
|
||||
let $query=
|
||||
select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # extracted or formula : pushing into HAVING
|
||||
let $query=
|
||||
select * from v1,t2 where
|
||||
(v1.a=t2.a) and ((v1.c>200) or (v1.c<105));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # extracted or formula : pushing into WHERE
|
||||
--echo # extracted or formula : pushing into HAVING using equalities
|
||||
--echo # pushing equalities
|
||||
let $query=
|
||||
select * from v1,t2 where
|
||||
((v1.a>3) and (t2.c>110) and (v1.c=t2.c)) or
|
||||
((v1.a=1) and (v1.c<110));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # prepare of a query
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
prepare stmt from "select * from v1,t2
|
||||
where (v1.a=t2.a) and (v1.a<5) and (v1.c>110);";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
--echo # using intersect in derived table definition
|
||||
--echo # extracted or formula : pushing into WHERE using equalities
|
||||
--echo # extracted or formula : pushing into HAVING
|
||||
--echo # pushing equalities
|
||||
let $query=
|
||||
select *
|
||||
from t2,
|
||||
(select a, b, min(c) as c from t1
|
||||
where t1.a<9 group by a,b having c < 300
|
||||
intersect
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.b>10 group by a,b having c > 100) as d1
|
||||
where
|
||||
(d1.b=t2.b) and
|
||||
(((t2.b>13) and (t2.c=909)) or
|
||||
((d1.a<4) and (d1.c<200)));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 200
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # pushing equalities
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a=6);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE using equalities
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (t2.a=6);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.c>500);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # extracted or formula : pushing into WHERE
|
||||
let $query=
|
||||
select * from v1,t2 where (v1.a=t2.a) and ((v1.b>27) or (v1.b<19));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # extracted or formula : pushing into HAVING
|
||||
let $query=
|
||||
select * from v1,t2 where
|
||||
(v1.a=t2.a) and ((v1.c<400) or (v1.c>800));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # extracted or formula : pushing into WHERE
|
||||
--echo # extracted or formula : pushing into HAVING using equalities
|
||||
--echo # pushing equalities
|
||||
let $query=
|
||||
select * from v1,t2 where
|
||||
(v1.c=t2.c) and
|
||||
((v1.a>1) and (t2.c<500)) or
|
||||
((v1.a=1) and (v1.c>500));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # prepare of a query
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
prepare stmt from "select * from v1,t2
|
||||
where (v1.a=t2.a) and (v1.a<5) and (v1.c>500);";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
deallocate prepare stmt;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # extracted or formula : pushing into WHERE using equalities
|
||||
--echo # extracted or formula : pushing into HAVING
|
||||
--echo # pushing equalities
|
||||
let $query=
|
||||
select *
|
||||
from t2,
|
||||
(select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 200
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300) as d1
|
||||
where
|
||||
(d1.b=t2.b) and
|
||||
(((t2.b>13) and (t2.c=988)) or
|
||||
((d1.a>4) and (d1.c>500)));
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union and intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 200
|
||||
union
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a>3 group by a,b having c < 530;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union and intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 200
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a>3 group by a,b having c < 500
|
||||
union
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union and except in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 200
|
||||
union
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a>3 group by a,b having c < 530;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>5) and (v1.c>200);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union and except in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, min(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 200
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a>3 group by a,b having c < 500
|
||||
union
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<200);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using except and intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<7 group by a,b having c < 500
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 150;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<150);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using except and intersect in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 150
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<7 group by a,b having c < 500;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using except, intersect and union in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 150
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<7 group by a,b having c < 500
|
||||
union
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<7 group by a,b having c < 120;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.c<130);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # using embedded view
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 120;
|
||||
|
||||
create view v2 as
|
||||
select a, b, max(c) as c from v1
|
||||
where v1.a<7 group by a,b;
|
||||
|
||||
let $query= select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1,v2;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # using embedded view
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c < 300
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a,b having c > 150;
|
||||
|
||||
create view v2 as
|
||||
select a, b, max(c) as c from v1
|
||||
where v1.a<7 group by a,b;
|
||||
|
||||
let $query= select * from v2,t2 where (v2.a=t2.a) and (v2.a>4) and (v2.c<150);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1,v2;
|
||||
|
||||
--echo # using intersect in view definition
|
||||
--echo # conditions are pushed in different parts of selects
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a having c > 300
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b<21 group by b having c > 200;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>4) and (v1.b>12) and (v1.c<450);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using except in view definition
|
||||
--echo # conditions are pushed in different parts of selects
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>20 group by a having c > 300
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<7 group by b having c > 150;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a<2) and (v1.b<30) and (v1.c>450);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using except and union in view definition
|
||||
--echo # conditions are pushed in different parts of selects
|
||||
--echo # conjunctive subformulas : pushing into HAVING
|
||||
--echo # extracted or formula : pushing into WHERE
|
||||
--echo # extracted or formula : pushing into HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>20 group by a having c > 300
|
||||
except
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<7 group by b having c > 150;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and ((v1.a<2) or (v1.a<5)) and (v1.c>450);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union and intersect in view definition
|
||||
--echo # conditions are pushed in different parts of selects
|
||||
--echo # conjunctive subformulas : pushing into WHERE and HAVING
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a<9 group by a having c > 100
|
||||
intersect
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.a>3 group by b having c < 800
|
||||
union
|
||||
select a, b, max(c) as c from t1
|
||||
where t1.b>10 group by a,b having c > 300;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.a=t2.a) and (v1.a>1) and (v1.b > 12) and (v1.c>400);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
create table t3 (a int, b int, c int);
|
||||
insert into t3 values
|
||||
(1,21,345), (2,33,7), (8,33,114), (3,21,500), (1,19,107), (5,14,787),
|
||||
(4,33,123), (9,10,211), (11,16,207), (10,33,988), (5,27,132), (12,21,104),
|
||||
(6,20,309), (16,20,315), (16,21,101), (18,33,404), (19,10,800), (10,21,123),
|
||||
(17,11,708), (6,20,214);
|
||||
|
||||
create index i1 on t3(a);
|
||||
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # pushed condition gives range access
|
||||
create view v1 as
|
||||
select a, b, max(c) as max_c from t3
|
||||
where a>0 group by a;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.b=t2.b) and (v1.a<5);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # pushed condition gives range access
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t3
|
||||
where t3.a>1 group by a
|
||||
union
|
||||
select a, b, max(c) as c from t3
|
||||
where t3.a>2 group by a;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.b=t2.b) and (v1.a<4);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
--echo # using union in view definition
|
||||
--echo # conjunctive subformulas : pushing into WHERE
|
||||
--echo # pushed condition gives range access in one of the selects
|
||||
create view v1 as
|
||||
select a, b, max(c) as c from t3
|
||||
where t3.a>1 group by a
|
||||
union
|
||||
select a, b, max(c) as c from t3
|
||||
where t3.b<21 group by b;
|
||||
|
||||
let $query= select * from v1,t2 where (v1.b=t2.b) and (v1.a<3);
|
||||
eval $no_pushdown $query;
|
||||
eval $query;
|
||||
eval explain $query;
|
||||
eval explain format=json $query;
|
||||
|
||||
drop view v1;
|
||||
|
||||
alter table t3 drop index i1;
|
||||
|
||||
drop table t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-10782: condition extracted from a multiple equality
|
||||
|
||||
Reference in New Issue
Block a user