Files
tidb/tests/integrationtest/t/agg_predicate_pushdown.test

96 lines
2.3 KiB
Plaintext

set tidb_cost_model_version=2;
create table t(a int, b int, c int);
INSERT INTO t (a, b, c) VALUES
(1, 1, 1),
(1, 2, 2),
(1, 3, 3),
(2, 1, 4),
(2, 2, 5),
(2, 3, 6),
(3, 1, 7),
(3, 2, 8),
(3, 3, 9),
(NULL, 1, 10),
(1, NULL, 11),
(1, 1, NULL),
(NULL, NULL, 12),
(4, 1, 13),
(4, 2, 14),
(4, 3, 15);
select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1) and (a > 2) and 1 and (b > 2) and (avg(c) > 3) order by a, b, avgc;
explain format='plan_tree' select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1) and (a > 2) and 1 and (b > 2) and (avg(c) > 3) order by a, b, avgc;
select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 or b > 2) and (a > 2 or b < 1) and 1 and (b > 2) and (avg(c) > 3) order by a, b, avgc;
explain format='plan_tree' select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 or b > 2) and (a > 2 or b < 1) and 1 and (b > 2) and (avg(c) > 3) order by a, b, avgc;
select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 and b > 2) or (a > 2 and b < 1) or (b > 2 and avg(c) > 3) order by a, b, avgc;
explain format='plan_tree' select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 and b > 2) or (a > 2 and b < 1) or (b > 2 and avg(c) > 3) order by a, b, avgc;
select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 or avg(c) > 1) and (a < 3) order by a, b, avgc;
explain format='plan_tree' select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 or avg(c) > 1) and (a < 3) order by a, b, avgc;
select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 and avg(c) > 1) or (a < 3) order by a, b, avgc;
explain format='plan_tree' select a, b, avg(c) as avgc from t group by a, b, c having
(a > 1 and avg(c) > 1) or (a < 3) order by a, b, avgc;
drop table t;
CREATE TABLE t (
id INT,
tran_id INT,
PRIMARY KEY (id)
);
INSERT INTO t (id, tran_id) VALUES
(1, 1540776),
(2, 1540776),
(3, 1540776),
(4, 1540777),
(5, 1540777),
(6, 1540778),
(7, 1540778),
(8, 1540779),
(9, 1540779),
(10, 1540780),
(11, NULL),
(12, NULL),
(13, 1540776),
(14, 1540777),
(15, 1540778);
SELECT *
FROM t t1
WHERE t1.tran_id = 1540776
AND t1.id = (
SELECT MAX(t0.id)
FROM t t0
WHERE t0.tran_id = t1.tran_id
);
explain format='brief' SELECT *
FROM t t1
WHERE t1.tran_id = 1540776
AND t1.id = (
SELECT MAX(t0.id)
FROM t t0
WHERE t0.tran_id = t1.tran_id
);