mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +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
|
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;
|
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
|
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;
|
select sql_big_result spid,sum(userid) from t1 group by spid desc;
|
||||||
spid sum(userid)
|
spid sum(userid)
|
||||||
7 3
|
7 3
|
||||||
|
@ -597,3 +597,32 @@ count(*) category
|
||||||
1 3
|
1 3
|
||||||
1 4
|
1 4
|
||||||
drop table t1;
|
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(*), 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;
|
select count(*), interval(qty,2,3,4,5,6,7,8) as category from t1 group by category;
|
||||||
drop table t1;
|
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 (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 &&
|
if (order &&
|
||||||
(join.const_tables == join.tables ||
|
(join.const_tables == join.tables ||
|
||||||
((simple_order || skip_sort_order) &&
|
((simple_order || skip_sort_order) &&
|
||||||
|
|
Loading…
Add table
Reference in a new issue