diff options
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r-- | sql/set_var.cc | 82 |
1 files changed, 47 insertions, 35 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc index 56ebdbcade1..0eaa450d09c 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -58,7 +58,7 @@ #include <my_getopt.h> #include <thr_alarm.h> #include <myisam.h> -#ifdef WITH_MARIA_STORAGE_ENGINE +#ifdef WITH_ARIA_STORAGE_ENGINE #include <maria.h> #endif #include <my_dir.h> @@ -95,14 +95,13 @@ TYPELIB delay_key_write_typelib= delay_key_write_type_names, NULL }; -const char *slave_exec_mode_names[]= -{ "STRICT", "IDEMPOTENT", NullS }; -static const unsigned int slave_exec_mode_names_len[]= -{ sizeof("STRICT") - 1, sizeof("IDEMPOTENT") - 1, 0 }; +static const char *slave_exec_mode_names[]= { "STRICT", "IDEMPOTENT", NullS }; +static unsigned int slave_exec_mode_names_len[]= { sizeof("STRICT") - 1, + sizeof("IDEMPOTENT") - 1, 0 }; TYPELIB slave_exec_mode_typelib= { array_elements(slave_exec_mode_names)-1, "", - slave_exec_mode_names, (unsigned int *) slave_exec_mode_names_len + slave_exec_mode_names, slave_exec_mode_names_len }; static int sys_check_ftb_syntax(THD *thd, set_var *var); @@ -609,9 +608,8 @@ static sys_var_thd_ulong sys_trans_prealloc_size(&vars, "transaction_prealloc_si &SV::trans_prealloc_size, 0, fix_trans_mem_root); sys_var_enum_const sys_thread_handling(&vars, "thread_handling", - &SV::thread_handling, - &thread_handling_typelib, - NULL); + &thread_handling, + &thread_handling_typelib); #ifdef HAVE_QUERY_CACHE static sys_var_long_ptr sys_query_cache_limit(&vars, "query_cache_limit", @@ -974,6 +972,9 @@ static sys_var_readonly sys_myisam_mmap_size(&vars, "myisam_mmap_size", SHOW_LONGLONG, get_myisam_mmap_size); +static sys_var_enum_const sys_plugin_maturity(&vars, "plugin_maturity", + &plugin_maturity, + &plugin_maturity_values); bool sys_var::check(THD *thd, set_var *var) { @@ -1236,21 +1237,21 @@ extern void fix_delay_key_write(THD *thd, enum_var_type type) switch ((enum_delay_key_write) delay_key_write_options) { case DELAY_KEY_WRITE_NONE: myisam_delay_key_write=0; -#ifdef WITH_MARIA_STORAGE_ENGINE +#ifdef WITH_ARIA_STORAGE_ENGINE maria_delay_key_write= 0; #endif ha_open_options&= ~HA_OPEN_DELAY_KEY_WRITE; break; case DELAY_KEY_WRITE_ON: myisam_delay_key_write=1; -#ifdef WITH_MARIA_STORAGE_ENGINE +#ifdef WITH_ARIA_STORAGE_ENGINE maria_delay_key_write= 1; #endif ha_open_options&= ~HA_OPEN_DELAY_KEY_WRITE; break; case DELAY_KEY_WRITE_ALL: myisam_delay_key_write=1; -#ifdef WITH_MARIA_STORAGE_ENGINE +#ifdef WITH_ARIA_STORAGE_ENGINE maria_delay_key_write= 1; #endif ha_open_options|= HA_OPEN_DELAY_KEY_WRITE; @@ -1290,7 +1291,7 @@ uchar *sys_var_set::value_ptr(THD *thd, enum_var_type type, void sys_var_set_slave_mode::set_default(THD *thd, enum_var_type type) { - slave_exec_mode_options= (ULL(1) << SLAVE_EXEC_MODE_STRICT); + slave_exec_mode_options= SLAVE_EXEC_MODE_STRICT; } bool sys_var_set_slave_mode::check(THD *thd, set_var *var) @@ -1298,8 +1299,7 @@ bool sys_var_set_slave_mode::check(THD *thd, set_var *var) bool rc= sys_var_set::check(thd, var); if (!rc && test_all_bits(var->save_result.ulong_value, - ((ULL(1) << SLAVE_EXEC_MODE_STRICT) | - (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT)))) + SLAVE_EXEC_MODE_STRICT | SLAVE_EXEC_MODE_IDEMPOTENT)) { rc= true; my_error(ER_SLAVE_AMBIGOUS_EXEC_MODE, MYF(0), ""); @@ -1316,21 +1316,18 @@ bool sys_var_set_slave_mode::update(THD *thd, set_var *var) return rc; } -void fix_slave_exec_mode(enum_var_type type) +void fix_slave_exec_mode(void) { DBUG_ENTER("fix_slave_exec_mode"); - compile_time_assert(sizeof(slave_exec_mode_options) * CHAR_BIT - > SLAVE_EXEC_MODE_LAST_BIT - 1); + if (test_all_bits(slave_exec_mode_options, - ((ULL(1) << SLAVE_EXEC_MODE_STRICT) | - (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT)))) + SLAVE_EXEC_MODE_STRICT | SLAVE_EXEC_MODE_IDEMPOTENT)) { - sql_print_error("Ambiguous slave modes combination." - " STRICT will be used"); - slave_exec_mode_options&= ~(ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT); + sql_print_error("Ambiguous slave modes combination. STRICT will be used"); + slave_exec_mode_options&= ~SLAVE_EXEC_MODE_IDEMPOTENT; } - if (!(slave_exec_mode_options & (ULL(1) << SLAVE_EXEC_MODE_IDEMPOTENT))) - slave_exec_mode_options|= (ULL(1)<< SLAVE_EXEC_MODE_STRICT); + if (!(slave_exec_mode_options & SLAVE_EXEC_MODE_IDEMPOTENT)) + slave_exec_mode_options|= SLAVE_EXEC_MODE_STRICT; DBUG_VOID_RETURN; } @@ -1706,12 +1703,6 @@ uchar *sys_var_enum::value_ptr(THD *thd, enum_var_type type, LEX_STRING *base) return (uchar*) enum_names->type_names[*value]; } -uchar *sys_var_enum_const::value_ptr(THD *thd, enum_var_type type, - LEX_STRING *base) -{ - return (uchar*) enum_names->type_names[global_system_variables.*offset]; -} - bool sys_var_thd_ulong::check(THD *thd, set_var *var) { if (get_unsigned(thd, var, max_system_variables.*offset, GET_ULONG)) @@ -2850,10 +2841,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; } @@ -4329,8 +4336,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); @@ -4350,7 +4363,6 @@ bool sys_var_thd_dbug::update(THD *thd, set_var *var) DBUG_PUSH(command); } } -#endif return 0; } |