diff --git a/sql/rpl_trx_boundary_parser.cc b/sql/rpl_trx_boundary_parser.cc index 061741e..4708abd 100644 --- a/sql/rpl_trx_boundary_parser.cc +++ b/sql/rpl_trx_boundary_parser.cc @@ -152,9 +152,10 @@ Transaction_boundary_parser::get_event_boundary_type( native_strncasecmp(query, STRING_WITH_LEN("ROLLBACK TO ")))) boundary_type= EVENT_BOUNDARY_TYPE_END_TRX; /* - XA ROLLBACK is always the end of a XA transaction. + XA ROLLBACK and XA COMMIT are both always the end of a XA transaction. */ - else if (!native_strncasecmp(query, STRING_WITH_LEN("XA ROLLBACK"))) + else if (!native_strncasecmp(query, STRING_WITH_LEN("XA ROLLBACK")) || + !native_strncasecmp(query, STRING_WITH_LEN("XA COMMIT"))) boundary_type= EVENT_BOUNDARY_TYPE_END_XA_TRX; /* If the query is not (BEGIN | XA START | COMMIT | [XA] ROLLBACK), it can diff --git a/sql/log_event.h b/sql/log_event.h index 241ffd4..dbf8865 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -1483,7 +1483,8 @@ public: /* !!! Public in this patch to allow old usage */ !strncmp(query, "COMMIT", q_len) || (!native_strncasecmp(query, STRING_WITH_LEN("ROLLBACK")) && native_strncasecmp(query, STRING_WITH_LEN("ROLLBACK TO "))) || - !strncmp(query, STRING_WITH_LEN("XA ROLLBACK")); + !strncmp(query, STRING_WITH_LEN("XA ROLLBACK")) || + !strncmp(query, STRING_WITH_LEN("XA COMMIT")); } static size_t get_query(const char *buf, size_t length, const Format_description_log_event *fd_event,