summaryrefslogtreecommitdiff
path: root/sql/log.h
diff options
context:
space:
mode:
authorHe Zhenxing <hezx@mysql.com>2008-09-28 15:34:25 +0800
committerHe Zhenxing <hezx@mysql.com>2008-09-28 15:34:25 +0800
commit0d2025e1d4c0b80a13bff64165a06ff71721a7b8 (patch)
tree0d4f8b334d9ff48090bce768035078349e9f98f2 /sql/log.h
parent6a4af260cc5d41cbbca6b4744682da4ee11d03d1 (diff)
downloadmariadb-git-0d2025e1d4c0b80a13bff64165a06ff71721a7b8.tar.gz
BUG#38734 rpl_server_id2 sync_with_master failed
Rotate event is automatically generated and written when rotating binary log or relay log. Rotate events for relay logs are usually ignored by slave SQL thread becuase they have the same server id as that of the slave. However, if --replicate-same-server-id is enabled, rotate event for relay log would be treated as if it's a rotate event from master, and would be executed by slave to update the rli->group_master_log_name and rli->group_master_log_pos to a wrong value and cause the MASTER_POS_WAIT function to fail and return NULL. This patch fixed this problem by setting a flag bit (LOG_EVENT_RELAY_LOG_F) in the event to tell the SQL thread to ignore these Rotate events generated for relay logs. This patch also added another binlog event flag bit (LOG_EVENT_ARTIFICIAL_F) to distinquish faked events, the method used before this was by checking if log_pos was zero.
Diffstat (limited to 'sql/log.h')
-rw-r--r--sql/log.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/sql/log.h b/sql/log.h
index 20a1b7e8e6d..b1a3274b60e 100644
--- a/sql/log.h
+++ b/sql/log.h
@@ -274,6 +274,10 @@ class MYSQL_BIN_LOG: public TC_LOG, private MYSQL_LOG
public:
MYSQL_LOG::generate_name;
MYSQL_LOG::is_open;
+
+ /* This is relay log */
+ bool is_relay_log;
+
/*
These describe the log's format. This is used only for relay logs.
_for_exec is used by the SQL thread, _for_queue by the I/O thread. It's