I've also added a bunch of inline comments to the github commits to further explain my reasoning. Going through the commits in order chronologically might make the most sense. Regards, Vicențiu On Mon, 6 Apr 2015 at 17:39 Vicențiu Ciorbaru <vicentiu@mariadb.org> wrote:
Hi Kristian,
I've gotten to a "sort of" stable state with binlog_row_image. It's not 100% complete as I did not add any tests for the new use cases. Also there are a couple of changes that I am not 100% sure if they are complete or correct.
I would like some input on these changes: https://github.com/MariaDB/server/compare/10.1-MDEV-6877-binlog_row_image
The unpack_current_row being a very iffy change for me. I understand why it is needed in the Update_rows_event::do_exec_row code, as the after image has other columns that get written as opposed to the before image. Thing is I've just made it in an attempt to fix a HA_ERR_SAME_KEY error that I kept getting on the slave and it seems to have worked.
Do you think the implementation that MySQL chose is the correct one? The changes are mostly the same as the MySQL variant, except they have V2 ROW LOG EVENTS which seem to pass some extra info which we don't use (need?).
There are a lot of changes made and I've tried my best to not miss anything. I agree that the git history could be better. I will rewrite it when I get the final code variant.
Regards, Vicentiu
On Mon, 30 Mar 2015 at 17:22 Vicențiu Ciorbaru <vicentiu@mariadb.org> wrote:
Hi Kristian,
Another concern that I have is how to test the implementation. Right now, I
run the test, get the binlog file and print it with mysqlbinlog and see if the output is what I expect. Do we have something within mysql-test-run that automates this?
There are some MTR tests that run mysqlbinlog and checks the output, for example mysqlbinlog.test.
But the usual way to check replication is all the MTR tests in mysql-test/suite/rpl/t/. They start up a master and a slave server (or more), make some transactions on the master, check that they replicate as expected to the slave.
Thank you for the reply! I have already started doing the changes and I seem to be making some progress. The mysqlbinlog tests were the ones that I was looking for. I'll let you know if I run into any more issues. This actually turned out to be a very good learning experience for me as I previously had no experience with replication. I'll mark you as a reviewer when I have a patch ready.
Vicențiu