add support for polardbx multi binlog streams (#4660)

* AbstractCanalInstance的subscribeChange方法,增加对AbstractEventParser的类型判断,以支持用户的自定义CanalEventParser

* MysqlEventParser对Gtid模式的处理需要考虑兼容性,支持系统平滑的从非gtid模式升级为gtid模式

* add support for polardbx multi binlog streams #4657

* support auto generate instance names #4657
This commit is contained in:
lulu2panpan
2023-03-23 13:46:10 +08:00
committed by GitHub
parent 5d7d19fdb1
commit a04a1912a8
13 changed files with 142 additions and 25 deletions

View File

@@ -119,12 +119,14 @@ public class MysqlQueryExecutor {
fields.add(fp);
}
moreResult = readEofPacket();
readEofPacket();
List<RowDataPacket> rowData = new ArrayList<>();
while (true) {
body = readNextPacket();
if (body[0] == -2) {
EOFPacket packet = parseEOFPacket(body);
moreResult = (packet.statusFlag & 0x0008) != 0;
break;
}
RowDataPacket rowDataPacket = new RowDataPacket();
@@ -146,13 +148,17 @@ public class MysqlQueryExecutor {
private boolean readEofPacket() throws IOException {
byte[] eofBody = readNextPacket();
EOFPacket packet = parseEOFPacket(eofBody);
return (packet.statusFlag & 0x0008) != 0;
}
private EOFPacket parseEOFPacket(byte[] eofBody) throws IOException {
EOFPacket packet = new EOFPacket();
packet.fromBytes(eofBody);
if (eofBody[0] != -2) {
throw new IOException("EOF Packet is expected, but packet with field_count=" + eofBody[0] + " is found.");
}
return (packet.statusFlag & 0x0008) != 0;
return packet;
}
protected byte[] readNextPacket() throws IOException {