From 42271e424013f70534da3e2e84ca55005ac4e92c Mon Sep 17 00:00:00 2001 From: "igor@igor-inspiron.creware.com" <> Date: Mon, 13 Jun 2005 11:24:26 -0700 Subject: [PATCH 1/2] func_if.result, func_if.test: Added a test case for bug #11142. item_cmpfunc.cc: Fixed bug #11142. Implementation of Item_func_nullif::is_null was corrected. --- mysql-test/r/func_if.result | 27 +++++++++++++++++++++++++++ mysql-test/t/func_if.test | 27 +++++++++++++++++++++++++++ sql/item_cmpfunc.cc | 4 +--- 3 files changed, 55 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result index 508a50caf02..dd8f34d53d2 100644 --- a/mysql-test/r/func_if.result +++ b/mysql-test/r/func_if.result @@ -86,3 +86,30 @@ drop table t1; SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL; NULLIF(5,5) IS NULL NULLIF(5,5) IS NOT NULL 1 0 +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a CHAR(10)); +INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); +SELECT a, NULLIF(a,'') FROM t1; +a NULLIF(a,'') +aaa aaa +NULL NULL + NULL +bbb bbb +SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL; +a NULLIF(a,'') +NULL NULL + NULL +DROP TABLE t1; +CREATE TABLE t1 (a CHAR(10)); +INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); +SELECT a, NULLIF(a,'') FROM t1; +a NULLIF(a,'') +aaa aaa +NULL NULL + NULL +bbb bbb +SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL; +a NULLIF(a,'') +NULL NULL + NULL +DROP TABLE t1; diff --git a/mysql-test/t/func_if.test b/mysql-test/t/func_if.test index 693773b18c8..ae820fae93b 100644 --- a/mysql-test/t/func_if.test +++ b/mysql-test/t/func_if.test @@ -60,3 +60,30 @@ drop table t1; # Bug #5595 NULLIF() IS NULL returns false if NULLIF() returns NULL # SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL; +# +# Test to check evaluation of MULLIF when the first argument is NULL +# (motivated by the Bug 11142) +# + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 (a CHAR(10)); +INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); +SELECT a, NULLIF(a,'') FROM t1; +SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL; + +DROP TABLE t1; + +# +# Test for bug #11142: evaluation of NULLIF when the first argument is NULL +# + +CREATE TABLE t1 (a CHAR(10)); +INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); + +SELECT a, NULLIF(a,'') FROM t1; +SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL; + +DROP TABLE t1; diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 337ac949d35..3098e5dc77e 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1161,9 +1161,7 @@ Item_func_nullif::val_str(String *str) bool Item_func_nullif::is_null() { - if (!cmp.compare()) - return (null_value=1); - return 0; + return (null_value= (!cmp.compare() ? 1 : args[0]->null_value)); } /* From 754e6c05274f434211f71be6768524e426809d65 Mon Sep 17 00:00:00 2001 From: "igor@igor-inspiron.creware.com" <> Date: Mon, 13 Jun 2005 11:38:16 -0700 Subject: [PATCH 2/2] func_if.result, func_if.test: Correction for test case of bug #11142. --- mysql-test/r/func_if.result | 14 -------------- mysql-test/t/func_if.test | 15 --------------- 2 files changed, 29 deletions(-) diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result index dd8f34d53d2..2c8f19f1754 100644 --- a/mysql-test/r/func_if.result +++ b/mysql-test/r/func_if.result @@ -86,20 +86,6 @@ drop table t1; SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL; NULLIF(5,5) IS NULL NULLIF(5,5) IS NOT NULL 1 0 -DROP TABLE IF EXISTS t1; -CREATE TABLE t1 (a CHAR(10)); -INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); -SELECT a, NULLIF(a,'') FROM t1; -a NULLIF(a,'') -aaa aaa -NULL NULL - NULL -bbb bbb -SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL; -a NULLIF(a,'') -NULL NULL - NULL -DROP TABLE t1; CREATE TABLE t1 (a CHAR(10)); INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); SELECT a, NULLIF(a,'') FROM t1; diff --git a/mysql-test/t/func_if.test b/mysql-test/t/func_if.test index ae820fae93b..4333defa412 100644 --- a/mysql-test/t/func_if.test +++ b/mysql-test/t/func_if.test @@ -60,21 +60,6 @@ drop table t1; # Bug #5595 NULLIF() IS NULL returns false if NULLIF() returns NULL # SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL; -# -# Test to check evaluation of MULLIF when the first argument is NULL -# (motivated by the Bug 11142) -# - ---disable_warnings -DROP TABLE IF EXISTS t1; ---enable_warnings - -CREATE TABLE t1 (a CHAR(10)); -INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb'); -SELECT a, NULLIF(a,'') FROM t1; -SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL; - -DROP TABLE t1; # # Test for bug #11142: evaluation of NULLIF when the first argument is NULL