summaryrefslogtreecommitdiff
path: root/sql/log_event.h
diff options
context:
space:
mode:
authorunknown <knielsen@knielsen-hq.org>2013-08-22 12:36:42 +0200
committerunknown <knielsen@knielsen-hq.org>2013-08-22 12:36:42 +0200
commitf74c745a994cbbf3b8289674bf49629224457d4e (patch)
treed1cd1df1a0bf6004428683af6dd83cc7b5b55937 /sql/log_event.h
parent33c66eb7fbcddb09217820708e8ce9324e65db11 (diff)
downloadmariadb-git-f74c745a994cbbf3b8289674bf49629224457d4e.tar.gz
MDEV-4488: When master is on the list of ignore_server_ids, GTID position on slave is not updated
The ignored events are not written to the relay log, but instead a fake Rotate event is generated to handle update of position. Extend this for Gtid so we similarly generate a fake Gtid_list event to update the GTID position. Also fix an unrelated test issue that got triggered by the added test cases.
Diffstat (limited to 'sql/log_event.h')
-rw-r--r--sql/log_event.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/log_event.h b/sql/log_event.h
index b73c0e71f77..abb3b96bac4 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -3197,12 +3197,15 @@ public:
uint32 count;
uint32 gl_flags;
struct rpl_gtid *list;
+ uint64 *sub_id_list;
static const uint element_size= 4+4+8;
static const uint32 FLAG_UNTIL_REACHED= (1<<28);
+ static const uint32 FLAG_IGN_GTIDS= (1<<29);
#ifdef MYSQL_SERVER
Gtid_list_log_event(rpl_binlog_state *gtid_set, uint32 gl_flags);
+ Gtid_list_log_event(slave_connection_state *gtid_set, uint32 gl_flags);
#ifdef HAVE_REPLICATION
void pack_info(THD *thd, Protocol *protocol);
#endif
@@ -3211,7 +3214,7 @@ public:
#endif
Gtid_list_log_event(const char *buf, uint event_len,
const Format_description_log_event *description_event);
- ~Gtid_list_log_event() { my_free(list); }
+ ~Gtid_list_log_event() { my_free(list); my_free(sub_id_list); }
Log_event_type get_type_code() { return GTID_LIST_EVENT; }
int get_data_size() {
/*