mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
Merge bk-internal.mysql.com:/home/bk/mysql-4.0
into mysql.com:/home/kostja/mysql/mysql-4.0-1335
This commit is contained in:
commit
8ee31c26f2
3 changed files with 66 additions and 3 deletions
|
@ -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,32 @@ count(*) category
|
|||
1 3
|
||||
1 4
|
||||
drop table t1;
|
||||
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);
|
||||
SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
|
||||
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
|
||||
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;
|
||||
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;
|
||||
|
|
|
@ -423,3 +423,27 @@ 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.
|
||||
#
|
||||
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;
|
||||
EXPLAIN SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
|
||||
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;
|
||||
explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -696,8 +696,18 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
|
|||
|
||||
if (select_options & SELECT_DESCRIBE)
|
||||
{
|
||||
if (!order && !no_order)
|
||||
order=group;
|
||||
/*
|
||||
Check if we managed to optimize ORDER BY away and don't use temporary
|
||||
table to resolve ORDER BY: in that case, we only may need to do
|
||||
filesort for GROUP BY.
|
||||
*/
|
||||
if (!order && !no_order && (!skip_sort_order || !need_tmp))
|
||||
{
|
||||
/* Reset 'order' to 'group' and reinit variables describing 'order' */
|
||||
order= group;
|
||||
simple_order= simple_group;
|
||||
skip_sort_order= 0;
|
||||
}
|
||||
if (order &&
|
||||
(join.const_tables == join.tables ||
|
||||
((simple_order || skip_sort_order) &&
|
||||
|
|
Loading…
Reference in a new issue