summaryrefslogtreecommitdiff
path: root/mysql-test/r/commit_1innodb.result
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/r/commit_1innodb.result
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/r/commit_1innodb.result')
-rw-r--r--mysql-test/r/commit_1innodb.result8
1 files changed, 4 insertions, 4 deletions
diff --git a/mysql-test/r/commit_1innodb.result b/mysql-test/r/commit_1innodb.result
index cabd4c29c1d..51c4ac3002c 100644
--- a/mysql-test/r/commit_1innodb.result
+++ b/mysql-test/r/commit_1innodb.result
@@ -841,17 +841,17 @@ call p_verify_status_increment(2, 0, 2, 0);
SUCCESS
alter table t3 rename t4;
-call p_verify_status_increment(1, 0, 1, 0);
+call p_verify_status_increment(2, 2, 2, 2);
SUCCESS
rename table t4 to t3;
-call p_verify_status_increment(1, 0, 1, 0);
+call p_verify_status_increment(2, 2, 2, 2);
SUCCESS
truncate table t3;
call p_verify_status_increment(4, 4, 4, 4);
-ERROR
-Expected commit increment: 4 actual: 2
+SUCCESS
+
create view v1 as select * from t2;
call p_verify_status_increment(1, 0, 1, 0);
SUCCESS