Commit b3cd49f3 authored by unknown's avatar unknown
Browse files

fixed problem with distinct select with grouping and subqueries (BUG#7946)


mysql-test/r/derived.result:
  DISTINCT over grouped select on subquery in the FROM clause
mysql-test/t/derived.test:
  DISTINCT over grouped select on subquery in the FROM clause
sql/sql_select.cc:
  used current join copy for test
parent 0a8852c3
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -330,3 +330,12 @@ SELECT MIN(price) min, MAX(price) max, AVG(price) avg FROM (SELECT SUBSTRING( MA
min	max	avg
10.00	10.00	10
DROP TABLE t1;
create table t1 (a integer, b integer);
insert into t1 values (1,4), (2,2),(2,2), (4,1),(4,1),(4,1),(4,1);
select distinct sum(b) from t1 group by a;
sum(b)
4
select distinct sum(b) from (select a,b from t1) y group by a;
sum(b)
4
drop table t1;
+10 −0
Original line number Diff line number Diff line
@@ -214,3 +214,13 @@ CREATE TABLE `t1` ( `itemid` int(11) NOT NULL default '0', `grpid` varchar(15) N
insert into t1 values (128, 'rozn', 2, now(), 10),(128, 'rozn', 1, now(), 10);
SELECT MIN(price) min, MAX(price) max, AVG(price) avg FROM (SELECT SUBSTRING( MAX(concat(date_,";",price)), 12) price FROM t1 WHERE itemid=128 AND  grpid='rozn' GROUP BY itemid, grpid, vendor) lastprices;
DROP TABLE t1;

#
# DISTINCT over grouped select on subquery in the FROM clause
#
create table t1 (a integer, b integer);
insert into t1 values (1,4), (2,2),(2,2), (4,1),(4,1),(4,1),(4,1);
select distinct sum(b) from t1 group by a;
select distinct sum(b) from (select a,b from t1) y group by a;
drop table t1;
+1 −1
Original line number Diff line number Diff line
@@ -1304,7 +1304,7 @@ JOIN::exec()
      curr_join->select_distinct=0;		/* Each row is unique */
    
    curr_join->join_free(0);			/* Free quick selects */
    if (select_distinct && ! group_list)
    if (curr_join->select_distinct && ! curr_join->group_list)
    {
      thd->proc_info="Removing duplicates";
      if (curr_join->tmp_having)