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

98 lines
4.7 KiB
Plaintext

set tidb_cost_model_version=1;
# These tests test the aggregate function's behavior according to collation.
# The result of min/max of enum/set is wrong, please fix them soon.
create table t(id int, value varchar(20) charset utf8mb4 collate utf8mb4_general_ci, value1 varchar(20) charset utf8mb4 collate utf8mb4_bin);
insert into t values (1, 'abc', 'abc '),(4, 'Abc', 'abc'),(3,'def', 'def '), (5, 'abc', 'ABC');
# group_concat
explain format='plan_tree' select group_concat(value order by 1) from t;
select group_concat(value order by 1) from t;
explain format='plan_tree' select group_concat(value) from t;
select group_concat(value) from t;
explain format='plan_tree' select group_concat(value collate utf8mb4_bin) from t;
select group_concat(value collate utf8mb4_bin) from t;
explain format='plan_tree' select group_concat(distinct value order by 1) from t;
select upper(group_concat(distinct value order by 1)) from t;
explain format='plan_tree' select group_concat(distinct value collate utf8mb4_bin order by 1) from t;
select upper(group_concat(distinct value collate utf8mb4_bin order by 1)) from t;
explain format='plan_tree' select group_concat(distinct value) from t;
select upper(group_concat(distinct value)) from t;
explain format='plan_tree' select group_concat(distinct value collate utf8mb4_bin) from t;
select upper(group_concat(distinct value collate utf8mb4_bin)) from t;
# count(distinct)
explain format='plan_tree' select count(distinct value) from t;
select count(distinct value) from t;
explain format='plan_tree' select count(distinct value collate utf8mb4_bin) from t;
select count(distinct value collate utf8mb4_bin) from t;
explain format='plan_tree' select count(distinct value, value1) from t;
select count(distinct value, value1) from t;
explain format='plan_tree' select count(distinct value collate utf8mb4_bin, value1) from t;
select count(distinct value collate utf8mb4_bin, value1) from t;
# approxCountDistinct
explain format='plan_tree' select approx_count_distinct(value) from t;
select approx_count_distinct(value) from t;
explain format='plan_tree' select approx_count_distinct(value collate utf8mb4_bin) from t;
select approx_count_distinct(value collate utf8mb4_bin) from t;
explain format='plan_tree' select approx_count_distinct(value, value1) from t;
select approx_count_distinct(value, value1) from t;
explain format='plan_tree' select approx_count_distinct(value collate utf8mb4_bin, value1) from t;
select approx_count_distinct(value collate utf8mb4_bin, value1) from t;
# minMax
create table tt(a char(10), b enum('a', 'B', 'c'), c set('a', 'B', 'c'), d json) collate utf8mb4_general_ci;
insert into tt values ("a", "a", "a", JSON_OBJECT("a", "a"));
--error 0,1265
insert into tt values ("A", "A", "A", JSON_OBJECT("A", "A"));
--error 0,1265
insert into tt values ("b", "b", "b", JSON_OBJECT("b", "b"));
insert into tt values ("B", "B", "B", JSON_OBJECT("B", "B"));
insert into tt values ("c", "c", "c", JSON_OBJECT("c", "c"));
--error 0,1265
insert into tt values ("C", "C", "C", JSON_OBJECT("C", "C"));
split table tt by (0), (1), (2), (3), (4), (5);
explain format='plan_tree' select min(a) from tt;
explain format='plan_tree' select lower(min(a)) from tt;
select lower(min(a)) from tt;
explain format='plan_tree' select min(a collate utf8mb4_bin) from tt;
select min(a collate utf8mb4_bin) from tt;
explain format='plan_tree' select max(a) from tt;
select max(a) from tt;
explain format='plan_tree' select max(a collate utf8mb4_bin) from tt;
select max(a collate utf8mb4_bin) from tt;
explain format='plan_tree' select min(b) from tt;
select min(b) from tt;
--error 1235
explain format='plan_tree' select min(b collate utf8mb4_bin) from tt;
--error 1235
select min(b collate utf8mb4_bin) from tt;
explain format='plan_tree' select max(b) from tt;
select max(b) from tt;
--error 1235
explain format='plan_tree' select max(b collate utf8mb4_bin) from tt;
--error 1235
select max(b collate utf8mb4_bin) from tt;
explain format='plan_tree' select min(c) from tt;
select min(c) from tt;
--error 1235
explain format='plan_tree' select min(c collate utf8mb4_bin) from tt;
--error 1235
select min(c collate utf8mb4_bin) from tt;
explain format='plan_tree' select max(c) from tt;
select max(c) from tt;
--error 1235
explain format='plan_tree' select max(c collate utf8mb4_bin) from tt;
--error 1235
select max(c collate utf8mb4_bin) from tt;
explain format='plan_tree' select min(d) from tt;
select min(d) from tt;
explain format='plan_tree' select min(d collate utf8mb4_bin) from tt;
select min(d collate utf8mb4_bin) from tt;
explain format='plan_tree' select max(d) from tt;
select max(d) from tt;
explain format='plan_tree' select max(d collate utf8mb4_bin) from tt;
select max(d collate utf8mb4_bin) from tt;