summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Glukhov <Sergey.Glukhov@sun.com>2010-06-08 10:47:23 +0400
committerSergey Glukhov <Sergey.Glukhov@sun.com>2010-06-08 10:47:23 +0400
commita16f4eeea78d982d15409c34ee6a268cb8ac7d5d (patch)
tree3b88669e4b69c4a2ad83a10c7beace89b7fc2e0c
parenta961688d2e443d2c1a72c62edfaa9d6e111e3f51 (diff)
parent81e6a982508b45b93b46d5610cd462711fdab98e (diff)
downloadmariadb-git-a16f4eeea78d982d15409c34ee6a268cb8ac7d5d.tar.gz
5.1-bugteam->trunk-merge merge
-rw-r--r--mysql-test/r/func_isnull.result14
-rw-r--r--mysql-test/t/func_isnull.test15
-rw-r--r--sql/item_cmpfunc.h4
3 files changed, 31 insertions, 2 deletions
diff --git a/mysql-test/r/func_isnull.result b/mysql-test/r/func_isnull.result
index 79aecc7d82b..2dbe3d036f9 100644
--- a/mysql-test/r/func_isnull.result
+++ b/mysql-test/r/func_isnull.result
@@ -5,6 +5,20 @@ 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
CREATE TABLE t1 (id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY(id));
INSERT INTO t1( id ) VALUES ( NULL );
SELECT t1.id FROM t1 WHERE (id is not null and id is null );
diff --git a/mysql-test/t/func_isnull.test b/mysql-test/t/func_isnull.test
index 424f6dc6640..326574e0515 100644
--- a/mysql-test/t/func_isnull.test
+++ b/mysql-test/t/func_isnull.test
@@ -14,6 +14,21 @@ 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
+
#
# Bug #41371 Select returns 1 row with condition "col is not null and col is null"
#
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index a0b3f2c29a1..8813324262c 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -1324,8 +1324,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();