diff options
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r-- | sql/set_var.cc | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc index d546494e6a9..9198832dd3c 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -2819,10 +2819,26 @@ int set_var_collation_client::update(THD *thd) /****************************************************************************/ +bool sys_var_timestamp::check(THD *thd, set_var *var) +{ + time_t val; + var->save_result.ulonglong_value= var->value->val_int(); + val= (time_t) var->save_result.ulonglong_value; + if (val < (time_t) MY_TIME_T_MIN || val > (time_t) MY_TIME_T_MAX) + { + my_message(ER_UNKNOWN_ERROR, + "This version of MySQL doesn't support dates later than 2038", + MYF(0)); + return TRUE; + } + return FALSE; +} + + bool sys_var_timestamp::update(THD *thd, set_var *var) { thd->set_time((time_t) var->save_result.ulonglong_value); - return 0; + return FALSE; } @@ -4297,8 +4313,14 @@ bool sys_var_thd_dbug::check(THD *thd, set_var *var) bool sys_var_thd_dbug::update(THD *thd, set_var *var) { -#ifndef DBUG_OFF - const char *command= var ? var->value->str_value.c_ptr() : ""; + char buf[256]; + String str(buf, sizeof(buf), system_charset_info), *res; + const char *command; + + res= var->value->val_str(&str); + command= res ? res->c_ptr(): 0; + if (!command) + command= ""; if (var->type == OPT_GLOBAL) DBUG_SET_INITIAL(command); @@ -4318,7 +4340,6 @@ bool sys_var_thd_dbug::update(THD *thd, set_var *var) DBUG_PUSH(command); } } -#endif return 0; } |