1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Fix for bug #1335: filesort is missing in EXPLAIN if ORDER BY NULL is used

mysql-test/r/group_by.result:
  test results fixed
mysql-test/t/group_by.test:
  added few explicit tests for bug #1335
This commit is contained in:
unknown
2003-12-09 23:52:58 +03:00
parent 6f96fb7956
commit 1c30ec0970
3 changed files with 56 additions and 3 deletions

View File

@ -287,7 +287,7 @@ table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 8 Using filesort
explain select sql_big_result spid,sum(userid) from t1 group by spid desc order by null;
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 8
t1 ALL NULL NULL NULL NULL 8 Using filesort
select sql_big_result spid,sum(userid) from t1 group by spid desc;
spid sum(userid)
7 3
@ -597,3 +597,18 @@ count(*) category
1 3
1 4
drop table t1;
userid count(*)
3 5
2 1
1 2
EXPLAIN SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 8 Using temporary; Using filesort
i COUNT(DISTINCT(i))
1 1
2 1
4 4
explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
table type possible_keys key key_len ref rows Extra
t1 ALL NULL NULL NULL NULL 6 Using filesort
DROP TABLE t1;

View File

@ -423,3 +423,31 @@ select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(q
select count(*), case interval(qty,2,3,4,5,6,7,8) when -1 then NULL when 0 then "zero" when 1 then "one" when 2 then "two" end as category from t1 group by category;
select count(*), interval(qty,2,3,4,5,6,7,8) as category from t1 group by category;
drop table t1;
#
# Tests for bug #1355: 'Using filesort' is missing in EXPLAIN when ORDER BY
# NULL is used.
#
--disable_query_log
CREATE TABLE t1 (
userid int(10) unsigned,
score smallint(5) unsigned,
key (score)
);
INSERT INTO t1 VALUES (1,1),(2,2),(1,1),(3,3),(3,3),(3,3),(3,3),(3,3);
# Here we select unordered GROUP BY into a temporary talbe,
# and then sort it with filesort (GROUP BY in MySQL
# implies sorted order of results)
SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
--enable_query_log
EXPLAIN SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
--disable_query_log
DROP TABLE t1;
CREATE TABLE t1 (
i int(11) default NULL,
j int(11) default NULL
);
INSERT INTO t1 VALUES (1,2),(2,3),(4,5),(3,5),(1,5),(23,5);
SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
--enable_query_log
explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
DROP TABLE t1;