mirror of
https://github.com/MariaDB/server.git
synced 2025-03-25 00:18:42 +01:00
cleanup: sysvar, only one common check_update_type()
This commit is contained in:
parent
051c132635
commit
28ebc2a724
3 changed files with 31 additions and 70 deletions
|
@ -132,7 +132,31 @@ public:
|
|||
bool is_struct() { return option.var_type & GET_ASK_ADDR; }
|
||||
bool is_written_to_binlog(enum_var_type type)
|
||||
{ return type != OPT_GLOBAL && binlog_status == SESSION_VARIABLE_IN_BINLOG; }
|
||||
virtual bool check_update_type(Item_result type) = 0;
|
||||
bool check_update_type(Item_result type)
|
||||
{
|
||||
switch (option.var_type & GET_TYPE_MASK) {
|
||||
case GET_INT:
|
||||
case GET_UINT:
|
||||
case GET_LONG:
|
||||
case GET_ULONG:
|
||||
case GET_LL:
|
||||
case GET_ULL:
|
||||
return type != INT_RESULT;
|
||||
case GET_STR:
|
||||
case GET_STR_ALLOC:
|
||||
return type != STRING_RESULT;
|
||||
case GET_ENUM:
|
||||
case GET_BOOL:
|
||||
case GET_SET:
|
||||
case GET_FLAGSET:
|
||||
return type != STRING_RESULT && type != INT_RESULT;
|
||||
case GET_DOUBLE:
|
||||
return type != INT_RESULT && type != REAL_RESULT && type != DECIMAL_RESULT;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
bool check_type(enum_var_type type)
|
||||
{
|
||||
switch (scope())
|
||||
|
|
|
@ -273,7 +273,6 @@ public:
|
|||
plugin_var(plugin_var_arg)
|
||||
{ plugin_var->name= name_arg; }
|
||||
sys_var_pluginvar *cast_pluginvar() { return this; }
|
||||
bool check_update_type(Item_result type);
|
||||
SHOW_TYPE show_type();
|
||||
uchar* real_value_ptr(THD *thd, enum_var_type type);
|
||||
TYPELIB* plugin_var_typelib(void);
|
||||
|
@ -3251,27 +3250,6 @@ static SHOW_TYPE pluginvar_show_type(st_mysql_sys_var *plugin_var)
|
|||
}
|
||||
|
||||
|
||||
bool sys_var_pluginvar::check_update_type(Item_result type)
|
||||
{
|
||||
switch (plugin_var->flags & PLUGIN_VAR_TYPEMASK) {
|
||||
case PLUGIN_VAR_INT:
|
||||
case PLUGIN_VAR_LONG:
|
||||
case PLUGIN_VAR_LONGLONG:
|
||||
return type != INT_RESULT;
|
||||
case PLUGIN_VAR_STR:
|
||||
return type != STRING_RESULT;
|
||||
case PLUGIN_VAR_ENUM:
|
||||
case PLUGIN_VAR_BOOL:
|
||||
case PLUGIN_VAR_SET:
|
||||
return type != STRING_RESULT && type != INT_RESULT;
|
||||
case PLUGIN_VAR_DOUBLE:
|
||||
return type != INT_RESULT && type != REAL_RESULT && type != DECIMAL_RESULT;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uchar* sys_var_pluginvar::real_value_ptr(THD *thd, enum_var_type type)
|
||||
{
|
||||
DBUG_ASSERT(thd || (type == OPT_GLOBAL));
|
||||
|
|
|
@ -208,8 +208,6 @@ public:
|
|||
global_var(T)= static_cast<T>(var->save_result.ulonglong_value);
|
||||
return false;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != INT_RESULT; }
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{ var->save_result.ulonglong_value= (ulonglong)*(T*)global_value_ptr(thd, 0); }
|
||||
void global_save_default(THD *thd, set_var *var)
|
||||
|
@ -284,8 +282,6 @@ public:
|
|||
|
||||
return false;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != INT_RESULT && type != STRING_RESULT; }
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -499,8 +495,6 @@ public:
|
|||
var->save_result.string_value.str= ptr;
|
||||
var->save_result.string_value.length= ptr ? strlen(ptr) : 0;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
};
|
||||
|
||||
|
||||
|
@ -536,8 +530,6 @@ public:
|
|||
{ DBUG_ASSERT(FALSE); }
|
||||
void global_save_default(THD *thd, set_var *var)
|
||||
{ DBUG_ASSERT(FALSE); }
|
||||
bool check_update_type(Item_result type)
|
||||
{ return true; }
|
||||
protected:
|
||||
virtual uchar *session_value_ptr(THD *thd, LEX_STRING *base)
|
||||
{
|
||||
|
@ -580,9 +572,6 @@ public:
|
|||
{
|
||||
return Sys_var_charptr::do_string_check(thd, var, charset(thd));
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{ DBUG_ASSERT(FALSE); }
|
||||
|
||||
|
@ -665,7 +654,7 @@ public:
|
|||
0, VARIABLE_NOT_IN_BINLOG, on_check_func, on_update_func,
|
||||
0),max_length(max_length_arg)
|
||||
{
|
||||
option.var_type= GET_NO_ARG;
|
||||
option.var_type= GET_STR;
|
||||
SYSVAR_ASSERT(scope() == ONLY_SESSION)
|
||||
*const_cast<SHOW_TYPE*>(&show_val_type)= SHOW_LEX_STRING;
|
||||
}
|
||||
|
@ -725,14 +714,12 @@ public:
|
|||
DBUG_ASSERT(FALSE);
|
||||
return NULL;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
};
|
||||
|
||||
|
||||
#ifndef DBUG_OFF
|
||||
/**
|
||||
@@session.dbug and @@global.dbug variables.
|
||||
@@session.debug_dbug and @@global.debug_dbug variables.
|
||||
|
||||
@@dbug variable differs from other variables in one aspect:
|
||||
if its value is not assigned in the session, it "points" to the global
|
||||
|
@ -757,7 +744,7 @@ public:
|
|||
getopt.arg_type, SHOW_CHAR, (intptr)def_val,
|
||||
lock, binlog_status_arg, on_check_func, on_update_func,
|
||||
substitute)
|
||||
{ option.var_type= GET_NO_ARG; }
|
||||
{ option.var_type= GET_STR; }
|
||||
bool do_check(THD *thd, set_var *var)
|
||||
{
|
||||
char buff[STRING_BUFFER_USUAL_SIZE];
|
||||
|
@ -803,8 +790,6 @@ public:
|
|||
DBUG_EXPLAIN_INITIAL(buf, sizeof(buf));
|
||||
return (uchar*) thd->strdup(buf);
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -1031,10 +1016,6 @@ public:
|
|||
global_var(double)= var->save_result.double_value;
|
||||
return false;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{
|
||||
return type != INT_RESULT && type != REAL_RESULT && type != DECIMAL_RESULT;
|
||||
}
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{ var->save_result.double_value= global_var(double); }
|
||||
void global_save_default(THD *thd, set_var *var)
|
||||
|
@ -1408,8 +1389,6 @@ public:
|
|||
var->save_result.plugin= my_plugin_lock(thd, plugin);
|
||||
}
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
uchar *session_value_ptr(THD *thd, LEX_STRING *base)
|
||||
{
|
||||
plugin_ref plugin= session_var(thd, plugin_ref);
|
||||
|
@ -1445,7 +1424,7 @@ public:
|
|||
substitute)
|
||||
{
|
||||
SYSVAR_ASSERT(scope() == ONLY_SESSION);
|
||||
option.var_type= GET_NO_ARG;
|
||||
option.var_type= GET_STR;
|
||||
}
|
||||
bool do_check(THD *thd, set_var *var)
|
||||
{
|
||||
|
@ -1487,8 +1466,6 @@ public:
|
|||
DBUG_ASSERT(FALSE);
|
||||
return 0;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
};
|
||||
#endif /* defined(ENABLED_DEBUG_SYNC) */
|
||||
|
||||
|
@ -1747,7 +1724,6 @@ public:
|
|||
{
|
||||
return (uchar*)show_comp_option_name[global_var(enum SHOW_COMP_OPTION)];
|
||||
}
|
||||
bool check_update_type(Item_result type) { return false; }
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -1783,7 +1759,7 @@ public:
|
|||
substitute),
|
||||
name_offset(name_off)
|
||||
{
|
||||
option.var_type= GET_STR;
|
||||
option.var_type= GET_ENUM; // because we accept INT and STRING here
|
||||
/*
|
||||
struct variables are special on the command line - often (e.g. for
|
||||
charsets) the name cannot be immediately resolved, but only after all
|
||||
|
@ -1814,8 +1790,6 @@ public:
|
|||
void **default_value= reinterpret_cast<void**>(option.def_value);
|
||||
var->save_result.ptr= *default_value;
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != INT_RESULT && type != STRING_RESULT; }
|
||||
uchar *session_value_ptr(THD *thd, LEX_STRING *base)
|
||||
{
|
||||
uchar *ptr= session_var(thd, uchar*);
|
||||
|
@ -1856,6 +1830,7 @@ public:
|
|||
{
|
||||
SYSVAR_ASSERT(getopt.id < 0);
|
||||
SYSVAR_ASSERT(size == sizeof(Time_zone *));
|
||||
option.var_type= GET_STR;
|
||||
}
|
||||
bool do_check(THD *thd, set_var *var)
|
||||
{
|
||||
|
@ -1910,8 +1885,6 @@ public:
|
|||
{
|
||||
return (uchar *)(global_var(Time_zone*)->get_name()->ptr());
|
||||
}
|
||||
bool check_update_type(Item_result type)
|
||||
{ return type != STRING_RESULT; }
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -2092,10 +2065,6 @@ public:
|
|||
DBUG_ASSERT(false);
|
||||
return true;
|
||||
}
|
||||
bool check_update_type(Item_result type) {
|
||||
DBUG_ASSERT(false);
|
||||
return false;
|
||||
}
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{
|
||||
DBUG_ASSERT(false);
|
||||
|
@ -2143,10 +2112,6 @@ public:
|
|||
DBUG_ASSERT(false);
|
||||
return true;
|
||||
}
|
||||
bool check_update_type(Item_result type) {
|
||||
DBUG_ASSERT(false);
|
||||
return false;
|
||||
}
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{
|
||||
DBUG_ASSERT(false);
|
||||
|
@ -2186,7 +2151,6 @@ public:
|
|||
return true;
|
||||
}
|
||||
bool global_update(THD *thd, set_var *var);
|
||||
bool check_update_type(Item_result type) { return type != STRING_RESULT; }
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{
|
||||
DBUG_ASSERT(false);
|
||||
|
@ -2227,7 +2191,6 @@ public:
|
|||
return true;
|
||||
}
|
||||
bool global_update(THD *thd, set_var *var);
|
||||
bool check_update_type(Item_result type) { return type != STRING_RESULT; }
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{
|
||||
DBUG_ASSERT(false);
|
||||
|
@ -2275,10 +2238,6 @@ public:
|
|||
DBUG_ASSERT(false);
|
||||
return true;
|
||||
}
|
||||
bool check_update_type(Item_result type) {
|
||||
DBUG_ASSERT(false);
|
||||
return false;
|
||||
}
|
||||
void session_save_default(THD *thd, set_var *var)
|
||||
{
|
||||
DBUG_ASSERT(false);
|
||||
|
|
Loading…
Add table
Reference in a new issue