mariadb/mysql-test/suite
Alfranio Correia 14d1909440 BUG#47287 RBR: replication diff on basic case with txn- and non-txn tables in a statement
Let
  - T be a transactional table and N non-transactional table.
  - B be begin, C commit and R rollback.
  - M be a mixed statement, i.e. a statement that updates both T and N.
  - M* be a mixed statement that fails while updating either T or N.

This patch restore the behavior presented in 5.1.37 for rows either produced in
the RBR or MIXED modes, when a M* statement that happened early in a transaction
had their changes written to the binary log outside the boundaries of the
transaction and wrapped in a BEGIN/ROLLBACK. This was done to keep the slave
consistent with with the master as the rollback would keep the changes on N and
undo them on T. In particular, we do what follows:

  . B M* T C would log - B M* R B T C.

Note that, we are not preserving history from the master as we are introducing a
rollback that never happened. However, this seems to be more acceptable than
making the slave diverge. We do not fix the following case:

  . B T M* C would log B T M* C.

The slave will diverge as the changes on T tables that originated from the M
statement are rolled back on the master but not on the slave. Unfortunately, we
cannot simply rollback the transaction as this would undo any uncommitted
changes on T tables.

SBR is not considered in this patch because a failing statement is written to
the binary along with the error code and a slave executes and then rolls back
the statement when it has an associated error code, thus undoing the effects
on T. In RBR and MBR, a full-fledged fix will be pushed after the WL 2687.
2009-10-06 01:38:58 +01:00
..
binlog BUG#47287 RBR: replication diff on basic case with txn- and non-txn tables in a statement 2009-10-06 01:38:58 +01:00
bugs Bug #38205 Row-based Replication (RBR) causes inconsistencies: HA_ERR_FOUND_DUPP_KEY 2009-04-09 16:05:41 +03:00
federated Merge 5.0-bugteam to 5.1-bugteam 2009-03-19 14:19:51 +05:30
funcs_1 Bug#37746: Arithmetic range ("int") is smaller than expected 2009-07-07 10:19:38 -04:00
funcs_2 merge 5.0-> 5.1 2009-04-24 13:00:17 -04:00
ibmdb2i Bug#45983 ibmdb2i_create_index_option=1 not working for primary key 2009-07-08 14:40:01 +05:30
im Move instance manager tests to it's own suite 2007-08-29 19:02:33 +02:00
innodb first merge from main 2009-09-02 18:58:17 +02:00
jp fixed jp test failures 2009-02-02 14:42:33 +04:00
large_tests Bug#27029 alter table ... enable keys crashes mysqld on large table 2007-06-21 12:45:56 -04:00
manual manual merge for bug_29136, bug#29309. 2007-10-13 23:12:50 +03:00
ndb Define MASTER_MYSOCK for ndb tests. 2009-06-09 19:32:32 -03:00
ndb_team Merge BUG#43263 from 5.0-bugteam to 5.1-bugteam 2009-05-31 13:44:41 +08:00
parts automerge 2009-09-18 16:35:40 +03:00
rpl BUG#43579 mysql_upgrade tries to alter log tables on replicated database 2009-09-28 14:24:19 +08:00
rpl_ndb automerge 2009-09-18 16:35:40 +03:00
stress Merge trift2.:/MySQL/M51/mysql-5.1 2008-02-22 16:14:27 +01:00
sys_vars Bug #42778: delete order by null global variable causes 2009-05-22 01:22:46 +05:00