summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <igor@igor-inspiron.creware.com>2005-06-13 11:45:29 -0700
committerunknown <igor@igor-inspiron.creware.com>2005-06-13 11:45:29 -0700
commitd039d345e69017d6e1937bc31f8e411336f83683 (patch)
tree6589c3bbdc00cecba70b67ca4532f99328e8ada1
parent1a0bddb84d5c93af339e7c5ce1a45c7cbde59071 (diff)
parenta4535bc827f38899270c4bca37c544198f6a9e2a (diff)
downloadmariadb-git-d039d345e69017d6e1937bc31f8e411336f83683.tar.gz
Manual merge
sql/item_cmpfunc.cc: Auto merged mysql-test/r/func_if.result: Manual merge.
-rw-r--r--mysql-test/r/func_if.result13
-rw-r--r--mysql-test/t/func_if.test23
-rw-r--r--sql/item_cmpfunc.cc4
3 files changed, 24 insertions, 16 deletions
diff --git a/mysql-test/r/func_if.result b/mysql-test/r/func_if.result
index 3e72fb45a14..aee23b38ca5 100644
--- a/mysql-test/r/func_if.result
+++ b/mysql-test/r/func_if.result
@@ -108,3 +108,16 @@ id date_ord text
2 16-03-2005 Day 2
1 05-03-2005 Day 1
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 37556984f68..4333defa412 100644
--- a/mysql-test/t/func_if.test
+++ b/mysql-test/t/func_if.test
@@ -25,10 +25,9 @@ explain extended select if(u=1,st,binary st) s from t1 where st like "%a%" order
#
# NULLIF test
#
-select nullif(u, 1) from t1;
-explain extended select nullif(u, 1) from t1;
+select nullif(u=0, 'test') from t1;
+explain extended select nullif(u=0, 'test') from t1;
drop table t1;
-select nullif(1,'test');
#
# Bug 2629
@@ -63,15 +62,13 @@ drop table t1;
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
#
-# Bug #9669 Ordering on IF function with FROM_UNIXTIME function fails
+# Test for bug #11142: evaluation of NULLIF when the first argument is NULL
#
-CREATE TABLE `t1` (
- `id` int(11) NOT NULL ,
- `date` int(10) default NULL,
- `text` varchar(32) NOT NULL
-);
-INSERT INTO t1 VALUES (1,1110000000,'Day 1'),(2,1111000000,'Day 2'),(3,1112000000,'Day 3');
-SELECT id, IF(date IS NULL, '-', FROM_UNIXTIME(date, '%d-%m-%Y')) AS date_ord, text FROM t1 ORDER BY date_ord ASC;
-SELECT id, IF(date IS NULL, '-', FROM_UNIXTIME(date, '%d-%m-%Y')) AS date_ord, text FROM t1 ORDER BY date_ord DESC;
-DROP TABLE t1;
+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 b5b37efaf07..e79a356c4d3 100644
--- a/sql/item_cmpfunc.cc
+++ b/sql/item_cmpfunc.cc
@@ -1406,9 +1406,7 @@ Item_func_nullif::val_decimal(my_decimal * decimal_value)
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));
}
/*