mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
897849e5d8
Item_sum_count_distinct, and deploy Unique for use with COUNT(DISTINCT) if there is no blob column in the list of DISTINCT arguments. mysql-test/r/count_distinct2.result: Test results fixed. mysql-test/r/func_group.result: Updated. mysql-test/r/sum_distinct.result: Updated. mysql-test/t/func_group.test: Add a test for COUNT(DISTINCT) and true varchar and case-insensitive collation. The table in the test contains only two distinct values. mysql-test/t/sum_distinct.test: Since now we support INSERT INTO t1 (a) SELECT a+1 FROM t1, shorten the test. Add a nominal test for AVG(DISTINCT) sql/item_sum.cc: Implementation of cleaned up Item_sum_count_distinct. Fixed a bug with COUNT(DISTINCT) and new VARCHAR and collations. Fixed a bug wiht AVG(DISTINCT) and wrong number of output digits after decimal point. sql/item_sum.h: Cleanup for Item_sum_count_distinct. Now if the list of distinct arguments doesn't contain a blob column, we always use Unique and merge-sort to find distinct values. sql/sql_class.h: Added a short-cut to find number of elements in Unique if all elements fit into memory.
129 lines
2.2 KiB
Text
129 lines
2.2 KiB
Text
drop table if exists t1;
|
|
create table t1(n1 int, n2 int, s char(20), vs varchar(20), t text);
|
|
insert into t1 values (1,11, 'one','eleven', 'eleven'),
|
|
(1,11, 'one','eleven', 'eleven'),
|
|
(2,11, 'two','eleven', 'eleven'),
|
|
(2,12, 'two','twevle', 'twelve'),
|
|
(2,13, 'two','thirteen', 'foo'),
|
|
(2,13, 'two','thirteen', 'foo'),
|
|
(2,13, 'two','thirteen', 'bar'),
|
|
(NULL,13, 'two','thirteen', 'bar'),
|
|
(2,NULL, 'two','thirteen', 'bar'),
|
|
(2,13, NULL,'thirteen', 'bar'),
|
|
(2,13, 'two',NULL, 'bar'),
|
|
(2,13, 'two','thirteen', NULL);
|
|
select distinct n1 from t1;
|
|
n1
|
|
1
|
|
2
|
|
NULL
|
|
select count(distinct n1) from t1;
|
|
count(distinct n1)
|
|
2
|
|
select distinct n2 from t1;
|
|
n2
|
|
11
|
|
12
|
|
13
|
|
NULL
|
|
select count(distinct n2) from t1;
|
|
count(distinct n2)
|
|
3
|
|
select distinct s from t1;
|
|
s
|
|
one
|
|
two
|
|
NULL
|
|
select count(distinct s) from t1;
|
|
count(distinct s)
|
|
2
|
|
select distinct vs from t1;
|
|
vs
|
|
eleven
|
|
twevle
|
|
thirteen
|
|
NULL
|
|
select count(distinct vs) from t1;
|
|
count(distinct vs)
|
|
3
|
|
select distinct t from t1;
|
|
t
|
|
eleven
|
|
twelve
|
|
foo
|
|
bar
|
|
NULL
|
|
select count(distinct t) from t1;
|
|
count(distinct t)
|
|
4
|
|
select distinct n1,n2 from t1;
|
|
n1 n2
|
|
1 11
|
|
2 11
|
|
2 12
|
|
2 13
|
|
NULL 13
|
|
2 NULL
|
|
select count(distinct n1,n2) from t1;
|
|
count(distinct n1,n2)
|
|
4
|
|
select distinct n1,s from t1;
|
|
n1 s
|
|
1 one
|
|
2 two
|
|
NULL two
|
|
2 NULL
|
|
select count(distinct n1,s) from t1;
|
|
count(distinct n1,s)
|
|
2
|
|
select distinct s,n1,vs from t1;
|
|
s n1 vs
|
|
one 1 eleven
|
|
two 2 eleven
|
|
two 2 twevle
|
|
two 2 thirteen
|
|
two NULL thirteen
|
|
NULL 2 thirteen
|
|
two 2 NULL
|
|
select count(distinct s,n1,vs) from t1;
|
|
count(distinct s,n1,vs)
|
|
4
|
|
select distinct s,t from t1;
|
|
s t
|
|
one eleven
|
|
two eleven
|
|
two twelve
|
|
two foo
|
|
two bar
|
|
NULL bar
|
|
two NULL
|
|
select count(distinct s,t) from t1;
|
|
count(distinct s,t)
|
|
5
|
|
select count(distinct n1), count(distinct n2) from t1;
|
|
count(distinct n1) count(distinct n2)
|
|
2 3
|
|
select count(distinct n2), n1 from t1 group by n1;
|
|
count(distinct n2) n1
|
|
1 NULL
|
|
1 1
|
|
3 2
|
|
drop table t1;
|
|
create table t1 (n int default NULL);
|
|
flush status;
|
|
select count(distinct n) from t1;
|
|
count(distinct n)
|
|
5000
|
|
show status like 'Created_tmp_disk_tables';
|
|
Variable_name Value
|
|
Created_tmp_disk_tables 0
|
|
drop table t1;
|
|
create table t1 (s text);
|
|
flush status;
|
|
select count(distinct s) from t1;
|
|
count(distinct s)
|
|
5000
|
|
show status like 'Created_tmp_disk_tables';
|
|
Variable_name Value
|
|
Created_tmp_disk_tables 1
|
|
drop table t1;
|