summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfranio Correia <alfranio.correia@sun.com>2010-04-01 00:16:22 +0100
committerAlfranio Correia <alfranio.correia@sun.com>2010-04-01 00:16:22 +0100
commite0328736bfc3bcb69699551d80afa931016b6c6b (patch)
treee16830206143b2f2563118bd3a61137701b31b86
parentae8e6ca5065e119c3277bd05546057ac552ee82b (diff)
downloadmariadb-git-e0328736bfc3bcb69699551d80afa931016b6c6b.tar.gz
BUG#51291 Unfortunate effect around variable binlog_direct_non_transactional_updates
Post-merge fix.
-rw-r--r--mysql-test/suite/rpl/t/rpl_semi_sync.test1
-rw-r--r--sql/log.cc2
-rw-r--r--sql/sql_class.cc2
3 files changed, 3 insertions, 2 deletions
diff --git a/mysql-test/suite/rpl/t/rpl_semi_sync.test b/mysql-test/suite/rpl/t/rpl_semi_sync.test
index b04541aba21..8e769efbcd5 100644
--- a/mysql-test/suite/rpl/t/rpl_semi_sync.test
+++ b/mysql-test/suite/rpl/t/rpl_semi_sync.test
@@ -15,6 +15,7 @@ call mtr.add_suppression("Unsafe statement binlogged in statement format since B
connection slave;
call mtr.add_suppression("Master server does not support semi-sync");
call mtr.add_suppression("Semi-sync slave .* reply");
+call mtr.add_suppression("Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT.");
enable_query_log;
connection master;
diff --git a/sql/log.cc b/sql/log.cc
index a83eca12481..248dc4b5265 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -4245,7 +4245,7 @@ bool use_trans_cache(const THD* thd, bool is_transactional)
return
((thd->variables.binlog_format != BINLOG_FORMAT_STMT ||
thd->variables.binlog_direct_non_trans_update) ? is_transactional :
- (is_transactional || cache_mngr->trx_cache.empty()));
+ (is_transactional || !cache_mngr->trx_cache.empty()));
}
/*
diff --git a/sql/sql_class.cc b/sql/sql_class.cc
index ffceb2eabce..473518b91c1 100644
--- a/sql/sql_class.cc
+++ b/sql/sql_class.cc
@@ -3748,7 +3748,7 @@ int THD::decide_logging_format(TABLE_LIST *tables)
isolation level but if we have pure repeatable read or serializable the
lock history on the slave will be different from the master.
*/
- if (!trans_non_trans_access_engines)
+ if (trans_non_trans_access_engines)
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_MIXED_STATEMENT);
else if (trans_has_updated_trans_table(this) && !all_trans_write_engines)
lex->set_stmt_unsafe(LEX::BINLOG_STMT_UNSAFE_NONTRANS_AFTER_TRANS);