mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
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.
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user