summaryrefslogtreecommitdiff
path: root/sql/field.cc
diff options
context:
space:
mode:
authorunknown <tnurnberg@mysql.com/sin.intern.azundris.com>2007-03-03 01:00:30 +0100
committerunknown <tnurnberg@mysql.com/sin.intern.azundris.com>2007-03-03 01:00:30 +0100
commit81c3505967461a0848fb3c06a12b3bf1371a4f2f (patch)
tree1e1d7a755ababd3dd857ac6b3291c44ca953fded /sql/field.cc
parent6e6fa326da3a41aac8768ddb22923d5f6291c762 (diff)
parentfed9bb9820fe89a47f355a9027166ccaf58bf336 (diff)
downloadmariadb-git-81c3505967461a0848fb3c06a12b3bf1371a4f2f.tar.gz
Merge tnurnberg@bk-internal.mysql.com:/home/bk/mysql-5.0-maint
into mysql.com:/home/tnurnberg/21103/50-21103 sql/field.cc: Auto merged
Diffstat (limited to 'sql/field.cc')
-rw-r--r--sql/field.cc23
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;
}