diff options
-rw-r--r-- | mysql-test/main/win.result | 17 | ||||
-rw-r--r-- | mysql-test/main/win.test | 14 | ||||
-rw-r--r-- | sql/item_windowfunc.cc | 2 |
3 files changed, 32 insertions, 1 deletions
diff --git a/mysql-test/main/win.result b/mysql-test/main/win.result index 3d56cd8e435..7607cebc3a5 100644 --- a/mysql-test/main/win.result +++ b/mysql-test/main/win.result @@ -3317,3 +3317,20 @@ DROP TABLE t1,t2; # # Start of 10.3 tests # +# +# MDEV-16489 when lead() returns null on a datetime field, the result is treated as the literal string '[NULL]' +# +CREATE TABLE t1 (d datetime); +INSERT INTO t1 VALUES ('2018-01-01 00:00:00'),('2018-02-01 00:00:00'); +SELECT *, LEAD(d) OVER (ORDER BY d) AS x FROM t1; +d x +2018-01-01 00:00:00 2018-02-01 00:00:00 +2018-02-01 00:00:00 NULL +DROP TABLE t1; +CREATE TABLE t1 (d time); +INSERT INTO t1 VALUES ('00:00:01'),('00:00:02'); +SELECT *, LEAD(d) OVER (ORDER BY d) AS x FROM t1; +d x +00:00:01 00:00:02 +00:00:02 NULL +DROP TABLE t1; diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index d483cdbaa83..4b73f70d737 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -2086,3 +2086,17 @@ DROP TABLE t1,t2; --echo # --echo # Start of 10.3 tests --echo # + +--echo # +--echo # MDEV-16489 when lead() returns null on a datetime field, the result is treated as the literal string '[NULL]' +--echo # + +CREATE TABLE t1 (d datetime); +INSERT INTO t1 VALUES ('2018-01-01 00:00:00'),('2018-02-01 00:00:00'); +SELECT *, LEAD(d) OVER (ORDER BY d) AS x FROM t1; +DROP TABLE t1; + +CREATE TABLE t1 (d time); +INSERT INTO t1 VALUES ('00:00:01'),('00:00:02'); +SELECT *, LEAD(d) OVER (ORDER BY d) AS x FROM t1; +DROP TABLE t1; diff --git a/sql/item_windowfunc.cc b/sql/item_windowfunc.cc index b523235b3ad..3ad0527384d 100644 --- a/sql/item_windowfunc.cc +++ b/sql/item_windowfunc.cc @@ -444,7 +444,7 @@ bool Item_sum_hybrid_simple::get_date(MYSQL_TIME *ltime, ulonglong fuzzydate) { DBUG_ASSERT(fixed == 1); if (null_value) - return 0; + return true; bool retval= value->get_date(ltime, fuzzydate); if ((null_value= value->null_value)) DBUG_ASSERT(retval == true); |