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 7d2932ec..ef265da0 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 @@ -740,9 +740,11 @@ public class QueryLogEvent extends LogEvent { case Q_DEFAULT_TABLE_ENCRYPTION: // *start++ = thd->variables.default_table_encryption; buffer.forward(1); + break; case Q_DDL_SKIP_REWRITE: // *start++ = thd->variables.binlog_ddl_skip_rewrite; buffer.forward(1); + break; case Q_HRNOW: // https://github.com/alibaba/canal/issues/4940 // percona 和 mariadb各自扩展mysql binlog的格式后有冲突 @@ -779,6 +781,7 @@ public class QueryLogEvent extends LogEvent { int count = buffer.getUint8(); // character_set_collations= Lex_cstring((const char *) pos0 , (const char *) pos); buffer.forward(count * 4); + break; default: /* * That's why you must write status vars in growing diff --git a/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/client/ClientAuthenticationSHA2Packet.java b/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/client/ClientAuthenticationSHA2Packet.java index f8e22f6e..054a5a98 100644 --- a/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/client/ClientAuthenticationSHA2Packet.java +++ b/driver/src/main/java/com/alibaba/otter/canal/parse/driver/mysql/packets/client/ClientAuthenticationSHA2Packet.java @@ -3,32 +3,30 @@ package com.alibaba.otter.canal.parse.driver.mysql.packets.client; import java.io.ByteArrayOutputStream; import java.io.IOException; +import org.apache.commons.lang.StringUtils; + import com.alibaba.otter.canal.parse.driver.mysql.packets.Capability; import com.alibaba.otter.canal.parse.driver.mysql.utils.ByteHelper; import com.alibaba.otter.canal.parse.driver.mysql.utils.MSC; import com.alibaba.otter.canal.parse.driver.mysql.utils.MySQLPasswordEncrypter; -import org.apache.commons.lang.StringUtils; - public class ClientAuthenticationSHA2Packet extends ClientAuthenticationPacket { + private int clientCapability = Capability.CLIENT_LONG_PASSWORD | Capability.CLIENT_LONG_FLAG + | Capability.CLIENT_PROTOCOL_41 | Capability.CLIENT_INTERACTIVE + | Capability.CLIENT_TRANSACTIONS | Capability.CLIENT_SECURE_CONNECTION + | Capability.CLIENT_MULTI_STATEMENTS | Capability.CLIENT_PLUGIN_AUTH + | Capability.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA; + @Override public byte[] toBytes() throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); // 1. write client_flags - int clientCapability = 0; - clientCapability |= Capability.CLIENT_LONG_PASSWORD; - clientCapability |= Capability.CLIENT_LONG_FLAG; - clientCapability |= Capability.CLIENT_PROTOCOL_41; - clientCapability |= Capability.CLIENT_TRANSACTIONS; - clientCapability |= Capability.CLIENT_SECURE_CONNECTION; - clientCapability |= Capability.CLIENT_MULTI_STATEMENTS; - clientCapability |= Capability.CLIENT_PLUGIN_AUTH; - clientCapability |= Capability.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA; + int capability = clientCapability; if (getDatabaseName() != null) { - clientCapability |= Capability.CLIENT_CONNECT_WITH_DB; + capability |= Capability.CLIENT_CONNECT_WITH_DB; } - ByteHelper.writeUnsignedIntLittleEndian(clientCapability, out); + ByteHelper.writeUnsignedIntLittleEndian(capability, out); // 2. write max_packet_size ByteHelper.writeUnsignedIntLittleEndian(MSC.MAX_PACKET_LENGTH, out);