mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
fixed mysql 8.0.30+ , support new variable
This commit is contained in:
@@ -740,9 +740,11 @@ public class QueryLogEvent extends LogEvent {
|
|||||||
case Q_DEFAULT_TABLE_ENCRYPTION:
|
case Q_DEFAULT_TABLE_ENCRYPTION:
|
||||||
// *start++ = thd->variables.default_table_encryption;
|
// *start++ = thd->variables.default_table_encryption;
|
||||||
buffer.forward(1);
|
buffer.forward(1);
|
||||||
|
break;
|
||||||
case Q_DDL_SKIP_REWRITE:
|
case Q_DDL_SKIP_REWRITE:
|
||||||
// *start++ = thd->variables.binlog_ddl_skip_rewrite;
|
// *start++ = thd->variables.binlog_ddl_skip_rewrite;
|
||||||
buffer.forward(1);
|
buffer.forward(1);
|
||||||
|
break;
|
||||||
case Q_HRNOW:
|
case Q_HRNOW:
|
||||||
// https://github.com/alibaba/canal/issues/4940
|
// https://github.com/alibaba/canal/issues/4940
|
||||||
// percona 和 mariadb各自扩展mysql binlog的格式后有冲突
|
// percona 和 mariadb各自扩展mysql binlog的格式后有冲突
|
||||||
@@ -779,6 +781,7 @@ public class QueryLogEvent extends LogEvent {
|
|||||||
int count = buffer.getUint8();
|
int count = buffer.getUint8();
|
||||||
// character_set_collations= Lex_cstring((const char *) pos0 , (const char *) pos);
|
// character_set_collations= Lex_cstring((const char *) pos0 , (const char *) pos);
|
||||||
buffer.forward(count * 4);
|
buffer.forward(count * 4);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
/*
|
/*
|
||||||
* That's why you must write status vars in growing
|
* That's why you must write status vars in growing
|
||||||
|
|||||||
@@ -3,32 +3,30 @@ package com.alibaba.otter.canal.parse.driver.mysql.packets.client;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
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.packets.Capability;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.utils.ByteHelper;
|
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.MSC;
|
||||||
import com.alibaba.otter.canal.parse.driver.mysql.utils.MySQLPasswordEncrypter;
|
import com.alibaba.otter.canal.parse.driver.mysql.utils.MySQLPasswordEncrypter;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
|
|
||||||
public class ClientAuthenticationSHA2Packet extends ClientAuthenticationPacket {
|
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
|
@Override
|
||||||
public byte[] toBytes() throws IOException {
|
public byte[] toBytes() throws IOException {
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
// 1. write client_flags
|
// 1. write client_flags
|
||||||
int clientCapability = 0;
|
int capability = clientCapability;
|
||||||
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;
|
|
||||||
if (getDatabaseName() != null) {
|
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
|
// 2. write max_packet_size
|
||||||
ByteHelper.writeUnsignedIntLittleEndian(MSC.MAX_PACKET_LENGTH, out);
|
ByteHelper.writeUnsignedIntLittleEndian(MSC.MAX_PACKET_LENGTH, out);
|
||||||
|
|||||||
Reference in New Issue
Block a user