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);