Commit e4d2cbc0 authored by dlenev@mysql.com's avatar dlenev@mysql.com

Fix undeterministic behaviour of year check

if we failed to classify integer as datetime 
in Field_datetime::store().
Stylistic clean-ups.
parent 0add9610
...@@ -2569,7 +2569,8 @@ static longlong fix_datetime(longlong nr, TIME *time_res) ...@@ -2569,7 +2569,8 @@ static longlong fix_datetime(longlong nr, TIME *time_res)
time_res->minute=(int) part2 / 100; time_res->minute=(int) part2 / 100;
time_res->second=(int) part2 % 100; time_res->second=(int) part2 % 100;
if (time_res->month <= 12 && time_res->day <= 31 && time_res->hour <= 23 && if (time_res->year <= 9999 && time_res->month <= 12 &&
time_res->day <= 31 && time_res->hour <= 23 &&
time_res->minute <= 59 && time_res->second <= 59) time_res->minute <= 59 && time_res->second <= 59)
return nr; return nr;
...@@ -2584,7 +2585,7 @@ void Field_timestamp::store(longlong nr) ...@@ -2584,7 +2585,7 @@ void Field_timestamp::store(longlong nr)
TIME l_time; TIME l_time;
time_t timestamp; time_t timestamp;
if ((nr=fix_datetime(nr, &l_time))) if ((nr= fix_datetime(nr, &l_time)))
{ {
long not_used; long not_used;
...@@ -3432,15 +3433,10 @@ void Field_datetime::store(double nr) ...@@ -3432,15 +3433,10 @@ void Field_datetime::store(double nr)
void Field_datetime::store(longlong nr) void Field_datetime::store(longlong nr)
{ {
TIME l_time; TIME not_used;
nr=fix_datetime(nr, &l_time); nr= fix_datetime(nr, &not_used);
if (l_time.year > 9999)
{
nr=0;
current_thd->cuted_fields++;
}
#ifdef WORDS_BIGENDIAN #ifdef WORDS_BIGENDIAN
if (table->db_low_byte_first) if (table->db_low_byte_first)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment