MDEV-27730 Add PLUGIN_VAR_DEPRECATED flag to plugin variables
The sys_var class has the deprecation_substitute member to mark the deprecated variables. As it's set, the server produces warnings when these variables are used. However, the plugin has no means to utilize that functionality. So, the PLUGIN_VAR_DEPRECATED flag is introduced to set the deprecation_substitute with the empty string. A non-empty string can make the warning more informative, but there's no nice way seen to specify it, and not that needed at the moment.
This commit is contained in:
parent
5b237e5965
commit
66f55a018b
@ -229,6 +229,7 @@ typedef int (*mysql_show_var_func)(MYSQL_THD, struct st_mysql_show_var*, void *,
|
||||
#define PLUGIN_VAR_NOCMDARG 0x1000 /* No argument for cmd line */
|
||||
#define PLUGIN_VAR_RQCMDARG 0x0000 /* Argument required for cmd line */
|
||||
#define PLUGIN_VAR_OPCMDARG 0x2000 /* Argument optional for cmd line */
|
||||
#define PLUGIN_VAR_DEPRECATED 0x4000 /* Server variable is deprecated */
|
||||
#define PLUGIN_VAR_MEMALLOC 0x8000 /* String needs memory allocated */
|
||||
|
||||
struct st_mysql_sys_var;
|
||||
@ -282,7 +283,8 @@ typedef void (*mysql_var_update_func)(MYSQL_THD thd,
|
||||
#define PLUGIN_VAR_MASK \
|
||||
(PLUGIN_VAR_READONLY | PLUGIN_VAR_NOSYSVAR | \
|
||||
PLUGIN_VAR_NOCMDOPT | PLUGIN_VAR_NOCMDARG | \
|
||||
PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC)
|
||||
PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_RQCMDARG | \
|
||||
PLUGIN_VAR_DEPRECATED | PLUGIN_VAR_MEMALLOC)
|
||||
|
||||
#define MYSQL_PLUGIN_VAR_HEADER \
|
||||
int flags; \
|
||||
|
@ -40,11 +40,15 @@ a
|
||||
set global example_ulong_var=500;
|
||||
set global example_enum_var= e1;
|
||||
set session example_int_var= -1;
|
||||
set global example_deprecated_var=1;
|
||||
Warnings:
|
||||
Warning 1287 '@@example_deprecated_var' is deprecated and will be removed in a future release
|
||||
show status like 'example%';
|
||||
Variable_name Value
|
||||
Example_func_example enum_var is 0, ulong_var is 500, int_var is -1, double_var is 8.500000, really
|
||||
show variables like 'example%';
|
||||
Variable_name Value
|
||||
example_deprecated_var 0
|
||||
example_double_thdvar 8.500000
|
||||
example_double_var 8.500000
|
||||
example_enum_var e1
|
||||
|
@ -27,6 +27,7 @@ SELECT * FROM t1;
|
||||
set global example_ulong_var=500;
|
||||
set global example_enum_var= e1;
|
||||
set session example_int_var= -1;
|
||||
set global example_deprecated_var=1;
|
||||
show status like 'example%';
|
||||
show variables like 'example%';
|
||||
|
||||
|
@ -291,7 +291,8 @@ public:
|
||||
struct st_mysql_sys_var *plugin_var;
|
||||
|
||||
sys_var_pluginvar(sys_var_chain *chain, const char *name_arg,
|
||||
st_plugin_int *p, st_mysql_sys_var *plugin_var_arg);
|
||||
st_plugin_int *p, st_mysql_sys_var *plugin_var_arg,
|
||||
const char *substitute);
|
||||
sys_var_pluginvar *cast_pluginvar() { return this; }
|
||||
uchar* real_value_ptr(THD *thd, enum_var_type type) const;
|
||||
TYPELIB* plugin_var_typelib(void) const;
|
||||
@ -3338,11 +3339,11 @@ static int pluginvar_sysvar_flags(const st_mysql_sys_var *p)
|
||||
}
|
||||
|
||||
sys_var_pluginvar::sys_var_pluginvar(sys_var_chain *chain, const char *name_arg,
|
||||
st_plugin_int *p, st_mysql_sys_var *pv)
|
||||
st_plugin_int *p, st_mysql_sys_var *pv, const char *substitute)
|
||||
: sys_var(chain, name_arg, pv->comment, pluginvar_sysvar_flags(pv),
|
||||
0, pv->flags & PLUGIN_VAR_NOCMDOPT ? -1 : 0, NO_ARG,
|
||||
pluginvar_show_type(pv), 0,
|
||||
NULL, VARIABLE_NOT_IN_BINLOG, NULL, NULL, NULL),
|
||||
NULL, VARIABLE_NOT_IN_BINLOG, NULL, NULL, substitute),
|
||||
plugin(p), plugin_var(pv)
|
||||
{
|
||||
plugin_var->name= name_arg;
|
||||
@ -4076,7 +4077,8 @@ static int test_plugin_options(MEM_ROOT *tmp_root, struct st_plugin_int *tmp,
|
||||
my_casedn_str(&my_charset_latin1, varname);
|
||||
convert_dash_to_underscore(varname, len-1);
|
||||
}
|
||||
v= new (mem_root) sys_var_pluginvar(&chain, varname, tmp, o);
|
||||
const char *s= o->flags & PLUGIN_VAR_DEPRECATED ? "" : NULL;
|
||||
v= new (mem_root) sys_var_pluginvar(&chain, varname, tmp, o, s);
|
||||
v->test_load= (var ? &var->loaded : &static_unload);
|
||||
DBUG_ASSERT(static_unload == FALSE);
|
||||
|
||||
|
@ -1054,12 +1054,17 @@ static MYSQL_THDVAR_DOUBLE(
|
||||
1000.5,
|
||||
0);
|
||||
|
||||
static MYSQL_THDVAR_INT(
|
||||
deprecated_var, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_DEPRECATED, "-1..1",
|
||||
NULL, NULL, 0, -1, 1, 0);
|
||||
|
||||
static struct st_mysql_sys_var* example_system_variables[]= {
|
||||
MYSQL_SYSVAR(enum_var),
|
||||
MYSQL_SYSVAR(ulong_var),
|
||||
MYSQL_SYSVAR(int_var),
|
||||
MYSQL_SYSVAR(double_var),
|
||||
MYSQL_SYSVAR(double_thdvar),
|
||||
MYSQL_SYSVAR(deprecated_var),
|
||||
MYSQL_SYSVAR(varopt_default),
|
||||
NULL
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user