diff options
author | unknown <ramil/ram@mysql.com/myoffice.izhnet.ru> | 2006-12-04 17:06:25 +0400 |
---|---|---|
committer | unknown <ramil/ram@mysql.com/myoffice.izhnet.ru> | 2006-12-04 17:06:25 +0400 |
commit | 665004c8e0a83e72b735acd2721b91cc9e15e8a4 (patch) | |
tree | 3e658877ab80c379c8ea6e5684dd70fee52186a4 | |
parent | 870b2e0a2b4a66c6b4b4f15792d72a7415190650 (diff) | |
download | mariadb-git-665004c8e0a83e72b735acd2721b91cc9e15e8a4.tar.gz |
fix for bug #23938: ISNULL on DATE AND CAST AS DATE returns false for null values
Set null_value in case of wrong data.
mysql-test/r/cast.result:
fix for bug #23938: ISNULL on DATE AND CAST AS DATE returns false for null values
- test result.
mysql-test/t/cast.test:
fix for bug #23938: ISNULL on DATE AND CAST AS DATE returns false for null values
- test case.
sql/item_timefunc.cc:
fix for bug #23938: ISNULL on DATE AND CAST AS DATE returns false for null values
- set null_value in case of error.
-rw-r--r-- | mysql-test/r/cast.result | 4 | ||||
-rw-r--r-- | mysql-test/t/cast.test | 8 | ||||
-rw-r--r-- | sql/item_timefunc.cc | 3 |
3 files changed, 14 insertions, 1 deletions
diff --git a/mysql-test/r/cast.result b/mysql-test/r/cast.result index 101b9ac3f7e..23c38bb792c 100644 --- a/mysql-test/r/cast.result +++ b/mysql-test/r/cast.result @@ -278,3 +278,7 @@ double_val cast_val -1e+30 -9223372036854775808 1e+30 9223372036854775807 DROP TABLE t1; +select isnull(date(NULL)), isnull(cast(NULL as DATE)); +isnull(date(NULL)) isnull(cast(NULL as DATE)) +1 1 +End of 4.1 tests diff --git a/mysql-test/t/cast.test b/mysql-test/t/cast.test index b214cef10fa..7e8ef031e6b 100644 --- a/mysql-test/t/cast.test +++ b/mysql-test/t/cast.test @@ -167,4 +167,10 @@ INSERT INTO t1 SET f1 = +1.0e+30 ; SELECT f1 AS double_val, CAST(f1 AS SIGNED INT) AS cast_val FROM t1; DROP TABLE t1; -# End of 4.1 tests +# +# Bug #23938: cast(NULL as DATE) +# + +select isnull(date(NULL)), isnull(cast(NULL as DATE)); + +--echo End of 4.1 tests diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc index c1bca7afc60..8687ccc5f10 100644 --- a/sql/item_timefunc.cc +++ b/sql/item_timefunc.cc @@ -2507,7 +2507,10 @@ longlong Item_date_typecast::val_int() DBUG_ASSERT(fixed == 1); TIME ltime; if (args[0]->get_date(<ime, TIME_FUZZY_DATE)) + { + null_value= 1; return 0; + } return (longlong) (ltime.year * 10000L + ltime.month * 100 + ltime.day); } |