Commit ec4593f5 authored by igor@olga.mysql.com's avatar igor@olga.mysql.com

Fixed bug #26830: a crash for the query with a subselect containing ROLLUP.

Crash happened because the function get_best_group_min_max detected
joins with ROLLUP incorrectly.
parent 9625f2e9
......@@ -645,3 +645,12 @@ a LENGTH(a) COUNT(*)
NULL NULL 2
DROP VIEW v1;
DROP TABLE t1;
CREATE TABLE t1 (a int, KEY (a));
INSERT INTO t1 VALUES (3), (1), (4), (1), (3), (1), (1);
SELECT * FROM (SELECT a, SUM(a) FROM t1 GROUP BY a WITH ROLLUP) as t;
a SUM(a)
1 4
3 6
4 4
NULL 14
DROP TABLE t1;
......@@ -327,3 +327,18 @@ SELECT * FROM v1;
DROP VIEW v1;
DROP TABLE t1;
#
# Bug #26830: derived table with ROLLUP
#
CREATE TABLE t1 (a int, KEY (a));
INSERT INTO t1 VALUES (3), (1), (4), (1), (3), (1), (1);
SELECT * FROM (SELECT a, SUM(a) FROM t1 GROUP BY a WITH ROLLUP) as t;
DROP TABLE t1;
......@@ -7504,7 +7504,7 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree)
if ((join->tables != 1) || /* The query must reference one table. */
((!join->group_list) && /* Neither GROUP BY nor a DISTINCT query. */
(!join->select_distinct)) ||
(thd->lex->select_lex.olap == ROLLUP_TYPE)) /* Check (B3) for ROLLUP */
(join->select_lex->olap == ROLLUP_TYPE)) /* Check (B3) for ROLLUP */
DBUG_RETURN(NULL);
if (table->s->keys == 0) /* There are no indexes to use. */
DBUG_RETURN(NULL);
......
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