diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h index e084b6becec..360f633b7dd 100644 --- a/include/mysql/plugin.h +++ b/include/mysql/plugin.h @@ -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; \ diff --git a/mysql-test/main/plugin.result b/mysql-test/main/plugin.result index a4fb475981c..c1e7739be37 100644 --- a/mysql-test/main/plugin.result +++ b/mysql-test/main/plugin.result @@ -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 diff --git a/mysql-test/main/plugin.test b/mysql-test/main/plugin.test index d2e828b2589..61b5f9b87c6 100644 --- a/mysql-test/main/plugin.test +++ b/mysql-test/main/plugin.test @@ -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%'; diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index 33b43bdd85d..cee028b7b05 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -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); diff --git a/storage/example/ha_example.cc b/storage/example/ha_example.cc index ab402c636d1..8785281c242 100644 --- a/storage/example/ha_example.cc +++ b/storage/example/ha_example.cc @@ -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 };