fixed mysql 8.0.30+ , support new variable

This commit is contained in:
jianghang.loujh
2025-01-08 10:10:33 +08:00
parent 2d0dcf0e5d
commit f350fbdc0a
2 changed files with 14 additions and 13 deletions

View File

@@ -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

View File

@@ -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);