mirror of
https://github.com/MariaDB/server.git
synced 2025-11-15 09:02:33 +03:00
Merge mysql.com:/home/kgeorge/mysql/5.0/B18068
into mysql.com:/home/kgeorge/mysql/5.1/B18068
This commit is contained in:
@@ -533,3 +533,15 @@ select count(distinct concat(x,y)) from t1;
|
|||||||
count(distinct concat(x,y))
|
count(distinct concat(x,y))
|
||||||
2
|
2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b));
|
||||||
|
INSERT INTO t1 VALUES (1, 101);
|
||||||
|
INSERT INTO t1 SELECT a + 1, a + 101 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 2, a + 102 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 4, a + 104 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 8, a + 108 FROM t1;
|
||||||
|
EXPLAIN SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 index NULL PRIMARY 8 NULL 16 Using where; Using index
|
||||||
|
SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
|
||||||
|
a a
|
||||||
|
DROP TABLE t1;
|
||||||
|
|||||||
@@ -2116,3 +2116,25 @@ COUNT(DISTINCT a)
|
|||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP PROCEDURE a;
|
DROP PROCEDURE a;
|
||||||
|
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a));
|
||||||
|
INSERT INTO t1 (a) VALUES
|
||||||
|
(''), ('CENTRAL'), ('EASTERN'), ('GREATER LONDON'),
|
||||||
|
('NORTH CENTRAL'), ('NORTH EAST'), ('NORTH WEST'), ('SCOTLAND'),
|
||||||
|
('SOUTH EAST'), ('SOUTH WEST'), ('WESTERN');
|
||||||
|
EXPLAIN SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range NULL PRIMARY 66 NULL 12 Using index for group-by
|
||||||
|
SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
||||||
|
a a
|
||||||
|
|
||||||
|
CENTRAL CENTRAL
|
||||||
|
EASTERN EASTERN
|
||||||
|
GREATER LONDON GREATER LONDON
|
||||||
|
NORTH CENTRAL NORTH CENTRAL
|
||||||
|
NORTH EAST NORTH EAST
|
||||||
|
NORTH WEST NORTH WEST
|
||||||
|
SCOTLAND SCOTLAND
|
||||||
|
SOUTH EAST SOUTH EAST
|
||||||
|
SOUTH WEST SOUTH WEST
|
||||||
|
WESTERN WESTERN
|
||||||
|
DROP TABLE t1;
|
||||||
|
|||||||
@@ -382,3 +382,19 @@ INSERT INTO t1 VALUES
|
|||||||
select count(distinct x,y) from t1;
|
select count(distinct x,y) from t1;
|
||||||
select count(distinct concat(x,y)) from t1;
|
select count(distinct concat(x,y)) from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #18068: SELECT DISTINCT
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1, 101);
|
||||||
|
INSERT INTO t1 SELECT a + 1, a + 101 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 2, a + 102 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 4, a + 104 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 8, a + 108 FROM t1;
|
||||||
|
|
||||||
|
EXPLAIN SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
|
||||||
|
SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|||||||
@@ -782,3 +782,19 @@ SELECT COUNT(DISTINCT a) FROM t1 WHERE a=0;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP PROCEDURE a;
|
DROP PROCEDURE a;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #18068: SELECT DISTINCT
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a varchar(64) NOT NULL default '', PRIMARY KEY(a));
|
||||||
|
|
||||||
|
INSERT INTO t1 (a) VALUES
|
||||||
|
(''), ('CENTRAL'), ('EASTERN'), ('GREATER LONDON'),
|
||||||
|
('NORTH CENTRAL'), ('NORTH EAST'), ('NORTH WEST'), ('SCOTLAND'),
|
||||||
|
('SOUTH EAST'), ('SOUTH WEST'), ('WESTERN');
|
||||||
|
|
||||||
|
EXPLAIN SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
||||||
|
SELECT DISTINCT a,a FROM t1 ORDER BY a;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|||||||
@@ -12803,6 +12803,17 @@ create_distinct_group(THD *thd, Item **ref_pointer_array,
|
|||||||
{
|
{
|
||||||
if (!item->const_item() && !item->with_sum_func && !item->marker)
|
if (!item->const_item() && !item->with_sum_func && !item->marker)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
Don't put duplicate columns from the SELECT list into the
|
||||||
|
GROUP BY list.
|
||||||
|
*/
|
||||||
|
ORDER *ord_iter;
|
||||||
|
for (ord_iter= group; ord_iter; ord_iter= ord_iter->next)
|
||||||
|
if ((*ord_iter->item)->eq(item, 1))
|
||||||
|
break;
|
||||||
|
if (ord_iter)
|
||||||
|
continue;
|
||||||
|
|
||||||
ORDER *ord=(ORDER*) thd->calloc(sizeof(ORDER));
|
ORDER *ord=(ORDER*) thd->calloc(sizeof(ORDER));
|
||||||
if (!ord)
|
if (!ord)
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user