summaryrefslogtreecommitdiff
path: root/sql/set_var.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r--sql/set_var.cc29
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;
}