summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <aivanov@mysql.com>2005-12-15 18:48:08 +0300
committerunknown <aivanov@mysql.com>2005-12-15 18:48:08 +0300
commit3d6179e7f18b7a453084d84ac632862e8273412c (patch)
tree9b272029a8f909f6854184ce5fe89b861c838022 /mysql-test
parentf0e7907ceb0df0517125d1dffc747c823946f304 (diff)
downloadmariadb-git-3d6179e7f18b7a453084d84ac632862e8273412c.tar.gz
Fixed BUG #12440: "Incorrect processing of time values containing
long fraction and/or large exponent part". mysql-test/r/type_time.result: Fixed testcases results (bug #12440) mysql-test/t/type_time.test: Added testcases for bug #12440 sql-common/my_time.c: Fixed bug #12440: "Incorrect processing of time values containing long fraction and/or large exponent part". Modified str_to_time(). Process properly fraction part containing more than 6 digits. Check for existence of exponent part which may result from %g formatting applied to time value specified as large real number.
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/type_time.result24
-rw-r--r--mysql-test/t/type_time.test14
2 files changed, 38 insertions, 0 deletions
diff --git a/mysql-test/r/type_time.result b/mysql-test/r/type_time.result
index 025cf2a57f1..cb76f699cd9 100644
--- a/mysql-test/r/type_time.result
+++ b/mysql-test/r/type_time.result
@@ -85,3 +85,27 @@ sec_to_time(time_to_sec(t))
13:00:00
09:00:00
drop table t1;
+SELECT CAST(235959.123456 AS TIME);
+CAST(235959.123456 AS TIME)
+23:59:59.123456
+SELECT CAST(0.235959123456e+6 AS TIME);
+CAST(0.235959123456e+6 AS TIME)
+23:59:59.123456
+SELECT CAST(235959123456e-6 AS TIME);
+CAST(235959123456e-6 AS TIME)
+23:59:59.123456
+SELECT CAST(235959.1234567 AS TIME);
+CAST(235959.1234567 AS TIME)
+23:59:59.123456
+Warnings:
+Warning 1292 Truncated incorrect time value: '235959.1234567'
+SELECT CAST(0.2359591234567e6 AS TIME);
+CAST(0.2359591234567e6 AS TIME)
+23:59:59.123456
+Warnings:
+Warning 1292 Truncated incorrect time value: '235959.1234567'
+SELECT CAST(0.2359591234567e+30 AS TIME);
+CAST(0.2359591234567e+30 AS TIME)
+NULL
+Warnings:
+Warning 1292 Truncated incorrect time value: '2.359591234567e+29'
diff --git a/mysql-test/t/type_time.test b/mysql-test/t/type_time.test
index 7ae3f65f7cc..9abfe914335 100644
--- a/mysql-test/t/type_time.test
+++ b/mysql-test/t/type_time.test
@@ -21,4 +21,18 @@ select t, time_to_sec(t),sec_to_time(time_to_sec(t)) from t1;
select sec_to_time(time_to_sec(t)) from t1;
drop table t1;
+#
+# BUG #12440: Incorrect processing of time values containing
+# long fraction part and/or large exponent part.
+#
+# These must return normal result:
+SELECT CAST(235959.123456 AS TIME);
+SELECT CAST(0.235959123456e+6 AS TIME);
+SELECT CAST(235959123456e-6 AS TIME);
+# These must cut fraction part and produce warning:
+SELECT CAST(235959.1234567 AS TIME);
+SELECT CAST(0.2359591234567e6 AS TIME);
+# This must return NULL and produce warning:
+SELECT CAST(0.2359591234567e+30 AS TIME);
+
# End of 4.1 tests