diff options
author | monty@mysql.com <> | 2005-03-30 23:41:42 +0300 |
---|---|---|
committer | monty@mysql.com <> | 2005-03-30 23:41:42 +0300 |
commit | b43b7dc1281bc6fd778e05b45eade61522bee797 (patch) | |
tree | 9f1a5efed756a410b3f02ca9f986269d3e766bef /sql/field.cc | |
parent | fac67f091c8ff454c4033776f02ea0a183912f1c (diff) | |
download | mariadb-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.cc | 18 |
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, |