summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Lesin <vlad_lesin@mail.ru>2022-02-22 10:35:16 +0300
committerVlad Lesin <vlad_lesin@mail.ru>2022-02-22 10:35:16 +0300
commita112a80b4762dbb80b25ae0e8bcd93893eacec5f (patch)
tree35fb71f2806fc9907b3901124f49d7d39582b3b8
parentb69191bbb2278fce92b470e8e3abafe048166e39 (diff)
parentf6f055a19145dc2dbd9efde26dbdd9fe1c60e28f (diff)
downloadmariadb-git-a112a80b4762dbb80b25ae0e8bcd93893eacec5f.tar.gz
Merge 10.4 into 10.5
-rw-r--r--include/mysql/plugin.h4
-rw-r--r--mysql-test/main/plugin.result4
-rw-r--r--mysql-test/main/plugin.test1
-rw-r--r--sql/sql_plugin.cc10
-rw-r--r--storage/example/ha_example.cc5
-rw-r--r--storage/innobase/os/os0file.cc2
6 files changed, 20 insertions, 6 deletions
diff --git a/include/mysql/plugin.h b/include/mysql/plugin.h
index 738ffc6c53f..e1cc53564ab 100644
--- a/include/mysql/plugin.h
+++ b/include/mysql/plugin.h
@@ -233,6 +233,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;
@@ -286,7 +287,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 a0c7eef818b..6cc6afd38ff 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 19199f767f5..60773c3e190 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 980ecb2f70c..18f848f3cd3 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -311,7 +311,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;
@@ -3412,11 +3413,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;
@@ -4158,7 +4159,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 eaa3e51ca67..8f2015070be 100644
--- a/storage/example/ha_example.cc
+++ b/storage/example/ha_example.cc
@@ -1060,12 +1060,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
};
diff --git a/storage/innobase/os/os0file.cc b/storage/innobase/os/os0file.cc
index 32c31b191ed..afdc6784063 100644
--- a/storage/innobase/os/os0file.cc
+++ b/storage/innobase/os/os0file.cc
@@ -4031,7 +4031,7 @@ static bool is_drive_on_ssd(DWORD nr)
sizeof storage_query, &seek_penalty, sizeof seek_penalty,
&bytes_written, nullptr))
{
- on_ssd= seek_penalty.IncursSeekPenalty;
+ on_ssd= !seek_penalty.IncursSeekPenalty;
}
else
{