summaryrefslogtreecommitdiff
path: root/sql/slave.h
diff options
context:
space:
mode:
authormats@romeo.(none) <>2007-04-12 08:58:04 +0200
committermats@romeo.(none) <>2007-04-12 08:58:04 +0200
commit11fc24ef24469acfd8ef95f5df1c691bfbed6074 (patch)
tree751a12cfad714ca627a74b77e5a1ed3ef9a68b5e /sql/slave.h
parent220c45319423ca234d3eaa3e1028a097cd2f4548 (diff)
downloadmariadb-git-11fc24ef24469acfd8ef95f5df1c691bfbed6074.tar.gz
BUG#25688 (RBR: circular replication may cause STMT_END_F flags to be
skipped): By moving statement end actions from Rows_log_event::do_apply_event() to Rows_log_event::do_update_pos() they will always be executed, even if Rows_log_event::do_apply_event() is skipped because the event originated at the same server. This because Rows_log_event::do_update_pos() is always executed (unless Rows_log_event::do_apply_event() failed with an error, in which case the slave stops with an error anyway). Adding test case. Fixing logic to detect if inside a group. If a rotate event occured when an initial prefix of events for a statement, but for which the table did contain a key, last_event_start_time is set to zero, causing rotate to end the group but without unlocking any tables. This left a lock hanging around, which subsequently triggered an assertion when a second attempt was made to lock the same sequence of tables. In order to solve the above problem, a new flag was added to the relay log info structure that is used to indicate that the replication thread is currently executing a statement. Using this flag, the replication thread is in a group if it is either in a statement or inside a trans- action. The patch also eliminates some gratuitous header file inclusions that were not needed (and caused compile errors) and replaced them with forward definitions.
Diffstat (limited to 'sql/slave.h')
-rw-r--r--sql/slave.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/sql/slave.h b/sql/slave.h
index 107b74c09dd..cb880c8125d 100644
--- a/sql/slave.h
+++ b/sql/slave.h
@@ -22,13 +22,18 @@
#include "my_list.h"
#include "rpl_filter.h"
#include "rpl_tblmap.h"
-#include "rpl_rli.h"
-#include "rpl_mi.h"
#define SLAVE_NET_TIMEOUT 3600
#define MAX_SLAVE_ERROR 2000
+
+// Forward declarations
+struct st_relay_log_info;
+typedef st_relay_log_info RELAY_LOG_INFO;
+
+class MASTER_INFO;
+
/*****************************************************************************
MySQL Replication