mariadb/mysql-test/r/count_distinct2.result
unknown 897849e5d8 WL#926 "AVG(DISTINCT) and other distincts", part 2 (out of 3): clean up
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.
2005-03-15 03:46:19 +03:00

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;