MXS-1266: Standalone events in transaction (no COMMIT event) are now handled

Standalone events in transaction (no COMMIT event) are now handled:

the GTID is saved to gtid_maps storage.

Transaction detection assumes there is only one query_event after GTID
event with MARIADB_FL_STANDALONE flag set.
This commit is contained in:
MassimilianoPinto
2017-05-19 11:43:43 +02:00
parent 12c862a2c2
commit 362824579d
4 changed files with 155 additions and 99 deletions

View File

@ -543,7 +543,8 @@ typedef enum
BLRM_NO_TRANSACTION, /*< No transaction */
BLRM_TRANSACTION_START, /*< A transaction is open*/
BLRM_COMMIT_SEEN, /*< Received COMMIT event in the current trx */
BLRM_XID_EVENT_SEEN /*< Received XID event of current transaction */
BLRM_XID_EVENT_SEEN, /*< Received XID event of current transaction */
BLRM_STANDALONE_SEEN /*< Received a standalone event, ie: a DDL */
} master_transaction_t;
/** MariaDB GTID elements */
@ -562,6 +563,8 @@ typedef struct pending_transaction
uint64_t start_pos; /** The BEGIN pos */
uint64_t end_pos; /** The next_pos in COMMIT event*/
MARIADB_GTID_ELEMS gtid_elms; /* MariaDB 10.x GTID components */
bool standalone; /** Standalone event, such as DDL
* no terminating COMMIT */
} PENDING_TRANSACTION;
/** MariaDB GTID info */