diff options
author | Sergei Petrunia <psergey@askmonty.org> | 2017-06-26 18:29:30 +0300 |
---|---|---|
committer | Sergei Petrunia <psergey@askmonty.org> | 2017-06-26 18:29:30 +0300 |
commit | de209ca4a10385a392e3596c80187b88434b6fe5 (patch) | |
tree | 8776f639a549bac2e133579b6ce6a1335aa5a477 /sql/sys_vars.cc | |
parent | 2a3fe45dd2df047cc0d66e2bcdbadd5005c85a1a (diff) | |
download | mariadb-git-bb-10.3-mdev12179.tar.gz |
MDEV-12179: Per-engine mysql.gtid_slave_pos tablesbb-10.3-mdev12179
Merge to 10.3
- changed a few LEX_STRING to LEX_CSTRING
Diffstat (limited to 'sql/sys_vars.cc')
-rw-r--r-- | sql/sys_vars.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 28665098d4d..de054f31afa 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -3556,6 +3556,45 @@ static Sys_var_plugin Sys_enforce_storage_engine( NO_CMD_LINE, MYSQL_STORAGE_ENGINE_PLUGIN, DEFAULT(&enforced_storage_engine), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_has_super)); + +#ifdef HAVE_REPLICATION +/* + Check + 1. Value for gtid_pos_auto_engines is not NULL. + 2. No slave SQL thread is running. +*/ +static bool +check_gtid_pos_auto_engines(sys_var *self, THD *thd, set_var *var) +{ + bool running; + bool err= false; + + DBUG_ASSERT(var->type == OPT_GLOBAL); + if (var->value && var->value->is_null()) + err= true; + else + { + running= give_error_if_slave_running(false); + if (running) + err= true; + } + return err; +} + + +static Sys_var_pluginlist Sys_gtid_pos_auto_engines( + "gtid_pos_auto_engines", + "List of engines for which to automatically create a " + "mysql.gtid_slave_pos_ENGINE table, if a transaction using that engine " + "is replicated. This can be used to avoid introducing cross-engine " + "transactions, if engines are used different from that used by table " + "mysql.gtid_slave_pos", + GLOBAL_VAR(opt_gtid_pos_auto_plugins), NO_CMD_LINE, + DEFAULT(>id_pos_auto_engines), + NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_gtid_pos_auto_engines)); +#endif + + #if defined(ENABLED_DEBUG_SYNC) /* Variable can be set for the session only. |