diff options
author | Alexander Barkov <bar@mariadb.org> | 2016-11-02 08:20:15 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2016-11-02 08:20:15 +0400 |
commit | c18054deb2b5cfcf1f13aa71574406f2bafb87c6 (patch) | |
tree | fa1c0b3dfaa6729134e09ec2c2499d0012e94322 | |
parent | 554c60ab0d383e8e6d473294fb86a9db0b0d2b9b (diff) | |
download | mariadb-git-c18054deb2b5cfcf1f13aa71574406f2bafb87c6.tar.gz |
MDEV-10347 mysqld got signal 11
-rw-r--r-- | mysql-test/r/null.result | 17 | ||||
-rw-r--r-- | mysql-test/t/null.test | 17 | ||||
-rw-r--r-- | sql/item_cmpfunc.h | 5 |
3 files changed, 39 insertions, 0 deletions
diff --git a/mysql-test/r/null.result b/mysql-test/r/null.result index fcaaeb2192f..d25e78c1ce4 100644 --- a/mysql-test/r/null.result +++ b/mysql-test/r/null.result @@ -1572,6 +1572,23 @@ SELECT * FROM t1 WHERE NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(N i DROP TABLE t1; # +# MDEV-10347 mysqld got signal 11 +# +CREATE TABLE t1 (f1 VARCHAR(10), f2 VARCHAR(40)); +CREATE TABLE t2 (f3 VARCHAR(20)); +PREPARE stmt FROM " + SELECT ( + SELECT IFNULL(f3,4) FROM t2 + WHERE IFNULL(NULLIF(f1,''),1) + ) AS sq + FROM t1 + GROUP BY f2 +"; +EXECUTE stmt; +sq +DEALLOCATE PREPARE stmt; +DROP TABLE t2,t1; +# # MDEV-10236 Where expression with NOT function gives incorrect result # CREATE TABLE t1 (c1 INT); diff --git a/mysql-test/t/null.test b/mysql-test/t/null.test index 84b3f069683..a55f5ce58d3 100644 --- a/mysql-test/t/null.test +++ b/mysql-test/t/null.test @@ -1006,6 +1006,23 @@ INSERT INTO t1 VALUES (1),(2); SELECT * FROM t1 WHERE NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(NULLIF(i = ROUND(0), 14), 13), 12), 11), 10), 9), 8), 7), 6), 5), 4), 3), 2), 1); DROP TABLE t1; +--echo # +--echo # MDEV-10347 mysqld got signal 11 +--echo # + +CREATE TABLE t1 (f1 VARCHAR(10), f2 VARCHAR(40)); +CREATE TABLE t2 (f3 VARCHAR(20)); +PREPARE stmt FROM " + SELECT ( + SELECT IFNULL(f3,4) FROM t2 + WHERE IFNULL(NULLIF(f1,''),1) + ) AS sq + FROM t1 + GROUP BY f2 +"; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; +DROP TABLE t2,t1; --echo # --echo # MDEV-10236 Where expression with NOT function gives incorrect result diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h index 2e066b895e9..9a9d0e65ff6 100644 --- a/sql/item_cmpfunc.h +++ b/sql/item_cmpfunc.h @@ -1022,6 +1022,11 @@ public: Item_func_hybrid_field_type(thd, a, b, a), m_cache(NULL) { arg_count--; } + void cleanup() + { + Item_func_hybrid_field_type::cleanup(); + arg_count= 2; // See the comment to the constructor + } bool date_op(MYSQL_TIME *ltime, uint fuzzydate); double real_op(); longlong int_op(); |