![](https://secure.gravatar.com/avatar/3c2329333dd5898f2e72818af773243d.jpg?s=120&d=mm&r=g)
Hi, Kristian! A fourth option could be to take MySQL's version and add --binlog-annotate-rows-events and --replicate-annotate-rows-events options, and make a slave read MWL#47 annotation event as a rows_query_log_event. This option is basically the opposite of yours third option. In both cases we end up having a superset of both implementations and fully compatible. But by preserving more of MySQL version we would simplify future merges and would be able to get bugfixes with every merge. Regards, Sergei On Jan 12, Kristian Nielsen wrote:
knielsen@knielsen-hq.org writes:
message: Merge Percona patch MWL#47 into mariadb 5.2-percona.
This patch adds options to annotate the binlog (and the mysqlbinlog output) with the original SQL query for queries that are logged using row-based replication.
Serg raised the very relevant issue about what to do about the similar feature in MySQL 5.6:
http://forge.mysql.com/worklog/task.php?id=4033 http://forge.mysql.com/worklog/task.php?id=5404
The Oracle team has worked more on this since last I looked, and the two features are now very similar. Here are the main differences, as I see it: ... So the question is how to prepare for when we merge MySQL 5.6. An easy option could be to just ditch MWL#47 (and possibly backport the MySQL 5.6 patch). However, as I understand it, the original sponsor of MWL#47 is already using it, and so we may have to remain compatible with the existing MWL#47 implementation. Can we get some definite information on that?
Another option might be to simply change the MWL#47 to use the same event type as MySQL (the event format is the same, and we can add the LOG_EVENT_IGNORABLE_F). And replace the MWL#47 options --binlog-annotate-rows-events and --replicate-annotate-rows-events with the MySQL --binlog_rows_query_log_events option (though I think the MySQL option name is not good). But again, I am not sure if this is a valid option given possible existing usage of MWL#47.
The third option I can think of is to leave MWL#47 as it is. Then when we get to merge MySQL 5.6, we will basically drop the MySQL part, doing the following to remain backwards compatible with MySQL:
- Make the --binlog_rows_query_log_events option set --binlog-annotate-rows-events and --replicate-annotate-rows-events.
- Make a slave read a MySQL rows_query_log_event as a MWL#47 annotation event.
- Merge over the bit of the MySQL patch that makes mysqlbinlog output annotation events using a BINLOG '...' statement.
This should make upgrade from MySQL 5.6 -> MariaDB fully work. Using MySQL5.6+ with MariaDB will also work, only MySQL slaves will not receive MariaDB master annotation events.