On Wed, Sep 4, 2013 at 3:23 AM, Kristian Nielsen <knielsen@knielsen-hq.org> wrote:
Thanks. This patch works for me.
Ok, I'll push it then.
I've just noticed that my claim that patch works is based on my tree which also includes fixes from https://mariadb.atlassian.net/browse/MDEV-4645, in particular *_3 patch is of notice. So probably you want to review that and push too.
Note that there's also Query_log_event::peek() that should have the same dependency on common_header_len. It's hard (if at all possible) for me to experience that code path in my tests, but for the sake of general correctness I guess it should be fixed in a similar way too.
If you look closely, you will see that Query_log_event::peek_is_commit_rollback() does not depend on the format of the event header - it just looks at the query from the end of the event. This is faster than first parsing the header and then skipping any extra information before the query. We need to call this for _every_ event sent to the slave to check if it is the end of an event group, so it should be fast.
So it should be ok without dependency on common_header_len.
Right, but it checks if event_len < LOG_EVENT_HEADER_LEN + QUERY_HEADER_LEN. I'm not sure if this will be always false when common_header_len > LOG_EVENT_HEADER_LEN. Probably just this condition should be removed as there's check for event_len < 9 anyway. Pavel