From 4e1cb567102d818de7d1bb8afdd1da9586f89977 Mon Sep 17 00:00:00 2001 From: MassimilianoPinto Date: Thu, 1 Sep 2016 17:44:41 +0200 Subject: [PATCH] Added support for ANNOTATE_ROWS_EVENT in COM_BINLOG_DUMP Now registration with MariaDB server supports ANNOTATE_ROWS_EVENT. Request flag is in COM_BINLOG_DUMP packet --- server/modules/include/blr.h | 6 ++++++ server/modules/routing/binlog/blr_master.c | 13 ++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/server/modules/include/blr.h b/server/modules/include/blr.h index 9f0bcd2e2..5f0759a6a 100644 --- a/server/modules/include/blr.h +++ b/server/modules/include/blr.h @@ -33,6 +33,7 @@ * 26/04/16 Massimiliano Pinto Added MariaDB 10.0 and 10.1 GTID event flags detection * 11/07/16 Massimiliano Pinto Added SSL backend support * 22/07/16 Massimiliano Pinto Added Semi-Sync replication support + * 01/08/2016 Massimiliano Pinto Added support for ANNOTATE_ROWS_EVENT in COM_BINLOG_DUMP * * @endverbatim */ @@ -122,6 +123,11 @@ #define LOG_EVENT_NO_FILTER_F 0x0100 #define LOG_EVENT_MTS_ISOLATE_F 0x0200 +/** + * Binlog COM_BINLOG_DUMP flags + */ +#define BLR_REQUEST_ANNOTATE_ROWS_EVENT 2 + /** * How often to call the binlog status function (seconds) */ diff --git a/server/modules/routing/binlog/blr_master.c b/server/modules/routing/binlog/blr_master.c index fe92566f1..705bf57bc 100644 --- a/server/modules/routing/binlog/blr_master.c +++ b/server/modules/routing/binlog/blr_master.c @@ -48,6 +48,7 @@ * 23/10/2015 Markus Makela Added current_safe_event * 26/04/2016 Massimiliano Pinto Added MariaDB 10.0 and 10.1 GTID event flags detection * 22/07/2016 Massimiliano Pinto Added semi_sync replication support + * 01/08/2016 Massimiliano Pinto Added support for ANNOTATE_ROWS_EVENT in COM_BINLOG_DUMP * * @endverbatim */ @@ -949,7 +950,17 @@ blr_make_binlog_dump(ROUTER_INSTANCE *router) data[4] = COM_BINLOG_DUMP; // Command encode_value(&data[5], router->current_pos, 32); // binlog position - encode_value(&data[9], 0, 16); // Flags + + /* With mariadb10 always ask for annotate rows events */ + if (router->mariadb10_compat) + { + // set flag for annotate rows event + encode_value(&data[9], BLR_REQUEST_ANNOTATE_ROWS_EVENT, 16); + } + else + encode_value(&data[9], 0, 16); // No flag set + } + encode_value(&data[11], router->serverid, 32); // Server-id of MaxScale memcpy((char *)&data[15], router->binlog_name,