diff options
author | unknown <mats@romeo.(none)> | 2007-04-12 08:58:04 +0200 |
---|---|---|
committer | unknown <mats@romeo.(none)> | 2007-04-12 08:58:04 +0200 |
commit | 6ed9fc6b7a64bafe85186eb37db8593b8ef2acbc (patch) | |
tree | 751a12cfad714ca627a74b77e5a1ed3ef9a68b5e /sql/sql_binlog.cc | |
parent | 6d9d64baab8537e465659daab77d2a9fd1a286ff (diff) | |
download | mariadb-git-6ed9fc6b7a64bafe85186eb37db8593b8ef2acbc.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.
sql/item_func.cc:
Including definition of MASTER_INFO.
sql/log.cc:
Including definition of RELAY_LOG_INFO since it is used in the file.
sql/log_event.cc:
Moving statement end actions from Rows_log_event::do_apply_event() to
Rows_log_event::do_update_pos().
Factoring out code to update group positions and event positions into
relay log info structure.
---
Adding debugging printouts.
Fixing logic to detect if inside a group.
sql/log_event.h:
Adding Rows_log_event::do_update_pos().
sql/mysqld.cc:
Including definition of MASTER_INFO.
sql/repl_failsafe.cc:
Including definition of MASTER_INFO.
sql/rpl_mi.h:
Including definition of RELAY_LOG_INFO since it is used in the file.
sql/rpl_rli.cc:
Adding member function stmt_done() to do after-statement updates of the
relay log info structure.
sql/rpl_rli.h:
Adding member function stmt_done() to do after-statement updates of the
relay log info structure.
sql/set_var.cc:
Including definition of MASTER_INFO.
sql/slave.cc:
Adding debuging printouts.
sql/slave.h:
Removing inclusion definitions of MASTER_INFO and RELAY_LOG_INFO and
replacing them with forward declarations since the classes are not
used in the file. The gratuitous inclusion lead to compile errors in
the two classes above in files that used neither.
sql/sql_binlog.cc:
Including definition of RELAY_LOG_INFO since it is used in the file.
sql/sql_class.cc:
Including definition of RELAY_LOG_INFO since it is used in the file.
sql/sql_class.h:
Removing inclusion definitions of RELAY_LOG_INFO and replacing it
with forward declaration since the class is not used in the file.
The gratuitous inclusion lead to compile errors in the class above
in files didn't use the class.
sql/sql_insert.cc:
Including definition of MASTER_INFO.
sql/sql_repl.cc:
Including definition of MASTER_INFO.
mysql-test/r/rpl_ndb_circular_simplex.result:
New BitKeeper file ``mysql-test/r/rpl_ndb_circular_simplex.result''
mysql-test/t/rpl_ndb_circular_simplex.test:
New BitKeeper file ``mysql-test/t/rpl_ndb_circular_simplex.test''
Diffstat (limited to 'sql/sql_binlog.cc')
-rw-r--r-- | sql/sql_binlog.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sql_binlog.cc b/sql/sql_binlog.cc index 6f7bbda96de..d3fdd95707c 100644 --- a/sql/sql_binlog.cc +++ b/sql/sql_binlog.cc @@ -14,6 +14,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include "mysql_priv.h" +#include "rpl_rli.h" #include "base64.h" /* |