Commit 0c2dac2a authored by unknown's avatar unknown

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.
parent 3f43b07b
......@@ -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();
}
};
......
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