summaryrefslogtreecommitdiff
path: root/sql/set_var.cc
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2011-06-06 20:28:15 +0200
committerSergei Golubchik <sergii@pisem.net>2011-06-06 20:28:15 +0200
commit4d128777dde904c5f0adab9b093e854c9c580d41 (patch)
tree36875e84e65be596def46c5d7ce621e60abcbdae /sql/set_var.cc
parentc1a92f9caeb368021d5ffbe0df237ded29692c1a (diff)
downloadmariadb-git-4d128777dde904c5f0adab9b093e854c9c580d41.tar.gz
revert a suggested "optimization" that introduced a bug
compilation error in mysys/my_getsystime.c fixed some redundant code removed sec_to_time, time_to_sec, from_unixtime, unix_timestamp, @@timestamp now use decimal, not double for numbers with a fractional part. purge_master_logs_before_date() fixed many bugs in corner cases fixed mysys/my_getsystime.c: compilation failure fixed sql/sql_parse.cc: don't cut corners. it backfires.
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r--sql/set_var.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc
index 376364bab60..d66a72fcf2b 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -2715,15 +2715,19 @@ int set_var_collation_client::update(THD *thd)
bool sys_var_timestamp::check(THD *thd, set_var *var)
{
- double val= var->value->val_real();
- if (val < 0 || val > MY_TIME_T_MAX)
+ ulonglong sec;
+ ulong sec_part;
+ if (var->value->get_seconds(&sec, &sec_part))
+ return TRUE;
+
+ if (sec > TIMESTAMP_MAX_VALUE)
{
my_message(ER_UNKNOWN_ERROR,
"This version of MySQL doesn't support dates later than 2038",
MYF(0));
return TRUE;
}
- var->save_result.ulonglong_value= hrtime_from_time(var->value->val_real());
+ var->save_result.ulonglong_value= hrtime_from_time(sec)+sec_part;
return FALSE;
}