diff options
author | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2010-06-08 10:28:30 +0400 |
---|---|---|
committer | Sergey Glukhov <Sergey.Glukhov@sun.com> | 2010-06-08 10:28:30 +0400 |
commit | 39065d5105665478dc25ddf36723dda2b6338d01 (patch) | |
tree | 6c967c81b1b67d7d00a52073f2e716ceef8b447f | |
parent | 3617e5a159e180309b69d4dadaff552dd23f2b06 (diff) | |
parent | bc774bd332863bb5379d75e2f2605bdd80e4fb3c (diff) | |
download | mariadb-git-39065d5105665478dc25ddf36723dda2b6338d01.tar.gz |
5.0-bugteam->5.1-bugteam merge
-rw-r--r-- | mysql-test/r/func_isnull.result | 14 | ||||
-rw-r--r-- | mysql-test/t/func_isnull.test | 15 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 4 |
3 files changed, 31 insertions, 2 deletions
diff --git a/mysql-test/r/func_isnull.result b/mysql-test/r/func_isnull.result index 20ddc87ee78..c1f5849c091 100644 --- a/mysql-test/r/func_isnull.result +++ b/mysql-test/r/func_isnull.result @@ -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 diff --git a/mysql-test/t/func_isnull.test b/mysql-test/t/func_isnull.test index 6218efb882f..d3ad4614998 100644 --- a/mysql-test/t/func_isnull.test +++ b/mysql-test/t/func_isnull.test @@ -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 diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 4eb27988984..506de05f0ea 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -1313,8 +1313,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(); |