summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <tnurnberg@sin.intern.azundris.com>2007-03-03 00:56:21 +0100
committerunknown <tnurnberg@sin.intern.azundris.com>2007-03-03 00:56:21 +0100
commit44bfc3e99ea7c4cfc1909cfb8a538e8a4a21fbcd (patch)
treecc2ae55112ea45534988fc5639bc2d0bc90bf891 /sql
parent708d0d7248c74e1c0c850fe6a5bff5dfef631b2c (diff)
parentdd2e0cd083a140e75b3b05ffdc3b4d139d99cfda (diff)
downloadmariadb-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.cc23
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;
}