From 92758b8c87b5090a81fda10d555ea3a49bdbac07 Mon Sep 17 00:00:00 2001 From: "jianghang.loujh" Date: Thu, 1 Sep 2022 17:35:29 +0800 Subject: [PATCH] fixed issue #4308 , support query_log_event for maraiadb 10.10.1 --- .../dbsync/binlog/event/QueryLogEvent.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/event/QueryLogEvent.java b/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/event/QueryLogEvent.java index 8cc49795..cf5f0c1e 100644 --- a/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/event/QueryLogEvent.java +++ b/dbsync/src/main/java/com/taobao/tddl/dbsync/binlog/event/QueryLogEvent.java @@ -603,6 +603,13 @@ public class QueryLogEvent extends LogEvent { */ public static final int Q_HRNOW = 128; + /** + * Support MariaDB 10.10.1 + */ + public static final int Q_XID = 129; + + public static final int Q_GTID_FLAGS3 = 130; + private final void unpackVariables(LogBuffer buffer, final int end) throws IOException { int code = -1; try { @@ -613,7 +620,7 @@ public class QueryLogEvent extends LogEvent { break; case Q_SQL_MODE_CODE: sql_mode = buffer.getLong64(); // QQ: Fix when sql_mode - // is ulonglong + // is ulonglong break; case Q_CATALOG_NZ_CODE: catalog = buffer.getString(); @@ -701,6 +708,23 @@ public class QueryLogEvent extends LogEvent { // int when_sec_part = buffer.getUint24(); buffer.forward(3); break; + case Q_XID: + // xid= uint8korr(pos); + buffer.forward(8); + case Q_GTID_FLAGS3: + // gtid_flags_extra= *pos++; + // if (gtid_flags_extra & (Gtid_log_event::FL_COMMIT_ALTER_E1 | + // Gtid_log_event::FL_ROLLBACK_ALTER_E1)) { + // sa_seq_no = uint8korr(pos); + // pos+= 8; + // } + + int gtid_flags_extra = buffer.getUint8(); + final int FL_COMMIT_ALTER_E1= 4; + final int FL_ROLLBACK_ALTER_E1= 8; + if ((gtid_flags_extra & (FL_COMMIT_ALTER_E1 | FL_ROLLBACK_ALTER_E1))> 0) { + buffer.forward(8); + } default: /* * That's why you must write status vars in growing @@ -740,16 +764,22 @@ public class QueryLogEvent extends LogEvent { return "Q_TABLE_MAP_FOR_UPDATE_CODE"; case Q_MASTER_DATA_WRITTEN_CODE: return "Q_MASTER_DATA_WRITTEN_CODE"; - case Q_UPDATED_DB_NAMES: - return "Q_UPDATED_DB_NAMES"; + case Q_INVOKER: + return "case Q_INVOKER"; case Q_MICROSECONDS: return "Q_MICROSECONDS"; + case Q_UPDATED_DB_NAMES: + return "Q_UPDATED_DB_NAMES"; + case Q_EXPLICIT_DEFAULTS_FOR_TIMESTAMP: + return "Q_EXPLICIT_DEFAULTS_FOR_TIMESTAMP"; case Q_DDL_LOGGED_WITH_XID: return "Q_DDL_LOGGED_WITH_XID"; case Q_DEFAULT_COLLATION_FOR_UTF8MB4: return "Q_DEFAULT_COLLATION_FOR_UTF8MB4"; case Q_SQL_REQUIRE_PRIMARY_KEY: return "Q_SQL_REQUIRE_PRIMARY_KEY"; + case Q_HRNOW: + return "Q_HRNOW"; } return "CODE#" + code; }