diff --git a/src/main/java/info/avalon566/shardingscaling/sync/mysql/binlog/packet/binlog/RowsEvent.java b/src/main/java/info/avalon566/shardingscaling/sync/mysql/binlog/packet/binlog/RowsEvent.java index 8cf682afe796036ba0335dd0c51690cce07704e0..bcfeb271e880b557ae87fc2ada8605abd9df9afa 100644 --- a/src/main/java/info/avalon566/shardingscaling/sync/mysql/binlog/packet/binlog/RowsEvent.java +++ b/src/main/java/info/avalon566/shardingscaling/sync/mysql/binlog/packet/binlog/RowsEvent.java @@ -60,9 +60,13 @@ public class RowsEvent { public void parsePostHeader(final ByteBuf in) { tableId = DataTypesCodec.readUnsignedInt6LE(in); flags = DataTypesCodec.readUnsignedInt2LE(in); - var extraDataLength = DataTypesCodec.readUnsignedInt2LE(in) - 2; - // skip data - DataTypesCodec.readBytes(extraDataLength, in); + if (EventTypes.WRITE_ROWS_EVENTv2 <= binlogEventHeader.getTypeCode() + && EventTypes.DELETE_ROWS_EVENTv2 >= binlogEventHeader.getTypeCode()) { + // added the extra-data fields in v2 + var extraDataLength = DataTypesCodec.readUnsignedInt2LE(in) - 2; + // skip data + DataTypesCodec.readBytes(extraDataLength, in); + } } public void parsePaylod(final BinlogContext binlogContext, final ByteBuf in) {