Commit 45ba1388 authored by igor@rurik.mysql.com's avatar igor@rurik.mysql.com

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.
parent ce6c390c
...@@ -360,4 +360,22 @@ SUM(b) COUNT(DISTINCT b) COUNT(*) ...@@ -360,4 +360,22 @@ SUM(b) COUNT(DISTINCT b) COUNT(*)
6 2 4 6 2 4
4 1 4 4 1 4
14 3 9 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; DROP TABLE t1;
...@@ -126,7 +126,7 @@ SELECT ...@@ -126,7 +126,7 @@ SELECT
DROP TABLE user_day; 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); 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; ...@@ -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 SELECT DISTINCT SUM(b), COUNT(DISTINCT b), COUNT(*) FROM t1
GROUP BY a WITH ROLLUP; 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; DROP TABLE t1;
...@@ -1269,7 +1269,6 @@ JOIN::exec() ...@@ -1269,7 +1269,6 @@ JOIN::exec()
{ {
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
curr_join->group_list= 0;
} }
thd->proc_info="Copying to group table"; thd->proc_info="Copying to group table";
...@@ -1289,8 +1288,10 @@ JOIN::exec() ...@@ -1289,8 +1288,10 @@ JOIN::exec()
} }
} }
if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list, if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list,
1) || 1))
(tmp_error= do_select(curr_join, (List<Item> *) 0, curr_tmp_table, DBUG_VOID_RETURN;
curr_join->group_list= 0;
if ((tmp_error= do_select(curr_join, (List<Item> *) 0, curr_tmp_table,
0))) 0)))
{ {
error= tmp_error; error= tmp_error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment