summaryrefslogtreecommitdiff
path: root/mysql-test/include/commit.inc
diff options
context:
space:
mode:
authorAlfranio Correia <alfranio.correia@sun.com>2009-08-27 00:13:03 +0100
committerAlfranio Correia <alfranio.correia@sun.com>2009-08-27 00:13:03 +0100
commit6c2b32515e1856b65feedec2ebe47843f416b2ad (patch)
treea27f97c886c8de5726bf253a0870d159b486ae83 /mysql-test/include/commit.inc
parentfc3945950452a12ea7e47c685a73d5d22d338ec2 (diff)
downloadmariadb-git-6c2b32515e1856b65feedec2ebe47843f416b2ad.tar.gz
BUG#28976 Mixing trans and non-trans tables in one transaction results in incorrect
binlog Mixing transactional (T) and non-transactional (N) tables on behalf of a transaction may lead to inconsistencies among masters and slaves in STATEMENT mode. The problem stems from the fact that although modifications done to non-transactional tables on behalf of a transaction become immediately visible to other connections they do not immediately get to the binary log and therefore consistency is broken. Although there may be issues in mixing T and M tables in STATEMENT mode, there are safe combinations that clients find useful. In this bug, we fix the following issue. Mixing N and T tables in multi-level (e.g. a statement that fires a trigger) or multi-table table statements (e.g. update t1, t2...) were not handled correctly. In such cases, it was not possible to distinguish when a T table was updated if the sequence of changes was N and T. In a nutshell, just the flag "modified_non_trans_table" was not enough to reflect that both a N and T tables were changed. To circumvent this issue, we check if an engine is registered in the handler's list and changed something which means that a T table was modified. Check WL 2687 for a full-fledged patch that will make the use of either the MIXED or ROW modes completely safe. mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result: Truncate statement is wrapped in BEGIN/COMMIT. mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result: Truncate statement is wrapped in BEGIN/COMMIT.
Diffstat (limited to 'mysql-test/include/commit.inc')
-rw-r--r--mysql-test/include/commit.inc4
1 files changed, 2 insertions, 2 deletions
diff --git a/mysql-test/include/commit.inc b/mysql-test/include/commit.inc
index d412eae8364..d91ba8291fd 100644
--- a/mysql-test/include/commit.inc
+++ b/mysql-test/include/commit.inc
@@ -725,9 +725,9 @@ call p_verify_status_increment(4, 4, 4, 4);
alter table t3 add column (b int);
call p_verify_status_increment(2, 0, 2, 0);
alter table t3 rename t4;
-call p_verify_status_increment(1, 0, 1, 0);
+call p_verify_status_increment(2, 2, 2, 2);
rename table t4 to t3;
-call p_verify_status_increment(1, 0, 1, 0);
+call p_verify_status_increment(2, 2, 2, 2);
truncate table t3;
call p_verify_status_increment(4, 4, 4, 4);
create view v1 as select * from t2;