BUG#49019 Mixing self-logging eng. and regular eng. does not switch to row in mixed mode

Backport of the patch for 5.1-bugteam.
This commit is contained in:
Alfranio Correia 2010-05-09 23:45:25 +01:00
commit 209cccf55d
3 changed files with 70 additions and 0 deletions

View file

@ -5183,6 +5183,16 @@ int decide_logging_format(THD *thd, TABLE_LIST *tables)
thd->variables.binlog_format));
DBUG_PRINT("info", ("multi_engine: %s",
multi_engine ? "TRUE" : "FALSE"));
/*
Reading from a self-logging engine and updating another engine
generates changes that are written to the binary log in the
statement format and may make slaves to diverge. In the mixed
mode, such changes should be written to the binary log in the
row format.
*/
if (multi_engine &&
(flags_some_set & HA_HAS_OWN_BINLOGGING))
thd->lex->set_stmt_unsafe();
int error= 0;
if (flags_all_set == 0)