diff options
author | tnurnberg@mysql.com/sin.intern.azundris.com <> | 2007-03-03 01:00:30 +0100 |
---|---|---|
committer | tnurnberg@mysql.com/sin.intern.azundris.com <> | 2007-03-03 01:00:30 +0100 |
commit | 7217d207258b31af5439bbbebef65ecd78abf5ae (patch) | |
tree | 1e1d7a755ababd3dd857ac6b3291c44ca953fded /sql/field.cc | |
parent | 75ab386731a6821c17a912dd660a8cb91cff8573 (diff) | |
parent | f37267bb3c246a32ae4967f9860965cd4436abfd (diff) | |
download | mariadb-git-7217d207258b31af5439bbbebef65ecd78abf5ae.tar.gz |
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into mysql.com:/home/tnurnberg/21103/50-21103
Diffstat (limited to 'sql/field.cc')
-rw-r--r-- | sql/field.cc | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/sql/field.cc b/sql/field.cc index 367cbdaa0e5..a95d0069985 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5319,27 +5319,30 @@ void Field_date::sql_type(String &res) const int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs) { TIME l_time; - long tmp; int error; THD *thd= table ? table->in_use : current_thd; - if (str_to_datetime(from, len, &l_time, - (TIME_FUZZY_DATE | - (thd->variables.sql_mode & - (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | - MODE_INVALID_DATES))), - &error) <= MYSQL_TIMESTAMP_ERROR) + enum enum_mysql_timestamp_type ret; + if ((ret= str_to_datetime(from, len, &l_time, + (TIME_FUZZY_DATE | + (thd->variables.sql_mode & + (MODE_NO_ZERO_IN_DATE | MODE_NO_ZERO_DATE | + MODE_INVALID_DATES))), + &error)) <= MYSQL_TIMESTAMP_ERROR) { - tmp= 0L; + int3store(ptr,0L); error= 2; } else - tmp= l_time.day + l_time.month*32 + l_time.year*16*32; + { + int3store(ptr, l_time.day + l_time.month*32 + l_time.year*16*32); + if(!error && (ret != MYSQL_TIMESTAMP_DATE)) + return 2; + } if (error) set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, WARN_DATA_TRUNCATED, from, len, MYSQL_TIMESTAMP_DATE, 1); - int3store(ptr,tmp); return error; } |