1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

BUG#59338 Inconsistency in binlog for statements that don't change any rows STATEMENT SBR

In SBR, if a statement does not fail, it is always written to the binary
log, regardless if rows are changed or not. If there is a failure, a
statement is only written to the binary log if a non-transactional (.e.g.
MyIsam) engine is updated.

INSERT ON DUPLICATE KEY UPDATE and INSERT IGNORE were not following the
rule above and were not written to the binary log, if then engine was
Innodb.
This commit is contained in:
Alfranio Correia
2011-01-28 12:09:15 +00:00
parent 610393709f
commit 66abb3d1bb
9 changed files with 189 additions and 78 deletions

View File

@ -881,7 +881,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
*/
query_cache_invalidate3(thd, table_list, 1);
}
if ((changed && error <= 0) ||
if (error <= 0 ||
thd->transaction.stmt.modified_non_trans_table ||
was_insert_delayed)
{