summaryrefslogtreecommitdiff
path: root/sql/item_timefunc.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2014-06-04 20:32:57 +0400
committerAlexander Barkov <bar@mariadb.org>2014-06-04 20:32:57 +0400
commit661daf16f11ffa879ffb005008b6e73f6744e0ad (patch)
treec0f1facac5d17e590dc2aa12353d2f513c007bdf /sql/item_timefunc.cc
parenta1975dd2c106180ab16836631e6797cff5b4e396 (diff)
downloadmariadb-git-661daf16f11ffa879ffb005008b6e73f6744e0ad.tar.gz
MDEV-4858 Wrong results for a huge unsigned value inserted into a TIME column
MDEV-6099 Bad results for DATE_ADD(.., INTERVAL 2000000000000000000.0 SECOND) MDEV-6097 Inconsistent results for CAST(int,decimal,double AS DATETIME) MDEV-6100 No warning on CAST(9000000 AS TIME)
Diffstat (limited to 'sql/item_timefunc.cc')
-rw-r--r--sql/item_timefunc.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index fbc7bc36842..bb93fc08faa 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -1206,6 +1206,18 @@ bool get_interval_value(Item *args,interval_type int_type,
if (!(val= args->val_decimal(&decimal_value)))
return true;
interval->neg= my_decimal2seconds(val, &second, &second_part);
+ if (second == LONGLONG_MAX)
+ {
+ char buff[DECIMAL_MAX_STR_LENGTH];
+ int length= sizeof(buff);
+ decimal2string(val, buff, &length, 0, 0, 0);
+ push_warning_printf(current_thd, MYSQL_ERROR::WARN_LEVEL_WARN,
+ ER_TRUNCATED_WRONG_VALUE,
+ ER(ER_TRUNCATED_WRONG_VALUE), "DECIMAL",
+ buff);
+ return true;
+ }
+
interval->second= second;
interval->second_part= second_part;
return false;