diff options
author | unknown <tnurnberg@sin.intern.azundris.com> | 2007-03-03 00:56:21 +0100 |
---|---|---|
committer | unknown <tnurnberg@sin.intern.azundris.com> | 2007-03-03 00:56:21 +0100 |
commit | 44bfc3e99ea7c4cfc1909cfb8a538e8a4a21fbcd (patch) | |
tree | cc2ae55112ea45534988fc5639bc2d0bc90bf891 /sql | |
parent | 708d0d7248c74e1c0c850fe6a5bff5dfef631b2c (diff) | |
parent | dd2e0cd083a140e75b3b05ffdc3b4d139d99cfda (diff) | |
download | mariadb-git-44bfc3e99ea7c4cfc1909cfb8a538e8a4a21fbcd.tar.gz |
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.1-maint
into mysql.com:/home/tnurnberg/21103/51-21103
sql/field.cc:
Auto merged
Diffstat (limited to 'sql')
-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 5d4dbe9a416..6f8d1f5d092 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -5436,27 +5436,30 @@ int Field_newdate::store(const char *from,uint len,CHARSET_INFO *cs) { ASSERT_COLUMN_MARKED_FOR_WRITE; 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; } |