diff options
author | Kristian Nielsen <knielsen@knielsen-hq.org> | 2017-03-24 12:07:07 +0100 |
---|---|---|
committer | Kristian Nielsen <knielsen@knielsen-hq.org> | 2017-04-21 10:30:16 +0200 |
commit | fdf2d407707faf05b8b7d67662a70cc5537d15aa (patch) | |
tree | 63fa7fb276ffe1d247054bc1712a9b745f1b129d /sql/slave.h | |
parent | 3cc89b3e85605ecb09b4b2222c8b0b8222a29fde (diff) | |
download | mariadb-git-fdf2d407707faf05b8b7d67662a70cc5537d15aa.tar.gz |
MDEV-12179: Per-engine mysql.gtid_slave_pos table
Intermediate commit.
Implement auto-creation of mysql.gtid_slave_pos* tables with needed engines,
if listed in --gtid-pos-auto-engines.
Uses an asynchronous approach to minimise locking overhead.
The list of available tables is extended with a flag. Extra entries are
added for --gtid-pos-auto-engines tables that do not exist yet, marked as
not existing but ready for auto-creation.
If record_gtid() needs a table marked for auto-creation, it sends a request
to the slave background thread to create the table, and continues to use an
existing table for the current and immediately coming transactions.
As soon as the slave background thread has made the new table available, it
will be used for all subsequent relevant transactions in record_gtid().
This asynchronous approach also avoids a lot of complex issues around trying
to do DDL in the middle of an on-going transaction.
Diffstat (limited to 'sql/slave.h')
-rw-r--r-- | sql/slave.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sql/slave.h b/sql/slave.h index ded9d76e49d..2afd5277e25 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -48,6 +48,7 @@ #include "my_list.h" #include "rpl_filter.h" #include "rpl_tblmap.h" +#include "rpl_gtid.h" #define SLAVE_NET_TIMEOUT 60 @@ -268,6 +269,8 @@ void slave_output_error_info(rpl_group_info *rgi, THD *thd); pthread_handler_t handle_slave_sql(void *arg); bool net_request_file(NET* net, const char* fname); void slave_background_kill_request(THD *to_kill); +void slave_background_gtid_pos_create_request + (rpl_slave_state::gtid_pos_table *table_entry); extern bool volatile abort_loop; extern Master_info *active_mi; /* active_mi for multi-master */ |