mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
Fix for bug #32558: group by null-returning expression with rollup causes crash
Problem: setting Item_func_rollup_const::null_value property to argument's null_value before (without) the argument evaluation may result in a crash due to wrong null_value. Fix: use is_null() to set Item_func_rollup_const::null_value instead as it evaluates the argument if necessary and returns a proper value. mysql-test/r/olap.result: Fix for bug #32558: group by null-returning expression with rollup causes crash - test result. mysql-test/t/olap.test: Fix for bug #32558: group by null-returning expression with rollup causes crash - test case. sql/item_func.h: Fix for bug #32558: group by null-returning expression with rollup causes crash - use args[0]->is_null() to obtain Item_func_rollup_const::null_value instead of args[0]->null_value as it's not set in advance in case of constant functions.
This commit is contained in:
parent
3f43b07b4a
commit
0c2dac2a8b
3 changed files with 18 additions and 1 deletions
|
@ -726,3 +726,11 @@ count(a)
|
|||
3
|
||||
drop table t1;
|
||||
##############################################################
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES(0);
|
||||
SELECT 1 FROM t1 GROUP BY (DATE(NULL)) WITH ROLLUP;
|
||||
1
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -367,3 +367,12 @@ select count(a) from t1 group by null with rollup;
|
|||
drop table t1;
|
||||
--echo ##############################################################
|
||||
|
||||
#
|
||||
# Bug #32558: group by null-returning expression with rollup causes crash
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES(0);
|
||||
SELECT 1 FROM t1 GROUP BY (DATE(NULL)) WITH ROLLUP;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -782,7 +782,7 @@ public:
|
|||
max_length= args[0]->max_length;
|
||||
decimals=args[0]->decimals;
|
||||
/* The item could be a NULL constant. */
|
||||
null_value= args[0]->null_value;
|
||||
null_value= args[0]->is_null();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue