summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/main/type_time.result9
-rw-r--r--mysql-test/main/type_time.test9
-rw-r--r--sql/sql_type.cc1
3 files changed, 19 insertions, 0 deletions
diff --git a/mysql-test/main/type_time.result b/mysql-test/main/type_time.result
index 38b732d6f16..725b25f4f42 100644
--- a/mysql-test/main/type_time.result
+++ b/mysql-test/main/type_time.result
@@ -2177,5 +2177,14 @@ ERROR 22007: Incorrect time value: '0000-00-00 00:00:00' for column `test`.`t1`.
SET sql_mode=DEFAULT;
DROP TABLE t1;
#
+# MDEV-18070 Assertion `nanoseconds <= 1000000000' failed in Temporal::add_nanoseconds_ssff with TIME_ROUND_FRACTIONAL
+#
+CREATE TABLE t1 (t TIME);
+SET SQL_MODE= 'TIME_ROUND_FRACTIONAL';
+INSERT INTO t1 VALUES (3e19);
+Warnings:
+Warning 1264 Out of range value for column 't' at row 1
+DROP TABLE t1;
+#
# End of 10.4 tests
#
diff --git a/mysql-test/main/type_time.test b/mysql-test/main/type_time.test
index 67f714e61db..7eb75b95af2 100644
--- a/mysql-test/main/type_time.test
+++ b/mysql-test/main/type_time.test
@@ -1420,6 +1420,15 @@ INSERT INTO t1 VALUES ('0000-00-00 00:00:00'),('0000-00-00 00:00:00');
SET sql_mode=DEFAULT;
DROP TABLE t1;
+--echo #
+--echo # MDEV-18070 Assertion `nanoseconds <= 1000000000' failed in Temporal::add_nanoseconds_ssff with TIME_ROUND_FRACTIONAL
+--echo #
+
+CREATE TABLE t1 (t TIME);
+SET SQL_MODE= 'TIME_ROUND_FRACTIONAL';
+INSERT INTO t1 VALUES (3e19);
+DROP TABLE t1;
+
--echo #
--echo # End of 10.4 tests
diff --git a/sql/sql_type.cc b/sql/sql_type.cc
index 263b5198588..96a73a85267 100644
--- a/sql/sql_type.cc
+++ b/sql/sql_type.cc
@@ -331,6 +331,7 @@ void Sec6::make_from_double(double nr, ulong *nanoseconds)
{
m_sec= LONGLONG_MAX;
m_usec= 0;
+ *nanoseconds= 0;
}
else
{