diff --git a/mysql-test/r/func_time.result b/mysql-test/r/func_time.result index bad467b3255..bd591299455 100644 --- a/mysql-test/r/func_time.result +++ b/mysql-test/r/func_time.result @@ -1433,6 +1433,21 @@ NULL 1 NULL SET storage_engine=NULL; ERROR 42000: Variable 'storage_engine' can't be set to the value of 'NULL' # +# BUG#13354387 - CRASH IN IN MY_DECIMAL::OPERATOR FOR VIEW AND FUNCTION UNIX_TIMESTAMP +# Part1 (5.5) +SET time_zone='+03:00'; +CREATE TABLE t1 (a DATETIME NOT NULL); +INSERT INTO t1 VALUES ('2009-09-20 07:32:39.06'); +INSERT INTO t1 VALUES ('0000-00-00 00:00:00.00'); +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT CAST(UNIX_TIMESTAMP(a) AS DECIMAL(25,3)) AS c1 FROM v1 ORDER BY 1; +c1 +0.000 +1253421159.000 +DROP VIEW v1; +DROP TABLE t1; +SET time_zone=DEFAULT; +# # Bug #59686 crash in String::copy() with time data type # SELECT min(timestampadd(month, 1>'', from_days('%Z'))); diff --git a/mysql-test/t/func_time.test b/mysql-test/t/func_time.test index 57a5a656591..d385a079f64 100644 --- a/mysql-test/t/func_time.test +++ b/mysql-test/t/func_time.test @@ -940,6 +940,21 @@ SELECT MONTHNAME(0), MONTHNAME(0) IS NULL, MONTHNAME(0) + 1; --error ER_WRONG_VALUE_FOR_VAR SET storage_engine=NULL; + +--echo # +--echo # BUG#13354387 - CRASH IN IN MY_DECIMAL::OPERATOR FOR VIEW AND FUNCTION UNIX_TIMESTAMP +--echo # Part1 (5.5) +SET time_zone='+03:00'; +CREATE TABLE t1 (a DATETIME NOT NULL); +INSERT INTO t1 VALUES ('2009-09-20 07:32:39.06'); +INSERT INTO t1 VALUES ('0000-00-00 00:00:00.00'); +CREATE VIEW v1 AS SELECT * FROM t1; +SELECT CAST(UNIX_TIMESTAMP(a) AS DECIMAL(25,3)) AS c1 FROM v1 ORDER BY 1; +DROP VIEW v1; +DROP TABLE t1; +SET time_zone=DEFAULT; + + --echo # --echo # Bug #59686 crash in String::copy() with time data type --echo # diff --git a/sql/item.cc b/sql/item.cc index c8c68a3924b..edb4dc60277 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -6812,7 +6812,9 @@ bool Item_direct_ref::is_null() bool Item_direct_ref::get_date(MYSQL_TIME *ltime,uint fuzzydate) { - return (null_value=(*ref)->get_date(ltime,fuzzydate)); + bool tmp= (*ref)->get_date(ltime, fuzzydate); + null_value= (*ref)->null_value; + return tmp; }