diff options
author | mats@romeo.(none) <> | 2007-04-12 08:58:04 +0200 |
---|---|---|
committer | mats@romeo.(none) <> | 2007-04-12 08:58:04 +0200 |
commit | 11fc24ef24469acfd8ef95f5df1c691bfbed6074 (patch) | |
tree | 751a12cfad714ca627a74b77e5a1ed3ef9a68b5e /sql/slave.h | |
parent | 220c45319423ca234d3eaa3e1028a097cd2f4548 (diff) | |
download | mariadb-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.h | 9 |
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 |