summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authormonty@mysql.com <>2005-03-30 23:41:42 +0300
committermonty@mysql.com <>2005-03-30 23:41:42 +0300
commitb43b7dc1281bc6fd778e05b45eade61522bee797 (patch)
tree9f1a5efed756a410b3f02ca9f986269d3e766bef /sql/field.cc
parentfac67f091c8ff454c4033776f02ea0a183912f1c (diff)
downloadmariadb-git-b43b7dc1281bc6fd778e05b45eade61522bee797.tar.gz
Enabled more tests of STR_TO_DATE()
Fixed that datetime gives warning for zero dates in traditional mode
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/sql/field.cc b/sql/field.cc
index 3de839ddc3a..7850daac8c7 100644
--- a/sql/field.cc
+++ b/sql/field.cc
@@ -4699,15 +4699,19 @@ int Field_datetime::store(const char *from,uint len,CHARSET_INFO *cs)
TIME time_tmp;
int error;
ulonglong tmp= 0;
+ enum enum_mysql_timestamp_type func_res;
- if (str_to_datetime(from, len, &time_tmp,
- (TIME_FUZZY_DATE |
- (table->in_use->variables.sql_mode &
- (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
- MODE_INVALID_DATES))),
- &error) > MYSQL_TIMESTAMP_ERROR)
+ func_res= str_to_datetime(from, len, &time_tmp,
+ (TIME_FUZZY_DATE |
+ (table->in_use->variables.sql_mode &
+ (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE |
+ MODE_INVALID_DATES))),
+ &error);
+ if ((int) func_res > (int) MYSQL_TIMESTAMP_ERROR)
tmp= TIME_to_ulonglong_datetime(&time_tmp);
-
+ else
+ error= 1; // Fix if invalid zero date
+
if (error)
set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
ER_WARN_DATA_OUT_OF_RANGE,