Bug#53933 crash when using uncacheable subquery in the having clause of outer query
The problem is in the Item_func_isnull::update_used_tables() function, bracket is at the wrong place. Because of that isnull item erroneously is treated as const item. The fix is to set brackets in the right place.
This commit is contained in:
parent
80acd9573f
commit
bc774bd332
@ -5,3 +5,17 @@ flush tables;
|
||||
select * from t1 where isnull(to_days(mydate));
|
||||
id mydate
|
||||
drop table t1;
|
||||
#
|
||||
# Bug#53933 crash when using uncacheable subquery in the having clause of outer query
|
||||
#
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (0),(0);
|
||||
SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2
|
||||
FROM t1 GROUP BY f1 HAVING f2 = f2;
|
||||
f2
|
||||
0
|
||||
SELECT RELEASE_LOCK('Bug#53933');
|
||||
RELEASE_LOCK('Bug#53933')
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -13,3 +13,18 @@ select * from t1 where isnull(to_days(mydate));
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug#53933 crash when using uncacheable subquery in the having clause of outer query
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (0),(0);
|
||||
|
||||
SELECT ISNULL((SELECT GET_LOCK('Bug#53933', 0) FROM t1 GROUP BY f1)) AS f2
|
||||
FROM t1 GROUP BY f1 HAVING f2 = f2;
|
||||
SELECT RELEASE_LOCK('Bug#53933');
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1209,8 +1209,8 @@ public:
|
||||
else
|
||||
{
|
||||
args[0]->update_used_tables();
|
||||
if ((const_item_cache= !(used_tables_cache= args[0]->used_tables())) &&
|
||||
!with_subselect)
|
||||
if ((const_item_cache= !(used_tables_cache= args[0]->used_tables()) &&
|
||||
!with_subselect))
|
||||
{
|
||||
/* Remember if the value is always NULL or never NULL */
|
||||
cached_value= (longlong) args[0]->is_null();
|
||||
|
Loading…
x
Reference in New Issue
Block a user