1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-12179: Per-engine mysql.gtid_slave_pos table

Merge into MariaDB 10.3.
This commit is contained in:
Kristian Nielsen
2017-07-03 09:33:41 +02:00
50 changed files with 2969 additions and 161 deletions

View File

@ -941,6 +941,10 @@ SHOW_COMP_OPTION plugin_status(const char *name, size_t len, int type)
}
/*
If LEX is passed non-NULL, an automatic unlock of the plugin will happen
in the LEX destructor.
*/
static plugin_ref intern_plugin_lock(LEX *lex, plugin_ref rc)
{
st_plugin_int *pi= plugin_ref_to_int(rc);
@ -984,6 +988,16 @@ static plugin_ref intern_plugin_lock(LEX *lex, plugin_ref rc)
}
/*
Notes on lifetime:
If THD is passed as non-NULL (and with a non-NULL thd->lex), an entry is made
in the thd->lex which will cause an automatic unlock of the plugin in the LEX
destructor. In this case, no manual unlock must be done.
Otherwise, when passing a NULL THD, the caller must arrange that plugin
unlock happens later.
*/
plugin_ref plugin_lock(THD *thd, plugin_ref ptr)
{
LEX *lex= thd ? thd->lex : 0;
@ -1020,6 +1034,16 @@ plugin_ref plugin_lock(THD *thd, plugin_ref ptr)
}
/*
Notes on lifetime:
If THD is passed as non-NULL (and with a non-NULL thd->lex), an entry is made
in the thd->lex which will cause an automatic unlock of the plugin in the LEX
destructor. In this case, no manual unlock must be done.
Otherwise, when passing a NULL THD, the caller must arrange that plugin
unlock happens later.
*/
plugin_ref plugin_lock_by_name(THD *thd, const LEX_CSTRING *name, int type)
{
LEX *lex= thd ? thd->lex : 0;
@ -1935,6 +1959,12 @@ void plugin_shutdown(void)
if (initialized)
{
if (opt_gtid_pos_auto_plugins)
{
free_engine_list(opt_gtid_pos_auto_plugins);
opt_gtid_pos_auto_plugins= NULL;
}
mysql_mutex_lock(&LOCK_plugin);
reap_needed= true;