summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/main/win.result17
-rw-r--r--mysql-test/main/win.test14
-rw-r--r--sql/item_windowfunc.cc2
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);