Commit 31f6b0dd authored by unknown's avatar unknown
Browse files

olap.result, olap.test:

  Added a test for bug #8615.
sql_select.cc:
  Fixed bug #8615.
  This fix only removed the cause of the reported crash.
  It does not resolve other problems of rollup queries
  with DISTINCT. They were fixed in the previous patch 
  for bug 8616.


sql/sql_select.cc:
  Fixed bug #8615.
  This fix only removed the cause of the reported crash.
  It does not resolve other problems of rollup queries
  with DISTINCT. They were fixed in the previous patch 
  for bug 8616.
mysql-test/t/olap.test:
  Added a test for bug #8615.
mysql-test/r/olap.result:
  Added a test for bug #8615.
parent e16535ce
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -360,4 +360,22 @@ SUM(b) COUNT(DISTINCT b) COUNT(*)
6	2	4
4	1	4
14	3	9
SELECT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
a	sum(b)
1	4
1	4
2	2
2	4
2	6
4	4
4	4
NULL	14
SELECT DISTINCT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
a	sum(b)
1	4
2	2
2	4
2	6
4	4
NULL	14
DROP TABLE t1;
+4 −1
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ SELECT
DROP TABLE user_day;

#
# Test for bug #8616: distinct sum with rollup
# Tests for bugs #8616, #8615: distinct sum with rollup
#

CREATE TABLE t1 (a int, b int);
@@ -150,5 +150,8 @@ SELECT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP;
SELECT DISTINCT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1
  GROUP BY a WITH ROLLUP;

SELECT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;
SELECT DISTINCT a, sum(b) FROM t1 GROUP BY a,b WITH ROLLUP;

DROP TABLE t1;
+4 −3
Original line number Diff line number Diff line
@@ -1269,7 +1269,6 @@ JOIN::exec()
	{
	  DBUG_VOID_RETURN;
	}
	curr_join->group_list= 0;
      }
      
      thd->proc_info="Copying to group table";
@@ -1289,8 +1288,10 @@ JOIN::exec()
	}
      }
      if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list,
					1) ||
	  (tmp_error= do_select(curr_join, (List<Item> *) 0, curr_tmp_table,
					1))
        DBUG_VOID_RETURN;
      curr_join->group_list= 0;
      if ((tmp_error= do_select(curr_join, (List<Item> *) 0, curr_tmp_table,
				0)))
      {
	error= tmp_error;