This is an automated email from the ASF dual-hosted git repository.

duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 7eef6b2b52d Refactor MySQL sequence ID handling logic (#23053)
7eef6b2b52d is described below

commit 7eef6b2b52d37453fec69b38385baddeef85dc55
Author: 吴伟杰 <[email protected]>
AuthorDate: Fri Dec 23 15:15:34 2022 +0800

    Refactor MySQL sequence ID handling logic (#23053)
    
    * Refactor MySQL sequence ID handling logic
    
    * Fix sequence ID when writing multi packets
    
    * Fix decoding multi packets
    
    * Complete tests in shardingsphere-mysql-protocol
    
    * Complete tests in shardingsphere-proxy-frontend-mysql
    
    * Initial sequence ID in MySQLClient
    
    * Remove sequence ID from AbstractMySQLBinlogEventPacket
    
    * Remove sequence ID from MySQLBinlogEventPacketDecoder
    
    * Complete tests in shardingsphere-data-pipeline-mysql
    
    * Fix getByte offset in MySQLCommandPacketDecoder
    
    * Fix getByte offset in MySQLNegotiatePackageDecoder
    
    * Fix magic value in MySQLBinlogEventPacketDecoder
---
 .../mysql/codec/MySQLPacketCodecEngine.java        | 24 +++++++++++++---------
 .../db/protocol/mysql/constant/MySQLConstants.java |  4 ++++
 .../db/protocol/mysql/packet/MySQLPacket.java      |  7 -------
 .../binlog/AbstractMySQLBinlogEventPacket.java     |  9 ++------
 .../packet/binlog/MySQLBinlogEventHeader.java      |  5 -----
 .../mysql/packet/command/MySQLCommandPacket.java   |  5 -----
 .../command/MySQLCommandPacketTypeLoader.java      |  2 --
 .../query/MySQLColumnDefinition41Packet.java       | 16 +++++----------
 .../command/query/MySQLFieldCountPacket.java       |  4 +---
 .../execute/MySQLBinaryResultSetRowPacket.java     |  4 ----
 .../prepare/MySQLComStmtPrepareOKPacket.java       |  4 ----
 .../query/text/MySQLTextResultSetRowPacket.java    |  3 ---
 .../mysql/packet/generic/MySQLEofPacket.java       |  7 ++-----
 .../mysql/packet/generic/MySQLErrPacket.java       | 13 ++++--------
 .../mysql/packet/generic/MySQLOKPacket.java        | 11 ++++------
 .../packet/handshake/MySQLAuthMoreDataPacket.java  |  4 ----
 .../handshake/MySQLAuthSwitchRequestPacket.java    |  4 ----
 .../handshake/MySQLAuthSwitchResponsePacket.java   |  4 ----
 .../packet/handshake/MySQLHandshakePacket.java     |  6 ------
 .../handshake/MySQLHandshakeResponse41Packet.java  |  3 ---
 .../mysql/codec/MySQLPacketCodecEngineTest.java    | 10 +++++----
 .../packet/binlog/MySQLBinlogEventHeaderTest.java  |  1 -
 ...ySQLBinlogFormatDescriptionEventPacketTest.java |  1 -
 .../MySQLBinlogRotateEventPacketTest.java          |  1 -
 .../row/MySQLBinlogTableMapEventPacketTest.java    |  1 +
 .../command/MySQLCommandPacketTypeLoaderTest.java  |  4 ++--
 .../admin/initdb/MySQLComInitDbPacketTest.java     |  1 -
 .../query/MySQLColumnDefinition41PacketTest.java   |  8 ++------
 .../command/query/MySQLFieldCountPacketTest.java   |  3 +--
 .../execute/MySQLBinaryResultSetRowPacketTest.java |  5 +----
 .../MySQLComStmtPrepareMySQLOKPacketTest.java      |  5 +----
 .../prepare/MySQLComStmtPreparePacketTest.java     |  1 -
 .../text/MySQLTextResultSetRowPacketTest.java      | 10 +++------
 .../query/text/query/MySQLComQueryPacketTest.java  |  1 -
 .../mysql/packet/generic/MySQLEofPacketTest.java   | 10 ++++-----
 .../mysql/packet/generic/MySQLErrPacketTest.java   |  8 +++-----
 .../mysql/packet/generic/MySQLOKPacketTest.java    | 13 +++++-------
 .../MySQLAuthSwitchRequestPacketTest.java          |  2 +-
 .../MySQLAuthSwitchResponsePacketTest.java         |  2 --
 .../packet/handshake/MySQLHandshakePacketTest.java |  6 ++----
 .../MySQLHandshakeResponse41PacketTest.java        | 22 ++++++++------------
 .../pipeline/mysql/ingest/client/MySQLClient.java  | 11 ++++++++++
 .../netty/MySQLBinlogEventPacketDecoder.java       | 11 +++-------
 .../client/netty/MySQLCommandPacketDecoder.java    |  6 +++---
 .../ingest/client/netty/MySQLNegotiateHandler.java |  8 ++++----
 .../client/netty/MySQLNegotiatePackageDecoder.java |  2 +-
 .../mysql/ingest/client/MySQLClientTest.java       | 13 +++++++++---
 .../netty/MySQLBinlogEventPacketDecoderTest.java   | 18 ++++++++--------
 .../netty/MySQLCommandPacketDecoderTest.java       | 16 +++++++--------
 .../client/netty/MySQLNegotiateHandlerTest.java    |  4 ++--
 .../netty/MySQLNegotiatePackageDecoderTest.java    | 10 ++++-----
 .../authentication/MySQLAuthenticationEngine.java  | 16 +++++++--------
 .../mysql/command/MySQLCommandExecuteEngine.java   |  4 +---
 .../admin/MySQLComResetConnectionExecutor.java     |  2 +-
 .../command/admin/MySQLComSetOptionExecutor.java   |  2 +-
 .../admin/initdb/MySQLComInitDbExecutor.java       |  2 +-
 .../command/admin/ping/MySQLComPingExecutor.java   |  2 +-
 .../command/admin/quit/MySQLComQuitExecutor.java   |  2 +-
 .../execute/MySQLComStmtExecuteExecutor.java       |  8 ++------
 .../prepare/MySQLComStmtPrepareExecutor.java       | 12 +++++------
 .../binary/reset/MySQLComStmtResetExecutor.java    |  2 +-
 .../query/builder/ResponsePacketBuilder.java       |  9 ++++----
 .../fieldlist/MySQLComFieldListPacketExecutor.java |  6 ++----
 .../text/query/MySQLComQueryPacketExecutor.java    |  8 ++------
 .../frontend/mysql/err/MySQLErrPacketFactory.java  |  4 ++--
 .../frontend/mysql/MySQLFrontendEngineTest.java    |  1 +
 .../MySQLAuthenticationEngineTest.java             |  1 +
 .../execute/MySQLComStmtExecuteExecutorTest.java   |  1 -
 .../mysql/err/MySQLErrPacketFactoryTest.java       |  5 -----
 69 files changed, 166 insertions(+), 274 deletions(-)

diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngine.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngine.java
index a08ff36de8a..b1e50337054 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngine.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngine.java
@@ -22,6 +22,7 @@ import io.netty.buffer.CompositeByteBuf;
 import io.netty.channel.ChannelHandlerContext;
 import org.apache.shardingsphere.db.protocol.CommonConstants;
 import org.apache.shardingsphere.db.protocol.codec.DatabasePacketCodecEngine;
+import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLConstants;
 import org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.generic.MySQLErrPacket;
 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
@@ -32,6 +33,7 @@ import java.sql.SQLException;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Database packet codec for MySQL.
@@ -59,7 +61,9 @@ public final class MySQLPacketCodecEngine implements 
DatabasePacketCodecEngine<M
             in.resetReaderIndex();
             return;
         }
-        ByteBuf message = in.readRetainedSlice(SEQUENCE_LENGTH + 
payloadLength);
+        short sequenceId = in.readUnsignedByte();
+        
context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).get().set(sequenceId + 
1);
+        ByteBuf message = in.readRetainedSlice(payloadLength);
         if (MAX_PACKET_LENGTH == payloadLength) {
             pendingMessages.add(message);
         } else if (pendingMessages.isEmpty()) {
@@ -74,10 +78,10 @@ public final class MySQLPacketCodecEngine implements 
DatabasePacketCodecEngine<M
         Iterator<ByteBuf> pendingMessagesIterator = pendingMessages.iterator();
         result.addComponent(true, pendingMessagesIterator.next());
         while (pendingMessagesIterator.hasNext()) {
-            result.addComponent(true, 
pendingMessagesIterator.next().skipBytes(1));
+            result.addComponent(true, pendingMessagesIterator.next());
         }
-        if (lastMessage.readableBytes() > 1) {
-            result.addComponent(true, lastMessage.skipBytes(1));
+        if (lastMessage.readableBytes() > 0) {
+            result.addComponent(true, lastMessage);
         }
         out.add(result);
         pendingMessages.clear();
@@ -93,13 +97,12 @@ public final class MySQLPacketCodecEngine implements 
DatabasePacketCodecEngine<M
             // CHECKSTYLE:ON
             out.resetWriterIndex();
             SQLException unknownSQLException = new 
UnknownSQLException(ex).toSQLException();
-            new MySQLErrPacket(1, unknownSQLException.getErrorCode(), 
unknownSQLException.getSQLState(), 
unknownSQLException.getMessage()).write(payload);
+            new MySQLErrPacket(unknownSQLException.getErrorCode(), 
unknownSQLException.getSQLState(), 
unknownSQLException.getMessage()).write(payload);
         } finally {
             if (out.readableBytes() - PAYLOAD_LENGTH - SEQUENCE_LENGTH < 
MAX_PACKET_LENGTH) {
-                updateMessageHeader(out, message.getSequenceId());
+                updateMessageHeader(out, 
context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).get().getAndIncrement());
             } else {
-                // TODO Sequence ID of packets after this message may be 
duplicate with multi packets. Sequence ID should be generated by codec instead 
of provided by MySQLPacket.
-                writeMultiPackets(context, out, message.getSequenceId());
+                writeMultiPackets(context, out);
             }
         }
     }
@@ -113,14 +116,15 @@ public final class MySQLPacketCodecEngine implements 
DatabasePacketCodecEngine<M
         byteBuf.setByte(3, sequenceId);
     }
     
-    private void writeMultiPackets(final ChannelHandlerContext context, final 
ByteBuf byteBuf, final int sequenceId) {
+    private void writeMultiPackets(final ChannelHandlerContext context, final 
ByteBuf byteBuf) {
         int packetCount = (byteBuf.skipBytes(PAYLOAD_LENGTH + 
SEQUENCE_LENGTH).readableBytes() / MAX_PACKET_LENGTH) + 1;
         CompositeByteBuf result = context.alloc().compositeBuffer(packetCount 
* 2);
+        AtomicInteger sequenceId = 
context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).get();
         for (int i = 0; i < packetCount; i++) {
             ByteBuf header = context.alloc().ioBuffer(4, 4);
             int packetLength = Math.min(byteBuf.readableBytes(), 
MAX_PACKET_LENGTH);
             header.writeMediumLE(packetLength);
-            header.writeByte(sequenceId + i);
+            header.writeByte(sequenceId.getAndIncrement());
             result.addComponent(true, header);
             if (packetLength > 0) {
                 result.addComponent(true, 
byteBuf.readRetainedSlice(packetLength));
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLConstants.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLConstants.java
index e8d363115b4..b23e35e8390 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLConstants.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/constant/MySQLConstants.java
@@ -21,12 +21,16 @@ import io.netty.util.AttributeKey;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 /**
  * MySQL constants.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class MySQLConstants {
     
+    public static final AttributeKey<AtomicInteger> MYSQL_SEQUENCE_ID = 
AttributeKey.valueOf("MYSQL_SEQUENCE_ID");
+    
     public static final AttributeKey<MySQLCharacterSet> 
MYSQL_CHARACTER_SET_ATTRIBUTE_KEY = 
AttributeKey.valueOf(MySQLCharacterSet.class.getName());
     
     public static final AttributeKey<Integer> MYSQL_OPTION_MULTI_STATEMENTS = 
AttributeKey.valueOf("MYSQL_OPTION_MULTI_STATEMENTS");
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/MySQLPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/MySQLPacket.java
index 5e39965d0aa..23d59c217b9 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/MySQLPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/MySQLPacket.java
@@ -24,11 +24,4 @@ import 
org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
  * Database packet for MySQL.
  */
 public interface MySQLPacket extends DatabasePacket<MySQLPacketPayload> {
-    
-    /**
-     * Get sequence ID.
-     *
-     * @return sequence ID
-     */
-    int getSequenceId();
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/AbstractMySQLBinlogEventPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/AbstractMySQLBinlogEventPacket.java
index cde3274c0ae..70e784d98ac 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/AbstractMySQLBinlogEventPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/AbstractMySQLBinlogEventPacket.java
@@ -46,16 +46,11 @@ public abstract class AbstractMySQLBinlogEventPacket 
implements MySQLPacket, MyS
     protected abstract void writeEvent(MySQLPacketPayload payload);
     
     protected int getRemainBytesLength(final MySQLPacketPayload payload) {
-        // minus checksum bytes, add seq id 1 byte, statusCode 1 byte(not 
include at event size)
-        int alreadyReadIndex = binlogEventHeader.getEventSize() + 2 - 
binlogEventHeader.getChecksumLength();
+        // minus checksum bytes, add statusCode 1 byte(not include at event 
size)
+        int alreadyReadIndex = binlogEventHeader.getEventSize() + 1 - 
binlogEventHeader.getChecksumLength();
         if (payload.getByteBuf().readerIndex() > alreadyReadIndex) {
             return -1;
         }
         return alreadyReadIndex - payload.getByteBuf().readerIndex();
     }
-    
-    @Override
-    public final int getSequenceId() {
-        return 0;
-    }
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeader.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeader.java
index 2501070c9bc..78f48442069 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeader.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeader.java
@@ -74,9 +74,4 @@ public final class MySQLBinlogEventHeader implements 
MySQLPacket {
         payload.writeInt4(logPos);
         payload.writeInt2(flags);
     }
-    
-    @Override
-    public int getSequenceId() {
-        return 0;
-    }
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacket.java
index 878f6cea103..f34fdf82e96 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacket.java
@@ -38,9 +38,4 @@ public abstract class MySQLCommandPacket implements 
MySQLPacket, CommandPacket {
     
     protected void doWrite(final MySQLPacketPayload payload) {
     }
-    
-    @Override
-    public final int getSequenceId() {
-        return 0;
-    }
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoader.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoader.java
index 47cdb3e63ea..1035c53da6e 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoader.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoader.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.db.protocol.mysql.packet.command;
 
-import com.google.common.base.Preconditions;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
@@ -35,7 +34,6 @@ public final class MySQLCommandPacketTypeLoader {
      * @return command packet type for MySQL
      */
     public static MySQLCommandPacketType getCommandPacketType(final 
MySQLPacketPayload payload) {
-        Preconditions.checkArgument(0 == payload.readInt1(), "Sequence ID of 
MySQL command packet must be `0`");
         return MySQLCommandPacketType.valueOf(payload.readInt1());
     }
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41Packet.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41Packet.java
index 6cc743b66a7..1f306545242 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41Packet.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41Packet.java
@@ -18,7 +18,6 @@
 package org.apache.shardingsphere.db.protocol.mysql.packet.command.query;
 
 import com.google.common.base.Preconditions;
-import lombok.Getter;
 import 
org.apache.shardingsphere.db.protocol.mysql.constant.MySQLBinaryColumnType;
 import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLServerInfo;
 import org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
@@ -39,9 +38,6 @@ public final class MySQLColumnDefinition41Packet implements 
MySQLPacket {
     
     private static final int NEXT_LENGTH = 0x0c;
     
-    @Getter
-    private final int sequenceId;
-    
     private final int characterSet;
     
     private final int flags;
@@ -64,8 +60,8 @@ public final class MySQLColumnDefinition41Packet implements 
MySQLPacket {
     
     private final boolean containDefaultValues;
     
-    public MySQLColumnDefinition41Packet(final int sequenceId, final 
ResultSetMetaData resultSetMetaData, final int columnIndex) throws SQLException 
{
-        this(sequenceId, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
resultSetMetaData.getSchemaName(columnIndex), 
resultSetMetaData.getTableName(columnIndex),
+    public MySQLColumnDefinition41Packet(final ResultSetMetaData 
resultSetMetaData, final int columnIndex) throws SQLException {
+        this(MySQLServerInfo.DEFAULT_CHARSET.getId(), 
resultSetMetaData.getSchemaName(columnIndex), 
resultSetMetaData.getTableName(columnIndex),
                 resultSetMetaData.getTableName(columnIndex), 
resultSetMetaData.getColumnLabel(columnIndex), 
resultSetMetaData.getColumnName(columnIndex),
                 resultSetMetaData.getColumnDisplaySize(columnIndex), 
MySQLBinaryColumnType.valueOfJDBCType(resultSetMetaData.getColumnType(columnIndex)),
 resultSetMetaData.getScale(columnIndex),
                 false);
@@ -76,16 +72,15 @@ public final class MySQLColumnDefinition41Packet implements 
MySQLPacket {
      *
      * @see <a href="https://github.com/apache/shardingsphere/issues/4358";></a>
      */
-    public MySQLColumnDefinition41Packet(final int sequenceId, final int 
characterSet, final String schema, final String table, final String orgTable,
+    public MySQLColumnDefinition41Packet(final int characterSet, final String 
schema, final String table, final String orgTable,
                                          final String name, final String 
orgName, final int columnLength, final MySQLBinaryColumnType columnType,
                                          final int decimals, final boolean 
containDefaultValues) {
-        this(sequenceId, characterSet, 0, schema, table, orgTable, name, 
orgName, columnLength, columnType, decimals, containDefaultValues);
+        this(characterSet, 0, schema, table, orgTable, name, orgName, 
columnLength, columnType, decimals, containDefaultValues);
     }
     
-    public MySQLColumnDefinition41Packet(final int sequenceId, final int 
characterSet, final int flags, final String schema, final String table, final 
String orgTable,
+    public MySQLColumnDefinition41Packet(final int characterSet, final int 
flags, final String schema, final String table, final String orgTable,
                                          final String name, final String 
orgName, final int columnLength, final MySQLBinaryColumnType columnType,
                                          final int decimals, final boolean 
containDefaultValues) {
-        this.sequenceId = sequenceId;
         this.characterSet = characterSet;
         this.flags = flags;
         this.schema = schema;
@@ -100,7 +95,6 @@ public final class MySQLColumnDefinition41Packet implements 
MySQLPacket {
     }
     
     public MySQLColumnDefinition41Packet(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         
Preconditions.checkArgument(CATALOG.equals(payload.readStringLenenc()));
         schema = payload.readStringLenenc();
         table = payload.readStringLenenc();
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacket.java
index 64b206f0aef..c0df48cb4b4 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacket.java
@@ -31,12 +31,10 @@ import 
org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 @Getter
 public final class MySQLFieldCountPacket implements MySQLPacket {
     
-    private final int sequenceId;
-    
     private final int columnCount;
     
     public MySQLFieldCountPacket(final MySQLPacketPayload payload) {
-        this(payload.readInt1(), payload.readInt1());
+        this(payload.readInt1());
     }
     
     @Override
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacket.java
index f6871c3874b..e152647c6d6 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacket.java
@@ -17,7 +17,6 @@
 
 package 
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.execute;
 
-import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.db.protocol.binary.BinaryCell;
 import org.apache.shardingsphere.db.protocol.binary.BinaryRow;
@@ -37,9 +36,6 @@ public final class MySQLBinaryResultSetRowPacket implements 
MySQLPacket {
     
     private static final int NULL_BITMAP_OFFSET = 2;
     
-    @Getter
-    private final int sequenceId;
-    
     private final BinaryRow row;
     
     @Override
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareOKPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareOKPacket.java
index 0b81af5ea81..e82974df9a8 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareOKPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareOKPacket.java
@@ -17,7 +17,6 @@
 
 package 
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.binary.prepare;
 
-import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
@@ -32,9 +31,6 @@ public final class MySQLComStmtPrepareOKPacket implements 
MySQLPacket {
     
     private static final int STATUS = 0x00;
     
-    @Getter
-    private final int sequenceId;
-    
     private final int statementId;
     
     private final int columnCount;
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
index caf25f42208..f48b27de1ca 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacket.java
@@ -42,12 +42,9 @@ public final class MySQLTextResultSetRowPacket implements 
MySQLPacket {
     
     private static final DateTimeFormatter DT_FMT = 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
     
-    private final int sequenceId;
-    
     private final Collection<Object> data;
     
     public MySQLTextResultSetRowPacket(final MySQLPacketPayload payload, final 
int columnCount) {
-        sequenceId = payload.readInt1();
         data = new ArrayList<>(columnCount);
         for (int i = 0; i < columnCount; i++) {
             data.add(payload.readStringLenenc());
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacket.java
index 8dbf2686966..618cb7b6e67 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacket.java
@@ -37,18 +37,15 @@ public final class MySQLEofPacket implements MySQLPacket {
      */
     public static final int HEADER = 0xfe;
     
-    private final int sequenceId;
-    
     private final int warnings;
     
     private final int statusFlags;
     
-    public MySQLEofPacket(final int sequenceId, final int statusFlags) {
-        this(sequenceId, 0, statusFlags);
+    public MySQLEofPacket(final int statusFlags) {
+        this(0, statusFlags);
     }
     
     public MySQLEofPacket(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of 
MySQL EOF packet must be `0xfe`.");
         warnings = payload.readInt2();
         statusFlags = payload.readInt2();
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
index 09d25ddcaa0..144aee85f6a 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacket.java
@@ -40,20 +40,17 @@ public final class MySQLErrPacket implements MySQLPacket {
     
     private static final String SQL_STATE_MARKER = "#";
     
-    private final int sequenceId;
-    
     private final int errorCode;
     
     private final String sqlState;
     
     private final String errorMessage;
     
-    public MySQLErrPacket(final int sequenceId, final VendorError vendorError, 
final Object... errorMessageArgs) {
-        this(sequenceId, vendorError.getVendorCode(), 
vendorError.getSqlState().getValue(), String.format(vendorError.getReason(), 
errorMessageArgs));
+    public MySQLErrPacket(final VendorError vendorError, final Object... 
errorMessageArgs) {
+        this(vendorError.getVendorCode(), 
vendorError.getSqlState().getValue(), String.format(vendorError.getReason(), 
errorMessageArgs));
     }
     
     public MySQLErrPacket(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of 
MySQL ERR packet must be `0xff`.");
         errorCode = payload.readInt2();
         payload.readStringFix(1);
@@ -65,10 +62,8 @@ public final class MySQLErrPacket implements MySQLPacket {
     public void write(final MySQLPacketPayload payload) {
         payload.writeInt1(HEADER);
         payload.writeInt2(errorCode);
-        if (0 != sequenceId) {
-            payload.writeStringFix(SQL_STATE_MARKER);
-            payload.writeStringFix(sqlState);
-        }
+        payload.writeStringFix(SQL_STATE_MARKER);
+        payload.writeStringFix(sqlState);
         payload.writeStringEOF(errorMessage);
     }
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacket.java
index cfadd643872..606b3311bbe 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacket.java
@@ -37,8 +37,6 @@ public final class MySQLOKPacket implements MySQLPacket {
      */
     public static final int HEADER = 0x00;
     
-    private final int sequenceId;
-    
     private final long affectedRows;
     
     private final long lastInsertId;
@@ -49,16 +47,15 @@ public final class MySQLOKPacket implements MySQLPacket {
     
     private final String info;
     
-    public MySQLOKPacket(final int sequenceId, final int statusFlag) {
-        this(sequenceId, 0L, 0L, statusFlag, 0, "");
+    public MySQLOKPacket(final int statusFlag) {
+        this(0L, 0L, statusFlag, 0, "");
     }
     
-    public MySQLOKPacket(final int sequenceId, final long affectedRows, final 
long lastInsertId, final int statusFlag) {
-        this(sequenceId, affectedRows, lastInsertId, statusFlag, 0, "");
+    public MySQLOKPacket(final long affectedRows, final long lastInsertId, 
final int statusFlag) {
+        this(affectedRows, lastInsertId, statusFlag, 0, "");
     }
     
     public MySQLOKPacket(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of 
MySQL OK packet must be `0x00`.");
         affectedRows = payload.readIntLenenc();
         lastInsertId = payload.readIntLenenc();
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthMoreDataPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthMoreDataPacket.java
index 09c558334af..ad8d7d892f4 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthMoreDataPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthMoreDataPacket.java
@@ -38,13 +38,9 @@ public final class MySQLAuthMoreDataPacket implements 
MySQLPacket {
      */
     public static final int HEADER = 0x01;
     
-    @Getter
-    private final int sequenceId;
-    
     private final byte[] pluginData;
     
     public MySQLAuthMoreDataPacket(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of 
MySQL auth more data packet must be `0x01`.");
         pluginData = payload.readStringEOFByBytes();
     }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacket.java
index d54496735b7..a4b04f0a9dd 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacket.java
@@ -38,9 +38,6 @@ public final class MySQLAuthSwitchRequestPacket implements 
MySQLPacket {
      */
     public static final int HEADER = 0xfe;
     
-    @Getter
-    private final int sequenceId;
-    
     @Getter
     private final String authPluginName;
     
@@ -48,7 +45,6 @@ public final class MySQLAuthSwitchRequestPacket implements 
MySQLPacket {
     private final MySQLAuthPluginData authPluginData;
     
     public MySQLAuthSwitchRequestPacket(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         Preconditions.checkArgument(HEADER == payload.readInt1(), "Header of 
MySQL auth switch request packet must be `0xfe`.");
         authPluginName = payload.readStringNul();
         String strAuthPluginData = payload.readStringNul();
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacket.java
index 7cb1ed6d6f2..73f19e0d171 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacket.java
@@ -31,13 +31,9 @@ import 
org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 @Getter
 public final class MySQLAuthSwitchResponsePacket implements MySQLPacket {
     
-    @Getter
-    private final int sequenceId;
-    
     private final byte[] authPluginResponse;
     
     public MySQLAuthSwitchResponsePacket(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         authPluginResponse = payload.readStringEOFByBytes();
     }
     
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacket.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacket.java
index 07372b69bf5..40d21c5f7b8 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacket.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacket.java
@@ -64,7 +64,6 @@ public final class MySQLHandshakePacket implements 
MySQLPacket {
     }
     
     public MySQLHandshakePacket(final MySQLPacketPayload payload) {
-        Preconditions.checkArgument(0 == payload.readInt1(), "Sequence ID of 
MySQL handshake packet must be `0`");
         Preconditions.checkArgument(protocolVersion == payload.readInt1());
         serverVersion = payload.readStringNul();
         connectionId = payload.readInt4();
@@ -141,9 +140,4 @@ public final class MySQLHandshakePacket implements 
MySQLPacket {
     private boolean isClientPluginAuth() {
         return 0 != (capabilityFlagsUpper & 
MySQLCapabilityFlag.CLIENT_PLUGIN_AUTH.getValue() >> 16);
     }
-    
-    @Override
-    public int getSequenceId() {
-        return 0;
-    }
 }
diff --git 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41Packet.java
 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41Packet.java
index 5c3e55be953..74d1ebae1fb 100644
--- 
a/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41Packet.java
+++ 
b/db-protocol/mysql/src/main/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41Packet.java
@@ -35,8 +35,6 @@ import 
org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 @Setter
 public final class MySQLHandshakeResponse41Packet implements MySQLPacket {
     
-    private final int sequenceId;
-    
     private final int maxPacketSize;
     
     private final int characterSet;
@@ -52,7 +50,6 @@ public final class MySQLHandshakeResponse41Packet implements 
MySQLPacket {
     private String authPluginName;
     
     public MySQLHandshakeResponse41Packet(final MySQLPacketPayload payload) {
-        sequenceId = payload.readInt1();
         capabilityFlags = payload.readInt4();
         maxPacketSize = payload.readInt4();
         characterSet = payload.readInt1();
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngineTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngineTest.java
index 60b50286382..2b14aa5179b 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngineTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/codec/MySQLPacketCodecEngineTest.java
@@ -23,6 +23,7 @@ import io.netty.buffer.Unpooled;
 import io.netty.buffer.UnpooledByteBufAllocator;
 import io.netty.channel.ChannelHandlerContext;
 import io.netty.util.AttributeKey;
+import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLConstants;
 import org.apache.shardingsphere.db.protocol.mysql.packet.MySQLPacket;
 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 import org.junit.Before;
@@ -38,6 +39,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -62,6 +64,7 @@ public final class MySQLPacketCodecEngineTest {
     @Before
     public void setup() {
         
when(context.channel().attr(AttributeKey.<Charset>valueOf(Charset.class.getName())).get()).thenReturn(StandardCharsets.UTF_8);
+        
when(context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).get()).thenReturn(new
 AtomicInteger());
     }
     
     @Test
@@ -79,7 +82,6 @@ public final class MySQLPacketCodecEngineTest {
         when(byteBuf.markReaderIndex()).thenReturn(byteBuf);
         when(byteBuf.readUnsignedMediumLE()).thenReturn(50);
         when(byteBuf.readableBytes()).thenReturn(51);
-        when(byteBuf.readRetainedSlice(51)).thenReturn(byteBuf);
         List<Object> out = new LinkedList<>();
         new MySQLPacketCodecEngine().decode(context, byteBuf, out);
         assertThat(out.size(), is(1));
@@ -113,7 +115,7 @@ public final class MySQLPacketCodecEngineTest {
             engine.decode(context, each, actual);
         }
         assertThat(actual.size(), is(1));
-        assertThat(((ByteBuf) actual.get(0)).readableBytes(), is(1 << 24));
+        assertThat(((ByteBuf) actual.get(0)).readableBytes(), is((1 << 24) - 
1));
     }
     
     private List<ByteBuf> preparePacketMoreThan16MB() {
@@ -130,7 +132,7 @@ public final class MySQLPacketCodecEngineTest {
         when(byteBuf.markWriterIndex()).thenReturn(byteBuf);
         when(byteBuf.readableBytes()).thenReturn(8);
         MySQLPacket actualMessage = mock(MySQLPacket.class);
-        when(actualMessage.getSequenceId()).thenReturn(1);
+        context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).get().set(1);
         new MySQLPacketCodecEngine().encode(context, actualMessage, byteBuf);
         verify(byteBuf).writeInt(0);
         verify(byteBuf).markWriterIndex();
@@ -170,7 +172,7 @@ public final class MySQLPacketCodecEngineTest {
         RuntimeException ex = mock(RuntimeException.class);
         MySQLPacket actualMessage = mock(MySQLPacket.class);
         doThrow(ex).when(actualMessage).write(any(MySQLPacketPayload.class));
-        when(actualMessage.getSequenceId()).thenReturn(2);
+        context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).get().set(2);
         new MySQLPacketCodecEngine().encode(context, actualMessage, byteBuf);
         verify(byteBuf).writeInt(0);
         verify(byteBuf).markWriterIndex();
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeaderTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeaderTest.java
index 2aa80b9047b..e576e6a779c 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeaderTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/MySQLBinlogEventHeaderTest.java
@@ -42,7 +42,6 @@ public final class MySQLBinlogEventHeaderTest {
         
when(payload.readInt1()).thenReturn(MySQLBinlogEventType.UNKNOWN_EVENT.getValue());
         
when(payload.readInt2()).thenReturn(MySQLBinlogEventFlag.LOG_EVENT_BINLOG_IN_USE_F.getValue());
         MySQLBinlogEventHeader actual = new MySQLBinlogEventHeader(payload, 4);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getTimestamp(), is(1234567890));
         assertThat(actual.getEventType(), 
is(MySQLBinlogEventType.UNKNOWN_EVENT.getValue()));
         assertThat(actual.getServerId(), is(123456));
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogFormatDescriptionEventPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogFormatDescriptionEventPacketTest.java
index e5525023cd1..988ce693b6f 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogFormatDescriptionEventPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogFormatDescriptionEventPacketTest.java
@@ -50,7 +50,6 @@ public final class 
MySQLBinlogFormatDescriptionEventPacketTest {
         assertThat(actual.getMysqlServerVersion(), 
is(MYSQL_SERVER_VERSION.getBytes()));
         assertThat(actual.getCreateTimestamp(), is(1234567890));
         assertThat(actual.getEventHeaderLength(), is(19));
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getBinlogEventHeader(), is(binlogEventHeader));
     }
 }
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogRotateEventPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogRotateEventPacketTest.java
index ba4ee54c95a..42d63fcb0d9 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogRotateEventPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/management/MySQLBinlogRotateEventPacketTest.java
@@ -46,7 +46,6 @@ public final class MySQLBinlogRotateEventPacketTest {
         when(payload.readStringFix(anyInt())).thenReturn("binlog-000001");
         when(payload.getByteBuf()).thenReturn(Unpooled.buffer());
         MySQLBinlogRotateEventPacket actual = new 
MySQLBinlogRotateEventPacket(binlogEventHeader, payload);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getBinlogEventHeader(), is(binlogEventHeader));
         assertThat(actual.getPosition(), is(4L));
         assertThat(actual.getNextBinlogName(), is("binlog-000001"));
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
index 53573d7d0ee..238c5a7ba26 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/binlog/row/MySQLBinlogTableMapEventPacketTest.java
@@ -61,6 +61,7 @@ public final class MySQLBinlogTableMapEventPacketTest {
         when(payload.readIntLenenc()).thenReturn(4L);
         when(payload.getByteBuf()).thenReturn(byteBuf);
         when(byteBuf.readUnsignedShort()).thenReturn(10);
+        when(byteBuf.readerIndex()).thenReturn(1);
         MySQLBinlogTableMapEventPacket actual = new 
MySQLBinlogTableMapEventPacket(binlogEventHeader, payload);
         assertThat(actual.getTableId(), is(1L));
         assertThat(actual.getFlags(), is(0));
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoaderTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoaderTest.java
index fef6f21e1fe..b8a5505fb0e 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoaderTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/MySQLCommandPacketTypeLoaderTest.java
@@ -30,14 +30,14 @@ public final class MySQLCommandPacketTypeLoaderTest {
     @Test
     public void assertGetCommandPacketType() {
         MySQLPacketPayload payload = mock(MySQLPacketPayload.class);
-        when(payload.readInt1()).thenReturn(0, 
MySQLCommandPacketType.COM_QUIT.getValue());
+        
when(payload.readInt1()).thenReturn(MySQLCommandPacketType.COM_QUIT.getValue());
         assertThat(MySQLCommandPacketTypeLoader.getCommandPacketType(payload), 
is(MySQLCommandPacketType.COM_QUIT));
     }
     
     @Test(expected = NullPointerException.class)
     public void assertGetCommandPacketTypeError() {
         MySQLPacketPayload payload = mock(MySQLPacketPayload.class);
-        when(payload.readInt1()).thenReturn(0, 0x21);
+        when(payload.readInt1()).thenReturn(0x21);
         MySQLCommandPacketTypeLoader.getCommandPacketType(payload);
     }
 }
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/admin/initdb/MySQLComInitDbPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/admin/initdb/MySQLComInitDbPacketTest.java
index ca91047ee53..33425e10c7e 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/admin/initdb/MySQLComInitDbPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/admin/initdb/MySQLComInitDbPacketTest.java
@@ -39,7 +39,6 @@ public final class MySQLComInitDbPacketTest {
     public void assertNew() {
         when(payload.readStringEOF()).thenReturn("logic_db");
         MySQLComInitDbPacket actual = new MySQLComInitDbPacket(payload);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getSchema(), is("logic_db"));
     }
     
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
index 40c1245f8ce..3f2e8e6580c 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLColumnDefinition41PacketTest.java
@@ -29,8 +29,6 @@ import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
 import java.sql.Types;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -52,21 +50,19 @@ public final class MySQLColumnDefinition41PacketTest {
         when(resultSetMetaData.getColumnName(1)).thenReturn("id");
         when(resultSetMetaData.getColumnDisplaySize(1)).thenReturn(10);
         when(resultSetMetaData.getColumnType(1)).thenReturn(Types.INTEGER);
-        MySQLColumnDefinition41Packet actual = new 
MySQLColumnDefinition41Packet(1, resultSetMetaData, 1);
-        assertThat(actual.getSequenceId(), is(1));
+        MySQLColumnDefinition41Packet actual = new 
MySQLColumnDefinition41Packet(resultSetMetaData, 1);
         actual.write(payload);
         verifyWrite();
     }
     
     @Test
     public void assertWriteWithPayload() {
-        when(payload.readInt1()).thenReturn(1, 
MySQLBinaryColumnType.MYSQL_TYPE_LONG.getValue(), 0);
+        
when(payload.readInt1()).thenReturn(MySQLBinaryColumnType.MYSQL_TYPE_LONG.getValue(),
 0);
         
when(payload.readInt2()).thenReturn(MySQLServerInfo.DEFAULT_CHARSET.getId(), 0);
         when(payload.readInt4()).thenReturn(10);
         when(payload.readIntLenenc()).thenReturn(0x0cL);
         when(payload.readStringLenenc()).thenReturn("def", "logic_db", "tbl", 
"tbl", "id", "id");
         MySQLColumnDefinition41Packet actual = new 
MySQLColumnDefinition41Packet(payload);
-        assertThat(actual.getSequenceId(), is(1));
         actual.write(payload);
         verifyWrite();
     }
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacketTest.java
index 7a90c6a781d..c14428e4490 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/MySQLFieldCountPacketTest.java
@@ -36,9 +36,8 @@ public final class MySQLFieldCountPacketTest {
     
     @Test
     public void assertWrite() {
-        when(payload.readInt1()).thenReturn(1, 3);
+        when(payload.readInt1()).thenReturn(3);
         MySQLFieldCountPacket actual = new MySQLFieldCountPacket(payload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getColumnCount(), is(3));
         actual.write(payload);
         verify(payload).writeIntLenenc(3);
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacketTest.java
index 24408cd3fe1..c9e85fa66ac 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/execute/MySQLBinaryResultSetRowPacketTest.java
@@ -28,8 +28,6 @@ import org.mockito.junit.MockitoJUnitRunner;
 
 import java.util.Arrays;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.verify;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -41,8 +39,7 @@ public final class MySQLBinaryResultSetRowPacketTest {
     @Test
     public void assertWrite() {
         BinaryRow row = new BinaryRow(Arrays.asList(new 
BinaryCell(MySQLBinaryColumnType.MYSQL_TYPE_STRING, "value"), new 
BinaryCell(MySQLBinaryColumnType.MYSQL_TYPE_STRING, null)));
-        MySQLBinaryResultSetRowPacket actual = new 
MySQLBinaryResultSetRowPacket(1, row);
-        assertThat(actual.getSequenceId(), is(1));
+        MySQLBinaryResultSetRowPacket actual = new 
MySQLBinaryResultSetRowPacket(row);
         actual.write(payload);
         verify(payload).writeInt1(0x00);
         verify(payload).writeInt1(0x08);
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareMySQLOKPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareMySQLOKPacketTest.java
index 751000115d4..7199b45e8b3 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareMySQLOKPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPrepareMySQLOKPacketTest.java
@@ -23,8 +23,6 @@ import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
@@ -36,8 +34,7 @@ public final class MySQLComStmtPrepareMySQLOKPacketTest {
     
     @Test
     public void assertWrite() {
-        MySQLComStmtPrepareOKPacket actual = new 
MySQLComStmtPrepareOKPacket(1, 1, 0, 1, 0);
-        assertThat(actual.getSequenceId(), is(1));
+        MySQLComStmtPrepareOKPacket actual = new 
MySQLComStmtPrepareOKPacket(1, 0, 1, 0);
         actual.write(payload);
         verify(payload).writeInt1(0x00);
         verify(payload, times(2)).writeInt2(0);
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPreparePacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPreparePacketTest.java
index 4c3d5b02b7a..3a888e28084 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPreparePacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/binary/prepare/MySQLComStmtPreparePacketTest.java
@@ -38,7 +38,6 @@ public final class MySQLComStmtPreparePacketTest {
     public void assertNew() {
         when(payload.readStringEOF()).thenReturn("SELECT id FROM tbl WHERE 
id=?");
         MySQLComStmtPreparePacket actual = new 
MySQLComStmtPreparePacket(payload);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getSql(), is("SELECT id FROM tbl WHERE id=?"));
     }
     
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
index 2efc7c48951..af01343832d 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/MySQLTextResultSetRowPacketTest.java
@@ -30,8 +30,6 @@ import java.time.format.DateTimeFormatter;
 import java.util.Arrays;
 import java.util.Collections;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -44,10 +42,8 @@ public final class MySQLTextResultSetRowPacketTest {
     
     @Test
     public void assertNew() {
-        when(payload.readInt1()).thenReturn(1);
         when(payload.readStringLenenc()).thenReturn("value_a", null, 
"value_c");
         MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(payload, 3);
-        assertThat(actual.getSequenceId(), is(1));
         verify(payload, times(3)).readStringLenenc();
     }
     
@@ -55,7 +51,7 @@ public final class MySQLTextResultSetRowPacketTest {
     public void assertWrite() {
         long now = System.currentTimeMillis();
         Timestamp timestamp = new Timestamp(now);
-        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(1, Arrays.asList(null, "value", BigDecimal.ONE, new 
byte[]{}, timestamp));
+        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(Arrays.asList(null, "value", BigDecimal.ONE, new 
byte[]{}, timestamp));
         actual.write(payload);
         verify(payload).writeInt1(0xfb);
         verify(payload).writeStringLenenc("value");
@@ -71,7 +67,7 @@ public final class MySQLTextResultSetRowPacketTest {
     public void assertTimestampWithoutNanos() {
         long now = System.currentTimeMillis() / 1000 * 1000;
         Timestamp timestamp = new Timestamp(now);
-        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(1, Arrays.asList(null, "value", BigDecimal.ONE, new 
byte[]{}, timestamp));
+        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(Arrays.asList(null, "value", BigDecimal.ONE, new 
byte[]{}, timestamp));
         actual.write(payload);
         verify(payload).writeInt1(0xfb);
         verify(payload).writeStringLenenc("value");
@@ -83,7 +79,7 @@ public final class MySQLTextResultSetRowPacketTest {
     public void assertLocalDateTime() {
         String localDateTimeStr = "2021-08-23T17:30:30";
         LocalDateTime time = LocalDateTime.parse(localDateTimeStr, 
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
-        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(1, Collections.singletonList(time));
+        MySQLTextResultSetRowPacket actual = new 
MySQLTextResultSetRowPacket(Collections.singletonList(time));
         actual.write(payload);
         
verify(payload).writeStringLenenc(DateTimeFormatter.ofPattern("yyyy-MM-dd 
HH:mm:ss").format(LocalDateTime.parse(localDateTimeStr, 
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"))));
     }
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/query/MySQLComQueryPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/query/MySQLComQueryPacketTest.java
index 3a38a2e3243..f55b1186965 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/query/MySQLComQueryPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/command/query/text/query/MySQLComQueryPacketTest.java
@@ -39,7 +39,6 @@ public final class MySQLComQueryPacketTest {
     public void assertNew() {
         when(payload.readStringEOF()).thenReturn("SELECT id FROM tbl");
         MySQLComQueryPacket actual = new MySQLComQueryPacket(payload, false);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getSql(), is("SELECT id FROM tbl"));
     }
     
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacketTest.java
index e64d034a75b..5ba6905878d 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLEofPacketTest.java
@@ -36,26 +36,24 @@ public final class MySQLEofPacketTest {
     private MySQLPacketPayload payload;
     
     @Test
-    public void assertNewEofPacketWithSequenceId() {
-        MySQLEofPacket actual = new MySQLEofPacket(1, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
-        assertThat(actual.getSequenceId(), is(1));
+    public void assertNewEofPacketWithStatusFlag() {
+        MySQLEofPacket actual = new 
MySQLEofPacket(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
         assertThat(actual.getWarnings(), is(0));
         assertThat(actual.getStatusFlags(), 
is(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()));
     }
     
     @Test
     public void assertNewEofPacketWithPayload() {
-        when(payload.readInt1()).thenReturn(5, MySQLEofPacket.HEADER);
+        when(payload.readInt1()).thenReturn(MySQLEofPacket.HEADER);
         when(payload.readInt2()).thenReturn(0, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
         MySQLEofPacket actual = new MySQLEofPacket(payload);
-        assertThat(actual.getSequenceId(), is(5));
         assertThat(actual.getWarnings(), is(0));
         assertThat(actual.getStatusFlags(), 
is(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()));
     }
     
     @Test
     public void assertWrite() {
-        new MySQLEofPacket(1, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()).write(payload);
+        new 
MySQLEofPacket(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()).write(payload);
         verify(payload).writeInt1(MySQLEofPacket.HEADER);
         verify(payload).writeInt2(0);
         
verify(payload).writeInt2(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacketTest.java
index 85d01e1fb6b..7258c64c28a 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLErrPacketTest.java
@@ -37,8 +37,7 @@ public final class MySQLErrPacketTest {
     
     @Test
     public void assertNewErrPacketWithServerErrorCode() {
-        MySQLErrPacket actual = new MySQLErrPacket(1, 
MySQLVendorError.ER_ACCESS_DENIED_ERROR, "root", "localhost", "root");
-        assertThat(actual.getSequenceId(), is(1));
+        MySQLErrPacket actual = new 
MySQLErrPacket(MySQLVendorError.ER_ACCESS_DENIED_ERROR, "root", "localhost", 
"root");
         assertThat(actual.getErrorCode(), 
is(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getVendorCode()));
         assertThat(actual.getSqlState(), 
is(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getSqlState().getValue()));
         assertThat(actual.getErrorMessage(), 
is(String.format(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getReason(), "root", 
"localhost", "root")));
@@ -46,13 +45,12 @@ public final class MySQLErrPacketTest {
     
     @Test
     public void assertNewErrPacketWithPayload() {
-        when(payload.readInt1()).thenReturn(1, MySQLErrPacket.HEADER);
+        when(payload.readInt1()).thenReturn(MySQLErrPacket.HEADER);
         
when(payload.readInt2()).thenReturn(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getVendorCode());
         when(payload.readStringFix(1)).thenReturn("#");
         
when(payload.readStringFix(5)).thenReturn(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getSqlState().getValue());
         
when(payload.readStringEOF()).thenReturn(String.format(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getReason(),
 "root", "localhost", "root"));
         MySQLErrPacket actual = new MySQLErrPacket(payload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getErrorCode(), 
is(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getVendorCode()));
         assertThat(actual.getSqlState(), 
is(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getSqlState().getValue()));
         assertThat(actual.getErrorMessage(), 
is(String.format(MySQLVendorError.ER_ACCESS_DENIED_ERROR.getReason(), "root", 
"localhost", "root")));
@@ -60,7 +58,7 @@ public final class MySQLErrPacketTest {
     
     @Test
     public void assertWrite() {
-        new MySQLErrPacket(1, MySQLVendorError.ER_NO_DB_ERROR).write(payload);
+        new MySQLErrPacket(MySQLVendorError.ER_NO_DB_ERROR).write(payload);
         verify(payload).writeInt1(MySQLErrPacket.HEADER);
         verify(payload).writeInt2(1046);
         verify(payload).writeStringFix("#");
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacketTest.java
index e292f094c5e..b634519952d 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/generic/MySQLOKPacketTest.java
@@ -36,9 +36,8 @@ public final class MySQLOKPacketTest {
     private MySQLPacketPayload packetPayload;
     
     @Test
-    public void assertNewOKPacketWithSequenceId() {
-        MySQLOKPacket actual = new MySQLOKPacket(1, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
-        assertThat(actual.getSequenceId(), is(1));
+    public void assertNewOKPacketWithStatusFlag() {
+        MySQLOKPacket actual = new 
MySQLOKPacket(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
         assertThat(actual.getAffectedRows(), is(0L));
         assertThat(actual.getLastInsertId(), is(0L));
         assertThat(actual.getStatusFlag(), 
is(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()));
@@ -48,8 +47,7 @@ public final class MySQLOKPacketTest {
     
     @Test
     public void assertNewOKPacketWithAffectedRowsAndLastInsertId() {
-        MySQLOKPacket actual = new MySQLOKPacket(1, 100L, 9999L, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
-        assertThat(actual.getSequenceId(), is(1));
+        MySQLOKPacket actual = new MySQLOKPacket(100L, 9999L, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue());
         assertThat(actual.getAffectedRows(), is(100L));
         assertThat(actual.getLastInsertId(), is(9999L));
         assertThat(actual.getStatusFlag(), 
is(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()));
@@ -59,12 +57,11 @@ public final class MySQLOKPacketTest {
     
     @Test
     public void assertNewOKPacketWithPayload() {
-        when(packetPayload.readInt1()).thenReturn(1, MySQLOKPacket.HEADER);
+        when(packetPayload.readInt1()).thenReturn(MySQLOKPacket.HEADER);
         
when(packetPayload.readInt2()).thenReturn(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue(),
 0);
         when(packetPayload.readIntLenenc()).thenReturn(100L, 9999L);
         when(packetPayload.readStringEOF()).thenReturn("");
         MySQLOKPacket actual = new MySQLOKPacket(packetPayload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getAffectedRows(), is(100L));
         assertThat(actual.getLastInsertId(), is(9999L));
         assertThat(actual.getStatusFlag(), 
is(MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()));
@@ -74,7 +71,7 @@ public final class MySQLOKPacketTest {
     
     @Test
     public void assertWrite() {
-        new MySQLOKPacket(1, 100L, 9999L, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()).write(packetPayload);
+        new MySQLOKPacket(100L, 9999L, 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue()).write(packetPayload);
         verify(packetPayload).writeInt1(MySQLOKPacket.HEADER);
         verify(packetPayload).writeIntLenenc(100L);
         verify(packetPayload).writeIntLenenc(9999L);
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacketTest.java
index ffbe13dab79..8724f3863eb 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchRequestPacketTest.java
@@ -40,7 +40,7 @@ public final class MySQLAuthSwitchRequestPacketTest {
     @Test
     public void assertWrite() {
         when(authPluginData.getAuthenticationPluginData()).thenReturn(new 
byte[]{0x11, 0x22});
-        MySQLAuthSwitchRequestPacket authSwitchRequestPacket = new 
MySQLAuthSwitchRequestPacket(1, "plugin", authPluginData);
+        MySQLAuthSwitchRequestPacket authSwitchRequestPacket = new 
MySQLAuthSwitchRequestPacket("plugin", authPluginData);
         authSwitchRequestPacket.write(payload);
         verify(payload).writeInt1(0xfe);
         verify(payload, times(2)).writeStringNul(anyString());
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacketTest.java
index 8c19bef075b..d4344390d83 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLAuthSwitchResponsePacketTest.java
@@ -37,10 +37,8 @@ public final class MySQLAuthSwitchResponsePacketTest {
     
     @Test
     public void assertMySQLAuthSwitchResponsePacket() {
-        when(payload.readInt1()).thenReturn(0x11);
         when(payload.readStringEOFByBytes()).thenReturn(authPluginResponse);
         MySQLAuthSwitchResponsePacket authSwitchResponsePacket = new 
MySQLAuthSwitchResponsePacket(payload);
-        assertThat(authSwitchResponsePacket.getSequenceId(), is(0x11));
         assertThat(authSwitchResponsePacket.getAuthPluginResponse(), 
is(authPluginResponse));
     }
 }
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacketTest.java
index 8cd64a6c459..a03a778889a 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakePacketTest.java
@@ -44,14 +44,13 @@ public final class MySQLHandshakePacketTest {
     
     @Test
     public void assertNewWithPayload() {
-        when(payload.readInt1()).thenReturn(0, 
MySQLServerInfo.PROTOCOL_VERSION, MySQLServerInfo.DEFAULT_CHARSET.getId(), 0);
+        when(payload.readInt1()).thenReturn(MySQLServerInfo.PROTOCOL_VERSION, 
MySQLServerInfo.DEFAULT_CHARSET.getId(), 0);
         
when(payload.readStringNul()).thenReturn(MySQLServerInfo.getDefaultServerVersion());
         when(payload.readStringNulByBytes()).thenReturn(part1, part2);
         when(payload.readInt4()).thenReturn(1000);
         when(payload.readInt2()).thenReturn(
                 MySQLCapabilityFlag.calculateHandshakeCapabilityFlagsLower(), 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue(), 
MySQLCapabilityFlag.calculateHandshakeCapabilityFlagsUpper());
         MySQLHandshakePacket actual = new MySQLHandshakePacket(payload);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getServerVersion(), 
is(MySQLServerInfo.getDefaultServerVersion()));
         assertThat(actual.getCapabilityFlagsLower(), 
is(MySQLCapabilityFlag.calculateHandshakeCapabilityFlagsLower()));
         assertThat(actual.getConnectionId(), is(1000));
@@ -65,14 +64,13 @@ public final class MySQLHandshakePacketTest {
     
     @Test
     public void assertNewWithClientPluginAuthPayload() {
-        when(payload.readInt1()).thenReturn(0, 
MySQLServerInfo.PROTOCOL_VERSION, MySQLServerInfo.DEFAULT_CHARSET.getId(), 0);
+        when(payload.readInt1()).thenReturn(MySQLServerInfo.PROTOCOL_VERSION, 
MySQLServerInfo.DEFAULT_CHARSET.getId(), 0);
         
when(payload.readStringNul()).thenReturn(MySQLServerInfo.getDefaultServerVersion(),
 MySQLAuthenticationMethod.SECURE_PASSWORD_AUTHENTICATION.getMethodName());
         when(payload.readStringNulByBytes()).thenReturn(part1, part2);
         when(payload.readInt4()).thenReturn(1000);
         when(payload.readInt2()).thenReturn(
                 MySQLCapabilityFlag.calculateHandshakeCapabilityFlagsLower(), 
MySQLStatusFlag.SERVER_STATUS_AUTOCOMMIT.getValue(), 
MySQLCapabilityFlag.CLIENT_PLUGIN_AUTH.getValue() >> 16);
         MySQLHandshakePacket actual = new MySQLHandshakePacket(payload);
-        assertThat(actual.getSequenceId(), is(0));
         assertThat(actual.getServerVersion(), 
is(MySQLServerInfo.getDefaultServerVersion()));
         assertThat(actual.getCapabilityFlagsLower(), 
is(MySQLCapabilityFlag.calculateHandshakeCapabilityFlagsLower()));
         assertThat(actual.getConnectionId(), is(1000));
diff --git 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41PacketTest.java
 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41PacketTest.java
index ee70d0e787a..d26a627ec3c 100644
--- 
a/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41PacketTest.java
+++ 
b/db-protocol/mysql/src/test/java/org/apache/shardingsphere/db/protocol/mysql/packet/handshake/MySQLHandshakeResponse41PacketTest.java
@@ -27,8 +27,8 @@ import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNull;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertNull;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -40,12 +40,11 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertNewWithPayloadWithDatabase() {
-        when(payload.readInt1()).thenReturn(1, 
MySQLServerInfo.DEFAULT_CHARSET.getId());
+        
when(payload.readInt1()).thenReturn(MySQLServerInfo.DEFAULT_CHARSET.getId());
         
when(payload.readInt4()).thenReturn(MySQLCapabilityFlag.CLIENT_CONNECT_WITH_DB.getValue(),
 1000);
         when(payload.readStringNul()).thenReturn("root", "sharding_db");
         when(payload.readStringNulByBytes()).thenReturn(new byte[]{1});
         MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(payload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getMaxPacketSize(), is(1000));
         assertThat(actual.getCharacterSet(), 
is(MySQLServerInfo.DEFAULT_CHARSET.getId()));
         assertThat(actual.getUsername(), is("root"));
@@ -58,12 +57,11 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertNewWithPayloadWithAuthPluginName() {
-        when(payload.readInt1()).thenReturn(1, 
MySQLServerInfo.DEFAULT_CHARSET.getId());
+        
when(payload.readInt1()).thenReturn(MySQLServerInfo.DEFAULT_CHARSET.getId());
         
when(payload.readInt4()).thenReturn(MySQLCapabilityFlag.CLIENT_PLUGIN_AUTH.getValue(),
 1000);
         when(payload.readStringNul()).thenReturn("root", 
MySQLAuthenticationMethod.SECURE_PASSWORD_AUTHENTICATION.getMethodName());
         when(payload.readStringNulByBytes()).thenReturn(new byte[]{1});
         MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(payload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getMaxPacketSize(), is(1000));
         assertThat(actual.getCharacterSet(), 
is(MySQLServerInfo.DEFAULT_CHARSET.getId()));
         assertThat(actual.getUsername(), is("root"));
@@ -76,12 +74,11 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertNewWithPayloadWithClientPluginAuthLenencClientData() {
-        when(payload.readInt1()).thenReturn(1, 
MySQLServerInfo.DEFAULT_CHARSET.getId());
+        
when(payload.readInt1()).thenReturn(MySQLServerInfo.DEFAULT_CHARSET.getId());
         
when(payload.readInt4()).thenReturn(MySQLCapabilityFlag.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA.getValue(),
 1000);
         when(payload.readStringNul()).thenReturn("root");
         when(payload.readStringLenencByBytes()).thenReturn(new byte[]{1});
         MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(payload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getMaxPacketSize(), is(1000));
         assertThat(actual.getCharacterSet(), 
is(MySQLServerInfo.DEFAULT_CHARSET.getId()));
         assertThat(actual.getUsername(), is("root"));
@@ -94,12 +91,11 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertNewWithPayloadWithClientSecureConnection() {
-        when(payload.readInt1()).thenReturn(1, 
MySQLServerInfo.DEFAULT_CHARSET.getId(), 1);
+        
when(payload.readInt1()).thenReturn(MySQLServerInfo.DEFAULT_CHARSET.getId(), 1);
         
when(payload.readInt4()).thenReturn(MySQLCapabilityFlag.CLIENT_SECURE_CONNECTION.getValue(),
 1000);
         when(payload.readStringNul()).thenReturn("root");
         when(payload.readStringFixByBytes(1)).thenReturn(new byte[]{1});
         MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(payload);
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getMaxPacketSize(), is(1000));
         assertThat(actual.getCharacterSet(), 
is(MySQLServerInfo.DEFAULT_CHARSET.getId()));
         assertThat(actual.getUsername(), is("root"));
@@ -112,7 +108,7 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertWriteWithDatabase() {
-        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(1, 100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
+        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
         actual.setAuthResponse(new byte[]{1});
         actual.setDatabase("sharding_db");
         actual.write(payload);
@@ -127,7 +123,7 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertWriteWithAuthPluginName() {
-        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(1, 100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
+        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
         actual.setAuthResponse(new byte[]{1});
         
actual.setAuthPluginName(MySQLAuthenticationMethod.SECURE_PASSWORD_AUTHENTICATION);
         actual.write(payload);
@@ -142,7 +138,7 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertWriteWithClientPluginAuthLenencClientData() {
-        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(1, 100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
+        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
         
actual.setCapabilityFlags(MySQLCapabilityFlag.CLIENT_PLUGIN_AUTH_LENENC_CLIENT_DATA.getValue());
         actual.setAuthResponse(new byte[]{1});
         actual.write(payload);
@@ -156,7 +152,7 @@ public final class MySQLHandshakeResponse41PacketTest {
     
     @Test
     public void assertWriteWithClientSecureConnection() {
-        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(1, 100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
+        MySQLHandshakeResponse41Packet actual = new 
MySQLHandshakeResponse41Packet(100, MySQLServerInfo.DEFAULT_CHARSET.getId(), 
"root");
         
actual.setCapabilityFlags(MySQLCapabilityFlag.CLIENT_SECURE_CONNECTION.getValue());
         actual.setAuthResponse(new byte[]{1});
         actual.write(payload);
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClient.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClient.java
index 25bdb8b066a..3aeffbee526 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClient.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClient.java
@@ -42,6 +42,7 @@ import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.client.netty.MySQLNe
 import 
org.apache.shardingsphere.data.pipeline.mysql.ingest.client.netty.MySQLNegotiatePackageDecoder;
 import org.apache.shardingsphere.db.protocol.codec.PacketCodec;
 import 
org.apache.shardingsphere.db.protocol.mysql.codec.MySQLPacketCodecEngine;
+import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLConstants;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.command.binlog.MySQLComBinlogDumpCommandPacket;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.command.binlog.MySQLComRegisterSlaveCommandPacket;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.text.query.MySQLComQueryPacket;
@@ -97,6 +98,7 @@ public final class MySQLClient {
                     
                     @Override
                     protected void initChannel(final SocketChannel 
socketChannel) {
+                        
socketChannel.attr(MySQLConstants.MYSQL_SEQUENCE_ID).set(new AtomicInteger());
                         socketChannel.pipeline().addLast(new 
ChannelAttrInitializer());
                         socketChannel.pipeline().addLast(new PacketCodec(new 
MySQLPacketCodecEngine()));
                         socketChannel.pipeline().addLast(new 
MySQLNegotiatePackageDecoder());
@@ -119,6 +121,7 @@ public final class MySQLClient {
     public synchronized boolean execute(final String queryString) {
         responseCallback = new DefaultPromise<>(eventLoopGroup.next());
         MySQLComQueryPacket comQueryPacket = new 
MySQLComQueryPacket(queryString, true);
+        resetSequenceID();
         channel.writeAndFlush(comQueryPacket);
         return null != waitExpectedResponse(MySQLOKPacket.class);
     }
@@ -132,6 +135,7 @@ public final class MySQLClient {
     public synchronized int executeUpdate(final String queryString) {
         responseCallback = new DefaultPromise<>(eventLoopGroup.next());
         MySQLComQueryPacket comQueryPacket = new 
MySQLComQueryPacket(queryString, false);
+        resetSequenceID();
         channel.writeAndFlush(comQueryPacket);
         return (int) 
Objects.requireNonNull(waitExpectedResponse(MySQLOKPacket.class)).getAffectedRows();
     }
@@ -145,6 +149,7 @@ public final class MySQLClient {
     public synchronized InternalResultSet executeQuery(final String 
queryString) {
         responseCallback = new DefaultPromise<>(eventLoopGroup.next());
         MySQLComQueryPacket comQueryPacket = new 
MySQLComQueryPacket(queryString, false);
+        resetSequenceID();
         channel.writeAndFlush(comQueryPacket);
         return waitExpectedResponse(InternalResultSet.class);
     }
@@ -173,6 +178,7 @@ public final class MySQLClient {
         InetSocketAddress localAddress = (InetSocketAddress) 
channel.localAddress();
         MySQLComRegisterSlaveCommandPacket packet = new 
MySQLComRegisterSlaveCommandPacket(
                 connectInfo.getServerId(), localAddress.getHostName(), 
connectInfo.getUsername(), connectInfo.getPassword(), localAddress.getPort());
+        resetSequenceID();
         channel.writeAndFlush(packet);
         waitExpectedResponse(MySQLOKPacket.class);
     }
@@ -201,6 +207,7 @@ public final class MySQLClient {
         String tableKey = String.join(":", connectInfo.getHost(), 
String.valueOf(connectInfo.getPort()));
         channel.pipeline().addLast(new 
MySQLBinlogEventPacketDecoder(checksumLength, 
GlobalTableMapEventMapping.getTableMapEventMap(tableKey)));
         channel.pipeline().addLast(new 
MySQLBinlogEventHandler(getLastBinlogEvent(binlogFileName, binlogPosition)));
+        resetSequenceID();
         channel.writeAndFlush(new MySQLComBinlogDumpCommandPacket((int) 
binlogPosition, connectInfo.getServerId(), binlogFileName));
     }
     
@@ -211,6 +218,10 @@ public final class MySQLClient {
         return result;
     }
     
+    private void resetSequenceID() {
+        channel.attr(MySQLConstants.MYSQL_SEQUENCE_ID).get().set(0);
+    }
+    
     /**
      * Poll binlog event.
      *
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoder.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoder.java
index 8da11701072..e30a2ac3b23 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoder.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoder.java
@@ -56,11 +56,10 @@ public final class MySQLBinlogEventPacketDecoder extends 
ByteToMessageDecoder {
     
     @Override
     protected void decode(final ChannelHandlerContext ctx, final ByteBuf in, 
final List<Object> out) {
-        // readable bytes must greater + seqId(1b) + statusCode(1b) + 
header-length(19b) +
-        while (in.readableBytes() >= 2 + 
MySQLBinlogEventHeader.MYSQL_BINLOG_EVENT_HEADER_LENGTH) {
+        // readable bytes must greater + statusCode(1b) + header-length(19b) +
+        while (in.readableBytes() >= 1 + 
MySQLBinlogEventHeader.MYSQL_BINLOG_EVENT_HEADER_LENGTH) {
             in.markReaderIndex();
             MySQLPacketPayload payload = new MySQLPacketPayload(in, 
ctx.channel().attr(CommonConstants.CHARSET_ATTRIBUTE_KEY).get());
-            skipSequenceId(payload);
             checkError(payload);
             MySQLBinlogEventHeader binlogEventHeader = new 
MySQLBinlogEventHeader(payload, binlogContext.getChecksumLength());
             // make sure event has complete body
@@ -106,7 +105,7 @@ public final class MySQLBinlogEventPacketDecoder extends 
ByteToMessageDecoder {
                 return decodeDeleteRowsEventV2(binlogEventHeader, payload);
             default:
                 PlaceholderEvent result = 
createPlaceholderEvent(binlogEventHeader);
-                int remainDataLength = binlogEventHeader.getEventSize() + 2 - 
binlogEventHeader.getChecksumLength() - payload.getByteBuf().readerIndex();
+                int remainDataLength = binlogEventHeader.getEventSize() + 1 - 
binlogEventHeader.getChecksumLength() - payload.getByteBuf().readerIndex();
                 if (remainDataLength > 0) {
                     payload.skipReserved(remainDataLength);
                 }
@@ -114,10 +113,6 @@ public final class MySQLBinlogEventPacketDecoder extends 
ByteToMessageDecoder {
         }
     }
     
-    private void skipSequenceId(final MySQLPacketPayload payload) {
-        payload.readInt1();
-    }
-    
     private void checkError(final MySQLPacketPayload payload) {
         int statusCode = payload.readInt1();
         if (255 == statusCode) {
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoder.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoder.java
index d9ca263dde1..b1bbab61b46 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoder.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoder.java
@@ -64,7 +64,7 @@ public final class MySQLCommandPacketDecoder extends 
ByteToMessageDecoder {
     }
     
     private void decodeFieldPacket(final MySQLPacketPayload payload) {
-        if (MySQLEofPacket.HEADER != (payload.getByteBuf().getByte(1) & 0xff)) 
{
+        if (MySQLEofPacket.HEADER != (payload.getByteBuf().getByte(0) & 0xff)) 
{
             internalResultSet.getFieldDescriptors().add(new 
MySQLColumnDefinition41Packet(payload));
         } else {
             new MySQLEofPacket(payload);
@@ -73,7 +73,7 @@ public final class MySQLCommandPacketDecoder extends 
ByteToMessageDecoder {
     }
     
     private void decodeRowDataPacket(final MySQLPacketPayload payload, final 
List<Object> out) {
-        if (MySQLEofPacket.HEADER != (payload.getByteBuf().getByte(1) & 0xff)) 
{
+        if (MySQLEofPacket.HEADER != (payload.getByteBuf().getByte(0) & 0xff)) 
{
             internalResultSet.getFieldValues().add(new 
MySQLTextResultSetRowPacket(payload, 
internalResultSet.getHeader().getColumnCount()));
         } else {
             new MySQLEofPacket(payload);
@@ -84,7 +84,7 @@ public final class MySQLCommandPacketDecoder extends 
ByteToMessageDecoder {
     }
     
     private void decodeResponsePacket(final MySQLPacketPayload payload, final 
List<Object> out) {
-        switch (payload.getByteBuf().getByte(1) & 0xff) {
+        switch (payload.getByteBuf().getByte(0) & 0xff) {
             case MySQLErrPacket.HEADER:
                 out.add(new MySQLErrPacket(payload));
                 break;
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandler.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandler.java
index 5261d2286c3..6805ab0828b 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandler.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandler.java
@@ -69,7 +69,7 @@ public final class MySQLNegotiateHandler extends 
ChannelInboundHandlerAdapter {
     public void channelRead(final ChannelHandlerContext ctx, final Object msg) 
{
         if (msg instanceof MySQLHandshakePacket) {
             MySQLHandshakePacket handshake = (MySQLHandshakePacket) msg;
-            MySQLHandshakeResponse41Packet handshakeResponsePacket = new 
MySQLHandshakeResponse41Packet(1, MAX_PACKET_SIZE, CHARACTER_SET, username);
+            MySQLHandshakeResponse41Packet handshakeResponsePacket = new 
MySQLHandshakeResponse41Packet(MAX_PACKET_SIZE, CHARACTER_SET, username);
             
handshakeResponsePacket.setAuthResponse(generateAuthResponse(handshake.getAuthPluginData().getAuthenticationPluginData()));
             
handshakeResponsePacket.setCapabilityFlags(generateClientCapability());
             
handshakeResponsePacket.setAuthPluginName(MySQLAuthenticationMethod.SECURE_PASSWORD_AUTHENTICATION);
@@ -92,7 +92,7 @@ public final class MySQLNegotiateHandler extends 
ChannelInboundHandlerAdapter {
                 default:
                     authPluginResponse = password.getBytes();
             }
-            ctx.channel().writeAndFlush(new 
MySQLAuthSwitchResponsePacket(authSwitchRequest.getSequenceId() + 1, 
authPluginResponse));
+            ctx.channel().writeAndFlush(new 
MySQLAuthSwitchResponsePacket(authPluginResponse));
             seed = 
authSwitchRequest.getAuthPluginData().getAuthenticationPluginData();
             return;
         }
@@ -116,10 +116,10 @@ public final class MySQLNegotiateHandler extends 
ChannelInboundHandlerAdapter {
         if (!publicKeyRequested) {
             if (PERFORM_FULL_AUTHENTICATION == 
authMoreData.getPluginData()[0]) {
                 publicKeyRequested = true;
-                ctx.channel().writeAndFlush(new 
MySQLAuthSwitchResponsePacket(authMoreData.getSequenceId() + 1, new 
byte[]{REQUEST_PUBLIC_KEY}));
+                ctx.channel().writeAndFlush(new 
MySQLAuthSwitchResponsePacket(new byte[]{REQUEST_PUBLIC_KEY}));
             }
         } else {
-            ctx.channel().writeAndFlush(new 
MySQLAuthSwitchResponsePacket(authMoreData.getSequenceId() + 1,
+            ctx.channel().writeAndFlush(new MySQLAuthSwitchResponsePacket(
                     PasswordEncryption.encryptWithRSAPublicKey(password, seed,
                             
serverInfo.getServerVersion().greaterThanOrEqualTo(8, 0, 5) ? 
"RSA/ECB/OAEPWithSHA-1AndMGF1Padding" : "RSA/ECB/PKCS1Padding",
                             new String(authMoreData.getPluginData()))));
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoder.java
 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoder.java
index 18f6c2d70c4..1adcd261ad3 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoder.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/main/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoder.java
@@ -59,7 +59,7 @@ public final class MySQLNegotiatePackageDecoder extends 
ByteToMessageDecoder {
     }
     
     private MySQLPacket decodeResponsePacket(final MySQLPacketPayload payload, 
final List<Object> out) {
-        int header = payload.getByteBuf().getByte(1) & 0xff;
+        int header = payload.getByteBuf().getByte(0) & 0xff;
         switch (header) {
             case MySQLErrPacket.HEADER:
                 return new MySQLErrPacket(payload);
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java
 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java
index 8b17111dd22..841f0c4413a 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/MySQLClientTest.java
@@ -21,8 +21,10 @@ import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelPipeline;
 import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.util.Attribute;
 import io.netty.util.concurrent.Promise;
 import 
org.apache.shardingsphere.data.pipeline.core.exception.job.BinlogSyncChannelAlreadyClosedException;
+import org.apache.shardingsphere.db.protocol.mysql.constant.MySQLConstants;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.command.binlog.MySQLComBinlogDumpCommandPacket;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.command.binlog.MySQLComRegisterSlaveCommandPacket;
 import 
org.apache.shardingsphere.db.protocol.mysql.packet.command.query.text.query.MySQLComQueryPacket;
@@ -36,11 +38,13 @@ import org.mockito.internal.configuration.plugins.Plugins;
 import org.mockito.junit.MockitoJUnitRunner;
 
 import java.net.InetSocketAddress;
+import java.util.concurrent.atomic.AtomicInteger;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -58,6 +62,7 @@ public final class MySQLClientTest {
     
     private MySQLClient mysqlClient;
     
+    @SuppressWarnings("unchecked")
     @Before
     public void setUp() throws InterruptedException {
         mysqlClient = new MySQLClient(new ConnectInfo(1, "host", 3306, 
"username", "password"));
@@ -69,6 +74,8 @@ public final class MySQLClientTest {
             return null;
         });
         when(channel.localAddress()).thenReturn(new InetSocketAddress("host", 
3306));
+        
when(channel.attr(MySQLConstants.MYSQL_SEQUENCE_ID)).thenReturn(mock(Attribute.class));
+        
when(channel.attr(MySQLConstants.MYSQL_SEQUENCE_ID).get()).thenReturn(new 
AtomicInteger());
     }
     
     @Test
@@ -82,7 +89,7 @@ public final class MySQLClientTest {
     
     @Test
     public void assertExecute() throws ReflectiveOperationException {
-        mockChannelResponse(new MySQLOKPacket(0, 0));
+        mockChannelResponse(new MySQLOKPacket(0));
         
Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), 
mysqlClient, channel);
         
Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("eventLoopGroup"),
 mysqlClient, new NioEventLoopGroup(1));
         assertTrue(mysqlClient.execute(""));
@@ -91,7 +98,7 @@ public final class MySQLClientTest {
     
     @Test
     public void assertExecuteUpdate() throws ReflectiveOperationException {
-        MySQLOKPacket expected = new MySQLOKPacket(0, 10, 0, 0);
+        MySQLOKPacket expected = new MySQLOKPacket(10, 0, 0);
         
Plugins.getMemberAccessor().set(MySQLOKPacket.class.getDeclaredField("affectedRows"),
 expected, 10L);
         mockChannelResponse(expected);
         
Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), 
mysqlClient, channel);
@@ -117,7 +124,7 @@ public final class MySQLClientTest {
         
Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("serverInfo"),
 mysqlClient, serverInfo);
         
Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("channel"), 
mysqlClient, channel);
         
Plugins.getMemberAccessor().set(MySQLClient.class.getDeclaredField("eventLoopGroup"),
 mysqlClient, new NioEventLoopGroup(1));
-        mockChannelResponse(new MySQLOKPacket(0, 0));
+        mockChannelResponse(new MySQLOKPacket(0));
         mysqlClient.subscribe("", 4L);
         
verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLComRegisterSlaveCommandPacket.class));
         
verify(channel).writeAndFlush(ArgumentMatchers.any(MySQLComBinlogDumpCommandPacket.class));
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java
 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java
index 90e942189e0..c824c814ce3 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLBinlogEventPacketDecoderTest.java
@@ -86,7 +86,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     @Test
     public void assertDecodeRotateEvent() {
         ByteBuf byteBuf = Unpooled.buffer();
-        
byteBuf.writeBytes(StringUtil.decodeHexDump("01000000000004010000002c0000000000000020001a9100000000000062696e6c6f672e3030303032394af65c24"));
+        
byteBuf.writeBytes(StringUtil.decodeHexDump("000000000004010000002c0000000000000020001a9100000000000062696e6c6f672e3030303032394af65c24"));
         List<Object> decodedEvents = new LinkedList<>();
         binlogEventPacketDecoder.decode(channelHandlerContext, byteBuf, 
decodedEvents);
         assertThat(decodedEvents.size(), is(0));
@@ -96,7 +96,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     @Test
     public void assertDecodeFormatDescriptionEvent() {
         ByteBuf byteBuf = Unpooled.buffer();
-        
byteBuf.writeBytes(StringUtil.decodeHexDump("0200513aa8620f01000000790000000000000000000400382e302e323700000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
+        
byteBuf.writeBytes(StringUtil.decodeHexDump("00513aa8620f01000000790000000000000000000400382e302e323700000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
                 + 
"000000000013000d0008000000000400040000006100041a08000000080808020000000a0a0a2a2a001234000a280140081396"));
         List<Object> decodedEvents = new LinkedList<>();
         binlogEventPacketDecoder.decode(channelHandlerContext, byteBuf, 
decodedEvents);
@@ -108,7 +108,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     public void assertDecodeTableMapEvent() {
         ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();
         // the hex data is from binlog data, The first event used in Row Based 
Replication
-        
byteBuf.writeBytes(StringUtil.decodeHexDump("3400cb38a962130100000041000000be7d000000007b000000000001000464735f310009745f6f726465725f31000408030ff604c8000a020c0101000201e0ff0a9b3a"));
+        
byteBuf.writeBytes(StringUtil.decodeHexDump("00cb38a962130100000041000000be7d000000007b000000000001000464735f310009745f6f726465725f31000408030ff604c8000a020c0101000201e0ff0a9b3a"));
         binlogContext.getTableMap().put(123L, tableMapEventPacket);
         List<Object> decodedEvents = new LinkedList<>();
         binlogEventPacketDecoder.decode(channelHandlerContext, byteBuf, 
decodedEvents);
@@ -120,7 +120,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     public void assertDecodeWriteRowEvent() {
         ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();
         // the hex data is from INSERT INTO t_order(order_id, user_id, status, 
t_numeric) VALUES (1, 1, 'SUCCESS',null);
-        
byteBuf.writeBytes(StringUtil.decodeHexDump("30007a36a9621e0100000038000000bb7c000000007b00000000000100020004ff08010000000000000001000000075355434345535365eff9ff"));
+        
byteBuf.writeBytes(StringUtil.decodeHexDump("007a36a9621e0100000038000000bb7c000000007b00000000000100020004ff08010000000000000001000000075355434345535365eff9ff"));
         binlogContext.getTableMap().put(123L, tableMapEventPacket);
         when(tableMapEventPacket.getColumnDefs()).thenReturn(columnDefs);
         List<Object> decodedEvents = new LinkedList<>();
@@ -135,7 +135,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     public void assertDecodeUpdateRowEvent() {
         ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();
         // the hex data is from update t_order set status = 'updated' where 
order_id = 1;
-        
byteBuf.writeBytes(StringUtil.decodeHexDump("3500cb38a9621f010000004e0000000c7e000000007b00000000000100020004ffff08010000000000000001000000075355434345535308010000000000000001000000077570"
+        
byteBuf.writeBytes(StringUtil.decodeHexDump("00cb38a9621f010000004e0000000c7e000000007b00000000000100020004ffff08010000000000000001000000075355434345535308010000000000000001000000077570"
                 + "6461746564e78cee6c"));
         binlogContext.getTableMap().put(123L, tableMapEventPacket);
         when(tableMapEventPacket.getColumnDefs()).thenReturn(columnDefs);
@@ -152,7 +152,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     public void assertDecodeDeleteRowEvent() {
         ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();
         // delete from t_order where order_id = 1;
-        
byteBuf.writeBytes(StringUtil.decodeHexDump("51002a80a862200100000038000000c569000000007400000000000100020004ff0801000000000000000100000007535543434553531c9580c5"));
+        
byteBuf.writeBytes(StringUtil.decodeHexDump("002a80a862200100000038000000c569000000007400000000000100020004ff0801000000000000000100000007535543434553531c9580c5"));
         binlogContext.getTableMap().put(116L, tableMapEventPacket);
         when(tableMapEventPacket.getColumnDefs()).thenReturn(columnDefs);
         List<Object> decodedEvents = new LinkedList<>();
@@ -166,7 +166,7 @@ public final class MySQLBinlogEventPacketDecoderTest {
     @Test
     public void assertBinlogEventHeaderIncomplete() {
         ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();
-        byte[] completeData = 
StringUtil.decodeHexDump("51002a80a862200100000038000000c569000000007400000000000100020004ff0801000000000000000100000007535543434553531c9580c5");
+        byte[] completeData = 
StringUtil.decodeHexDump("002a80a862200100000038000000c569000000007400000000000100020004ff0801000000000000000100000007535543434553531c9580c5");
         byteBuf.writeBytes(completeData);
         // write incomplete event data
         byteBuf.writeBytes(StringUtil.decodeHexDump("3400"));
@@ -181,9 +181,9 @@ public final class MySQLBinlogEventPacketDecoderTest {
     @Test
     public void assertBinlogEventBodyIncomplete() {
         ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();
-        byte[] completeData = 
StringUtil.decodeHexDump("51002a80a862200100000038000000c569000000007400000000000100020004ff0801000000000000000100000007535543434553531c9580c5");
+        byte[] completeData = 
StringUtil.decodeHexDump("002a80a862200100000038000000c569000000007400000000000100020004ff0801000000000000000100000007535543434553531c9580c5");
         byteBuf.writeBytes(completeData);
-        byte[] notCompleteData = 
StringUtil.decodeHexDump("3400cb38a962130100000041000000be7d000000007b000000000001000464735f310009745f6f726465725f31000408030f");
+        byte[] notCompleteData = 
StringUtil.decodeHexDump("00cb38a962130100000041000000be7d000000007b000000000001000464735f310009745f6f726465725f31000408030f");
         byteBuf.writeBytes(notCompleteData);
         List<Object> decodedEvents = new LinkedList<>();
         binlogContext.getTableMap().put(116L, tableMapEventPacket);
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoderTest.java
 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoderTest.java
index 23a383693f3..cdf063e8ceb 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoderTest.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLCommandPacketDecoderTest.java
@@ -64,7 +64,7 @@ public final class MySQLCommandPacketDecoderTest {
     
     private ByteBuf mockOkPacket() {
         when(byteBuf.readUnsignedByte()).thenReturn((short) 0, (short) 
MySQLOKPacket.HEADER);
-        when(byteBuf.getByte(1)).thenReturn((byte) MySQLOKPacket.HEADER);
+        when(byteBuf.getByte(0)).thenReturn((byte) MySQLOKPacket.HEADER);
         return byteBuf;
     }
     
@@ -77,8 +77,8 @@ public final class MySQLCommandPacketDecoderTest {
     }
     
     private ByteBuf mockErrPacket() {
-        when(byteBuf.getByte(1)).thenReturn((byte) MySQLErrPacket.HEADER);
-        when(byteBuf.readUnsignedByte()).thenReturn((short) 0, (short) 
MySQLErrPacket.HEADER);
+        when(byteBuf.getByte(0)).thenReturn((byte) MySQLErrPacket.HEADER);
+        when(byteBuf.readUnsignedByte()).thenReturn((short) 
MySQLErrPacket.HEADER);
         return byteBuf;
     }
     
@@ -95,13 +95,13 @@ public final class MySQLCommandPacketDecoderTest {
     }
     
     private ByteBuf mockEmptyResultSetPacket() {
-        when(byteBuf.getByte(1)).thenReturn((byte) 3);
+        when(byteBuf.getByte(0)).thenReturn((byte) 3);
         return byteBuf;
     }
     
     private ByteBuf mockFieldDefinition41Packet() {
-        when(byteBuf.getByte(1)).thenReturn((byte) 3);
-        when(byteBuf.readUnsignedByte()).thenReturn((short) 0, (short) 3, 
(short) 0x0c);
+        when(byteBuf.getByte(0)).thenReturn((byte) 3);
+        when(byteBuf.readUnsignedByte()).thenReturn((short) 3, (short) 0x0c);
         when(byteBuf.readBytes(new byte[3])).then(invocationOnMock -> {
             byte[] input = invocationOnMock.getArgument(0);
             System.arraycopy("def".getBytes(), 0, input, 0, input.length);
@@ -111,8 +111,8 @@ public final class MySQLCommandPacketDecoderTest {
     }
     
     private ByteBuf mockEofPacket() {
-        when(byteBuf.getByte(1)).thenReturn((byte) MySQLEofPacket.HEADER);
-        when(byteBuf.readUnsignedByte()).thenReturn((short) 0, (short) 
MySQLEofPacket.HEADER);
+        when(byteBuf.getByte(0)).thenReturn((byte) MySQLEofPacket.HEADER);
+        when(byteBuf.readUnsignedByte()).thenReturn((short) 
MySQLEofPacket.HEADER);
         return byteBuf;
     }
     
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java
 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java
index 7e436bae8a8..661cc933f12 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiateHandlerTest.java
@@ -86,7 +86,7 @@ public final class MySQLNegotiateHandlerTest {
     
     @Test
     public void assertChannelReadOkPacket() throws 
ReflectiveOperationException {
-        MySQLOKPacket okPacket = new MySQLOKPacket(0, 0);
+        MySQLOKPacket okPacket = new MySQLOKPacket(0);
         ServerInfo serverInfo = new ServerInfo();
         
Plugins.getMemberAccessor().set(MySQLNegotiateHandler.class.getDeclaredField("serverInfo"),
 mysqlNegotiateHandler, serverInfo);
         mysqlNegotiateHandler.channelRead(channelHandlerContext, okPacket);
@@ -96,7 +96,7 @@ public final class MySQLNegotiateHandlerTest {
     
     @Test(expected = RuntimeException.class)
     public void assertChannelReadErrorPacket() {
-        MySQLErrPacket errorPacket = new MySQLErrPacket(0, 
MySQLVendorError.ER_NO_DB_ERROR);
+        MySQLErrPacket errorPacket = new 
MySQLErrPacket(MySQLVendorError.ER_NO_DB_ERROR);
         mysqlNegotiateHandler.channelRead(channelHandlerContext, errorPacket);
     }
 }
diff --git 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java
 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java
index 606f1ca70b7..086b037ae43 100644
--- 
a/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java
+++ 
b/kernel/data-pipeline/dialect/mysql/src/test/java/org/apache/shardingsphere/data/pipeline/mysql/ingest/client/netty/MySQLNegotiatePackageDecoderTest.java
@@ -71,7 +71,7 @@ public final class MySQLNegotiatePackageDecoderTest {
     }
     
     private ByteBuf mockHandshakePacket() {
-        String handshakePacket = 
"000a352e372e32312d6c6f6700090000004a592a1f725a0d0900fff7210200ff8115000000000000000000001a437b30323a4d2b514b5870006d"
+        String handshakePacket = 
"0a352e372e32312d6c6f6700090000004a592a1f725a0d0900fff7210200ff8115000000000000000000001a437b30323a4d2b514b5870006d"
                 + "7973716c5f6e61746976655f70617373776f72640000000002000000";
         byte[] handshakePacketBytes = 
ByteBufUtil.decodeHexDump(handshakePacket);
         ByteBuf result = Unpooled.buffer(handshakePacketBytes.length);
@@ -103,8 +103,8 @@ public final class MySQLNegotiatePackageDecoderTest {
     }
     
     private ByteBuf authSwitchRequestPacket() {
-        when(byteBuf.readUnsignedByte()).thenReturn((short) 0, (short) 
MySQLAuthSwitchRequestPacket.HEADER);
-        when(byteBuf.getByte(1)).thenReturn((byte) 
MySQLAuthSwitchRequestPacket.HEADER);
+        when(byteBuf.readUnsignedByte()).thenReturn((short) 
MySQLAuthSwitchRequestPacket.HEADER);
+        when(byteBuf.getByte(0)).thenReturn((byte) 
MySQLAuthSwitchRequestPacket.HEADER);
         when(byteBuf.bytesBefore((byte) 0)).thenReturn(20);
         return byteBuf;
     }
@@ -119,8 +119,8 @@ public final class MySQLNegotiatePackageDecoderTest {
     }
     
     private ByteBuf authMoreDataPacket() {
-        when(byteBuf.readUnsignedByte()).thenReturn((short) 0, (short) 
MySQLAuthMoreDataPacket.HEADER);
-        when(byteBuf.getByte(1)).thenReturn((byte) 
MySQLAuthMoreDataPacket.HEADER);
+        when(byteBuf.readUnsignedByte()).thenReturn((short) 
MySQLAuthMoreDataPacket.HEADER);
+        when(byteBuf.getByte(0)).thenReturn((byte) 
MySQLAuthMoreDataPacket.HEADER);
         return byteBuf;
     }
     
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngine.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngine.java
index c28d5ce332c..4d5b4a4c241 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngine.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngine.java
@@ -45,6 +45,7 @@ import 
org.apache.shardingsphere.proxy.frontend.mysql.authentication.authenticat
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Authentication engine for MySQL.
@@ -57,14 +58,13 @@ public final class MySQLAuthenticationEngine implements 
AuthenticationEngine {
     
     private MySQLConnectionPhase connectionPhase = 
MySQLConnectionPhase.INITIAL_HANDSHAKE;
     
-    private int sequenceId;
-    
     private byte[] authResponse;
     
     private AuthenticationResult currentAuthResult;
     
     @Override
     public int handshake(final ChannelHandlerContext context) {
+        context.channel().attr(MySQLConstants.MYSQL_SEQUENCE_ID).set(new 
AtomicInteger());
         int result = ConnectionIdGenerator.getInstance().nextId();
         connectionPhase = MySQLConnectionPhase.AUTH_PHASE_FAST_PATH;
         context.writeAndFlush(new MySQLHandshakePacket(result, 
authenticationHandler.getAuthPluginData()));
@@ -88,26 +88,25 @@ public final class MySQLAuthenticationEngine implements 
AuthenticationEngine {
             context.close();
             return AuthenticationResultBuilder.continued();
         }
-        context.writeAndFlush(new MySQLOKPacket(++sequenceId, 
DEFAULT_STATUS_FLAG));
+        context.writeAndFlush(new MySQLOKPacket(DEFAULT_STATUS_FLAG));
         return 
AuthenticationResultBuilder.finished(currentAuthResult.getUsername(), 
getHostAddress(context), currentAuthResult.getDatabase());
     }
     
     private AuthenticationResult authPhaseFastPath(final ChannelHandlerContext 
context, final PacketPayload payload) {
         MySQLHandshakeResponse41Packet packet = new 
MySQLHandshakeResponse41Packet((MySQLPacketPayload) payload);
         authResponse = packet.getAuthResponse();
-        sequenceId = packet.getSequenceId();
         MySQLCharacterSet characterSet = 
MySQLCharacterSet.findById(packet.getCharacterSet());
         
context.channel().attr(CommonConstants.CHARSET_ATTRIBUTE_KEY).set(characterSet.getCharset());
         
context.channel().attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY).set(characterSet);
         if (!Strings.isNullOrEmpty(packet.getDatabase()) && 
!ProxyContext.getInstance().databaseExists(packet.getDatabase())) {
-            context.writeAndFlush(new MySQLErrPacket(++sequenceId, 
MySQLVendorError.ER_BAD_DB_ERROR, packet.getDatabase()));
+            context.writeAndFlush(new 
MySQLErrPacket(MySQLVendorError.ER_BAD_DB_ERROR, packet.getDatabase()));
             context.close();
             return AuthenticationResultBuilder.continued();
         }
         MySQLAuthenticator authenticator = 
authenticationHandler.getAuthenticator(packet.getUsername(), 
getHostAddress(context));
         if (isClientPluginAuth(packet) && 
!authenticator.getAuthenticationMethodName().equals(packet.getAuthPluginName()))
 {
             connectionPhase = 
MySQLConnectionPhase.AUTHENTICATION_METHOD_MISMATCH;
-            context.writeAndFlush(new 
MySQLAuthSwitchRequestPacket(++sequenceId, 
authenticator.getAuthenticationMethodName(), 
authenticationHandler.getAuthPluginData()));
+            context.writeAndFlush(new 
MySQLAuthSwitchRequestPacket(authenticator.getAuthenticationMethodName(), 
authenticationHandler.getAuthPluginData()));
             return AuthenticationResultBuilder.continued(packet.getUsername(), 
getHostAddress(context), packet.getDatabase());
         }
         return AuthenticationResultBuilder.finished(packet.getUsername(), 
getHostAddress(context), packet.getDatabase());
@@ -119,14 +118,13 @@ public final class MySQLAuthenticationEngine implements 
AuthenticationEngine {
     
     private void authenticationMethodMismatch(final MySQLPacketPayload 
payload) {
         MySQLAuthSwitchResponsePacket packet = new 
MySQLAuthSwitchResponsePacket(payload);
-        sequenceId = packet.getSequenceId();
         authResponse = packet.getAuthPluginResponse();
     }
     
     private MySQLErrPacket createErrorPacket(final MySQLVendorError 
vendorError, final ChannelHandlerContext context) {
         return MySQLVendorError.ER_DBACCESS_DENIED_ERROR == vendorError
-                ? new MySQLErrPacket(++sequenceId, 
MySQLVendorError.ER_DBACCESS_DENIED_ERROR, currentAuthResult.getUsername(), 
getHostAddress(context), currentAuthResult.getDatabase())
-                : new MySQLErrPacket(++sequenceId, 
MySQLVendorError.ER_ACCESS_DENIED_ERROR, currentAuthResult.getUsername(), 
getHostAddress(context), getErrorMessage());
+                ? new 
MySQLErrPacket(MySQLVendorError.ER_DBACCESS_DENIED_ERROR, 
currentAuthResult.getUsername(), getHostAddress(context), 
currentAuthResult.getDatabase())
+                : new MySQLErrPacket(MySQLVendorError.ER_ACCESS_DENIED_ERROR, 
currentAuthResult.getUsername(), getHostAddress(context), getErrorMessage());
     }
     
     private String getErrorMessage() {
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
index 307d9a81c30..c00f514e7b9 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
@@ -82,7 +82,6 @@ public final class MySQLCommandExecuteEngine implements 
CommandExecuteEngine {
         }
         int count = 0;
         int flushThreshold = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getProps().<Integer>getValue(ConfigurationPropertyKey.PROXY_FRONTEND_FLUSH_THRESHOLD);
-        int currentSequenceId = 0;
         while (queryCommandExecutor.next()) {
             count++;
             while (!context.channel().isWritable() && 
context.channel().isActive()) {
@@ -95,8 +94,7 @@ public final class MySQLCommandExecuteEngine implements 
CommandExecuteEngine {
                 context.flush();
                 count = 0;
             }
-            currentSequenceId++;
         }
-        context.write(new MySQLEofPacket(++currentSequenceId + 
headerPackagesCount, 
ServerStatusFlagCalculator.calculateFor(backendConnection.getConnectionSession())));
+        context.write(new 
MySQLEofPacket(ServerStatusFlagCalculator.calculateFor(backendConnection.getConnectionSession())));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
index d068432ec2c..c62c770936d 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComResetConnectionExecutor.java
@@ -44,6 +44,6 @@ public final class MySQLComResetConnectionExecutor implements 
CommandExecutor {
         connectionSession.setDefaultIsolationLevel(null);
         connectionSession.setIsolationLevel(null);
         connectionSession.getServerPreparedStatementRegistry().clear();
-        return Collections.singletonList(new MySQLOKPacket(1, 
ServerStatusFlagCalculator.calculateFor(connectionSession)));
+        return Collections.singletonList(new 
MySQLOKPacket(ServerStatusFlagCalculator.calculateFor(connectionSession)));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComSetOptionExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComSetOptionExecutor.java
index 5476eb433a1..d5bef2707c8 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComSetOptionExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/MySQLComSetOptionExecutor.java
@@ -42,6 +42,6 @@ public final class MySQLComSetOptionExecutor implements 
CommandExecutor {
     @Override
     public Collection<DatabasePacket<?>> execute() {
         
connectionSession.getAttributeMap().attr(MySQLConstants.MYSQL_OPTION_MULTI_STATEMENTS).set(packet.getValue());
-        return Collections.singletonList(new MySQLOKPacket(1, 
ServerStatusFlagCalculator.calculateFor(connectionSession)));
+        return Collections.singletonList(new 
MySQLOKPacket(ServerStatusFlagCalculator.calculateFor(connectionSession)));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/initdb/MySQLComInitDbExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/initdb/MySQLComInitDbExecutor.java
index 65450a1014f..91415292e13 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/initdb/MySQLComInitDbExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/initdb/MySQLComInitDbExecutor.java
@@ -49,7 +49,7 @@ public final class MySQLComInitDbExecutor implements 
CommandExecutor {
         String databaseName = SQLUtil.getExactlyValue(packet.getSchema());
         if (ProxyContext.getInstance().databaseExists(databaseName) && 
SQLCheckEngine.check(databaseName, getRules(databaseName), 
connectionSession.getGrantee())) {
             connectionSession.setCurrentDatabase(packet.getSchema());
-            return Collections.singletonList(new MySQLOKPacket(1, 
ServerStatusFlagCalculator.calculateFor(connectionSession)));
+            return Collections.singletonList(new 
MySQLOKPacket(ServerStatusFlagCalculator.calculateFor(connectionSession)));
         }
         throw new UnknownDatabaseException(packet.getSchema());
     }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/ping/MySQLComPingExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/ping/MySQLComPingExecutor.java
index 94733519681..eac7912a147 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/ping/MySQLComPingExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/ping/MySQLComPingExecutor.java
@@ -37,6 +37,6 @@ public final class MySQLComPingExecutor implements 
CommandExecutor {
     
     @Override
     public Collection<DatabasePacket<?>> execute() {
-        return Collections.singletonList(new MySQLOKPacket(1, 
ServerStatusFlagCalculator.calculateFor(connectionSession)));
+        return Collections.singletonList(new 
MySQLOKPacket(ServerStatusFlagCalculator.calculateFor(connectionSession)));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/quit/MySQLComQuitExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/quit/MySQLComQuitExecutor.java
index 838c84fb0ec..004605d83a4 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/quit/MySQLComQuitExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/admin/quit/MySQLComQuitExecutor.java
@@ -31,6 +31,6 @@ public final class MySQLComQuitExecutor implements 
CommandExecutor {
     
     @Override
     public Collection<DatabasePacket<?>> execute() {
-        return Collections.singletonList(new MySQLOKPacket(1, 0));
+        return Collections.singletonList(new MySQLOKPacket(0));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
index bd8737001da..3bf5b68b62d 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutor.java
@@ -66,8 +66,6 @@ public final class MySQLComStmtExecuteExecutor implements 
QueryCommandExecutor {
     @Getter
     private ResponseType responseType;
     
-    private int currentSequenceId;
-    
     @Override
     public Collection<DatabasePacket<?>> execute() throws SQLException {
         MySQLServerPreparedStatement preparedStatement = 
updateAndGetPreparedStatement();
@@ -96,9 +94,7 @@ public final class MySQLComStmtExecuteExecutor implements 
QueryCommandExecutor {
     private Collection<DatabasePacket<?>> processQuery(final 
QueryResponseHeader queryResponseHeader) {
         responseType = ResponseType.QUERY;
         int characterSet = 
connectionSession.getAttributeMap().attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY).get().getId();
-        Collection<DatabasePacket<?>> result = 
ResponsePacketBuilder.buildQueryResponsePackets(queryResponseHeader, 
characterSet, ServerStatusFlagCalculator.calculateFor(connectionSession));
-        currentSequenceId = result.size();
-        return result;
+        return 
ResponsePacketBuilder.buildQueryResponsePackets(queryResponseHeader, 
characterSet, ServerStatusFlagCalculator.calculateFor(connectionSession));
     }
     
     private Collection<DatabasePacket<?>> processUpdate(final 
UpdateResponseHeader updateResponseHeader) {
@@ -114,7 +110,7 @@ public final class MySQLComStmtExecuteExecutor implements 
QueryCommandExecutor {
     @Override
     public MySQLPacket getQueryRowPacket() throws SQLException {
         QueryResponseRow queryResponseRow = proxyBackendHandler.getRowData();
-        return new MySQLBinaryResultSetRowPacket(++currentSequenceId, 
createBinaryRow(queryResponseRow));
+        return new 
MySQLBinaryResultSetRowPacket(createBinaryRow(queryResponseRow));
     }
     
     private BinaryRow createBinaryRow(final QueryResponseRow queryResponseRow) 
{
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
index a2f6362ceff..cf0bc9013e4 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutor.java
@@ -55,8 +55,6 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
     
     private final ConnectionSession connectionSession;
     
-    private int currentSequenceId;
-    
     @Override
     public Collection<DatabasePacket<?>> execute() {
         failedIfContainsMultiStatements();
@@ -94,7 +92,7 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
     
     private Collection<DatabasePacket<?>> createPackets(final int statementId, 
final int projectionCount, final int parameterCount) {
         Collection<DatabasePacket<?>> result = new LinkedList<>();
-        result.add(new MySQLComStmtPrepareOKPacket(++currentSequenceId, 
statementId, projectionCount, parameterCount, 0));
+        result.add(new MySQLComStmtPrepareOKPacket(statementId, 
projectionCount, parameterCount, 0));
         int characterSet = 
connectionSession.getAttributeMap().attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY).get().getId();
         int statusFlags = 
ServerStatusFlagCalculator.calculateFor(connectionSession);
         if (parameterCount > 0) {
@@ -109,18 +107,18 @@ public final class MySQLComStmtPrepareExecutor implements 
CommandExecutor {
     private Collection<DatabasePacket<?>> 
createParameterColumnDefinition41Packets(final int parameterCount, final int 
characterSet, final int statusFlags) {
         Collection<DatabasePacket<?>> result = new LinkedList<>();
         for (int i = 0; i < parameterCount; i++) {
-            result.add(new MySQLColumnDefinition41Packet(++currentSequenceId, 
characterSet, "", "", "", "?", "", 0, 
MySQLBinaryColumnType.MYSQL_TYPE_VAR_STRING, 0, false));
+            result.add(new MySQLColumnDefinition41Packet(characterSet, "", "", 
"", "?", "", 0, MySQLBinaryColumnType.MYSQL_TYPE_VAR_STRING, 0, false));
         }
-        result.add(new MySQLEofPacket(++currentSequenceId, statusFlags));
+        result.add(new MySQLEofPacket(statusFlags));
         return result;
     }
     
     private Collection<DatabasePacket<?>> 
createProjectionColumnDefinition41Packets(final int projectionCount, final int 
characterSet, final int statusFlags) {
         Collection<DatabasePacket<?>> result = new LinkedList<>();
         for (int i = 0; i < projectionCount; i++) {
-            result.add(new MySQLColumnDefinition41Packet(++currentSequenceId, 
characterSet, "", "", "", "", "", 0, 
MySQLBinaryColumnType.MYSQL_TYPE_VAR_STRING, 0, false));
+            result.add(new MySQLColumnDefinition41Packet(characterSet, "", "", 
"", "", "", 0, MySQLBinaryColumnType.MYSQL_TYPE_VAR_STRING, 0, false));
         }
-        result.add(new MySQLEofPacket(++currentSequenceId, statusFlags));
+        result.add(new MySQLEofPacket(statusFlags));
         return result;
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/reset/MySQLComStmtResetExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/reset/MySQLComStmtResetExecutor.java
index d4d0fe9bd58..6635b0c700e 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/reset/MySQLComStmtResetExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/reset/MySQLComStmtResetExecutor.java
@@ -42,6 +42,6 @@ public final class MySQLComStmtResetExecutor implements 
CommandExecutor {
     @Override
     public Collection<DatabasePacket<?>> execute() {
         
connectionSession.getServerPreparedStatementRegistry().<MySQLServerPreparedStatement>getPreparedStatement(packet.getStatementId()).getLongData().clear();
-        return Collections.singleton(new MySQLOKPacket(1, 
ServerStatusFlagCalculator.calculateFor(connectionSession)));
+        return Collections.singleton(new 
MySQLOKPacket(ServerStatusFlagCalculator.calculateFor(connectionSession)));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilder.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilder.java
index 6acf6ffa500..e5134010a8a 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilder.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilder.java
@@ -55,14 +55,13 @@ public final class ResponsePacketBuilder {
      */
     public static Collection<DatabasePacket<?>> 
buildQueryResponsePackets(final QueryResponseHeader queryResponseHeader, final 
int characterSet, final int statusFlags) {
         Collection<DatabasePacket<?>> result = new LinkedList<>();
-        int sequenceId = 0;
         List<QueryHeader> queryHeaders = queryResponseHeader.getQueryHeaders();
-        result.add(new MySQLFieldCountPacket(++sequenceId, 
queryHeaders.size()));
+        result.add(new MySQLFieldCountPacket(queryHeaders.size()));
         for (QueryHeader each : queryHeaders) {
-            result.add(new MySQLColumnDefinition41Packet(++sequenceId, 
characterSet, getColumnFieldDetailFlag(each), each.getSchema(), 
each.getTable(), each.getTable(),
+            result.add(new MySQLColumnDefinition41Packet(characterSet, 
getColumnFieldDetailFlag(each), each.getSchema(), each.getTable(), 
each.getTable(),
                     each.getColumnLabel(), each.getColumnName(), 
each.getColumnLength(), 
MySQLBinaryColumnType.valueOfJDBCType(each.getColumnType()), 
each.getDecimals(), false));
         }
-        result.add(new MySQLEofPacket(++sequenceId, statusFlags));
+        result.add(new MySQLEofPacket(statusFlags));
         return result;
     }
     
@@ -94,6 +93,6 @@ public final class ResponsePacketBuilder {
      * @return update response packets
      */
     public static Collection<DatabasePacket<?>> 
buildUpdateResponsePackets(final UpdateResponseHeader updateResponseHeader, 
final int serverStatusFlag) {
-        return Collections.singletonList(new MySQLOKPacket(1, 
updateResponseHeader.getUpdateCount(), updateResponseHeader.getLastInsertId(), 
serverStatusFlag));
+        return Collections.singletonList(new 
MySQLOKPacket(updateResponseHeader.getUpdateCount(), 
updateResponseHeader.getLastInsertId(), serverStatusFlag));
     }
 }
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
index 012522aa928..1be3fde6d74 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/fieldlist/MySQLComFieldListPacketExecutor.java
@@ -58,8 +58,6 @@ public final class MySQLComFieldListPacketExecutor implements 
CommandExecutor {
     
     private DatabaseCommunicationEngine databaseCommunicationEngine;
     
-    private int currentSequenceId;
-    
     @Override
     public Collection<DatabasePacket<?>> execute() throws SQLException {
         String databaseName = connectionSession.getDefaultDatabaseName();
@@ -81,9 +79,9 @@ public final class MySQLComFieldListPacketExecutor implements 
CommandExecutor {
         while (databaseCommunicationEngine.next()) {
             String columnName = 
databaseCommunicationEngine.getRowData().getCells().iterator().next().getData().toString();
             result.add(new MySQLColumnDefinition41Packet(
-                    ++currentSequenceId, characterSet, databaseName, 
packet.getTable(), packet.getTable(), columnName, columnName, 100, 
MySQLBinaryColumnType.MYSQL_TYPE_VARCHAR, 0, true));
+                    characterSet, databaseName, packet.getTable(), 
packet.getTable(), columnName, columnName, 100, 
MySQLBinaryColumnType.MYSQL_TYPE_VARCHAR, 0, true));
         }
-        result.add(new MySQLEofPacket(++currentSequenceId, 
ServerStatusFlagCalculator.calculateFor(connectionSession)));
+        result.add(new 
MySQLEofPacket(ServerStatusFlagCalculator.calculateFor(connectionSession)));
         return result;
     }
     
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
index b07917a09d5..a157d33dd24 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/text/query/MySQLComQueryPacketExecutor.java
@@ -62,8 +62,6 @@ public final class MySQLComQueryPacketExecutor implements 
QueryCommandExecutor {
     @Getter
     private volatile ResponseType responseType;
     
-    private int currentSequenceId;
-    
     public MySQLComQueryPacketExecutor(final MySQLComQueryPacket packet, final 
ConnectionSession connectionSession) throws SQLException {
         this.connectionSession = connectionSession;
         DatabaseType databaseType = DatabaseTypeFactory.getInstance("MySQL");
@@ -101,9 +99,7 @@ public final class MySQLComQueryPacketExecutor implements 
QueryCommandExecutor {
     
     private Collection<DatabasePacket<?>> processQuery(final 
QueryResponseHeader queryResponseHeader) {
         responseType = ResponseType.QUERY;
-        Collection<DatabasePacket<?>> result = 
ResponsePacketBuilder.buildQueryResponsePackets(queryResponseHeader, 
characterSet, ServerStatusFlagCalculator.calculateFor(connectionSession));
-        currentSequenceId = result.size();
-        return result;
+        return 
ResponsePacketBuilder.buildQueryResponsePackets(queryResponseHeader, 
characterSet, ServerStatusFlagCalculator.calculateFor(connectionSession));
     }
     
     private Collection<DatabasePacket<?>> processUpdate(final 
UpdateResponseHeader updateResponseHeader) {
@@ -117,7 +113,7 @@ public final class MySQLComQueryPacketExecutor implements 
QueryCommandExecutor {
     
     @Override
     public MySQLPacket getQueryRowPacket() throws SQLException {
-        return new MySQLTextResultSetRowPacket(++currentSequenceId, 
proxyBackendHandler.getRowData().getData());
+        return new 
MySQLTextResultSetRowPacket(proxyBackendHandler.getRowData().getData());
     }
     
     @Override
diff --git 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
index c70af18c859..338e82cba04 100644
--- 
a/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
+++ 
b/proxy/frontend/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactory.java
@@ -40,7 +40,7 @@ public final class MySQLErrPacketFactory {
      */
     public static MySQLErrPacket newInstance(final Exception cause) {
         SQLException sqlException = 
SQLExceptionTransformEngine.toSQLException(cause, "MySQL");
-        return null == sqlException.getSQLState() ? new MySQLErrPacket(1, 
MySQLVendorError.ER_INTERNAL_ERROR, getErrorMessage(sqlException)) : 
createErrPacket(sqlException);
+        return null == sqlException.getSQLState() ? new 
MySQLErrPacket(MySQLVendorError.ER_INTERNAL_ERROR, 
getErrorMessage(sqlException)) : createErrPacket(sqlException);
     }
     
     private static String getErrorMessage(final SQLException cause) {
@@ -48,6 +48,6 @@ public final class MySQLErrPacketFactory {
     }
     
     private static MySQLErrPacket createErrPacket(final SQLException cause) {
-        return new MySQLErrPacket(1, cause.getErrorCode(), 
cause.getSQLState(), cause.getMessage());
+        return new MySQLErrPacket(cause.getErrorCode(), cause.getSQLState(), 
cause.getMessage());
     }
 }
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index a1ee717712a..a6ba5353788 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -98,6 +98,7 @@ public final class MySQLFrontendEngineTest extends 
ProxyContextRestorer {
         when(context.channel()).thenReturn(channel);
         
when(channel.attr(CommonConstants.CHARSET_ATTRIBUTE_KEY)).thenReturn(mock(Attribute.class));
         
when(channel.attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY)).thenReturn(mock(Attribute.class));
+        
when(channel.attr(MySQLConstants.MYSQL_SEQUENCE_ID)).thenReturn(mock(Attribute.class));
     }
     
     @SneakyThrows(ReflectiveOperationException.class)
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
index 94c7736b826..b851f5bb038 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
@@ -200,6 +200,7 @@ public final class MySQLAuthenticationEngineTest extends 
ProxyContextRestorer {
         doReturn(getRemoteAddress()).when(result).remoteAddress();
         
when(result.attr(CommonConstants.CHARSET_ATTRIBUTE_KEY)).thenReturn(mock(Attribute.class));
         
when(result.attr(MySQLConstants.MYSQL_CHARACTER_SET_ATTRIBUTE_KEY)).thenReturn(mock(Attribute.class));
+        
when(result.attr(MySQLConstants.MYSQL_SEQUENCE_ID)).thenReturn(mock(Attribute.class));
         return result;
     }
     
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
index f1e8f88aaf3..c4a56c274ca 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/execute/MySQLComStmtExecuteExecutorTest.java
@@ -182,7 +182,6 @@ public final class MySQLComStmtExecuteExecutorTest extends 
ProxyContextRestorer
         assertTrue(mysqlComStmtExecuteExecutor.next());
         MySQLPacket actualQueryRowPacket = 
mysqlComStmtExecuteExecutor.getQueryRowPacket();
         assertThat(actualQueryRowPacket, 
instanceOf(MySQLBinaryResultSetRowPacket.class));
-        assertThat(actualQueryRowPacket.getSequenceId(), is(4));
         mysqlComStmtExecuteExecutor.close();
         verify(proxyBackendHandler).close();
     }
diff --git 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
index eed34f1ab44..0da1d988bc6 100644
--- 
a/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
+++ 
b/proxy/frontend/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/err/MySQLErrPacketFactoryTest.java
@@ -34,7 +34,6 @@ public final class MySQLErrPacketFactoryTest {
     @Test
     public void assertNewInstanceWithSQLExceptionForNullSQLState() {
         MySQLErrPacket actual = MySQLErrPacketFactory.newInstance(new 
SQLException(""));
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getErrorCode(), is(1815));
         assertThat(actual.getSqlState(), 
is(XOpenSQLState.GENERAL_ERROR.getValue()));
         assertThat(actual.getErrorMessage(), startsWith("Internal error"));
@@ -43,7 +42,6 @@ public final class MySQLErrPacketFactoryTest {
     @Test
     public void assertNewInstanceWithSQLException() {
         MySQLErrPacket actual = MySQLErrPacketFactory.newInstance(new 
SQLException("No reason", "XXX", 30000, new RuntimeException("")));
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getErrorCode(), is(30000));
         assertThat(actual.getSqlState(), is("XXX"));
         assertThat(actual.getErrorMessage(), is("No reason"));
@@ -52,7 +50,6 @@ public final class MySQLErrPacketFactoryTest {
     @Test
     public void assertNewInstanceWithShardingSphereSQLException() {
         MySQLErrPacket actual = MySQLErrPacketFactory.newInstance(new 
CircuitBreakException());
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getErrorCode(), is(13010));
         assertThat(actual.getSqlState(), 
is(XOpenSQLState.GENERAL_WARNING.getValue()));
         assertThat(actual.getErrorMessage(), is("Circuit break open, the 
request has been ignored."));
@@ -61,7 +58,6 @@ public final class MySQLErrPacketFactoryTest {
     @Test
     public void assertNewInstanceWithSQLDialectException() {
         MySQLErrPacket actual = MySQLErrPacketFactory.newInstance(new 
UnknownDatabaseException("foo_db"));
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getErrorCode(), is(1049));
         assertThat(actual.getSqlState(), 
is(XOpenSQLState.SYNTAX_ERROR.getValue()));
         assertThat(actual.getErrorMessage(), is("Unknown database 'foo_db'"));
@@ -70,7 +66,6 @@ public final class MySQLErrPacketFactoryTest {
     @Test
     public void assertNewInstanceWithUnknownException() {
         MySQLErrPacket actual = MySQLErrPacketFactory.newInstance(new 
RuntimeException("No reason"));
-        assertThat(actual.getSequenceId(), is(1));
         assertThat(actual.getErrorCode(), is(30000));
         assertThat(actual.getSqlState(), 
is(XOpenSQLState.GENERAL_ERROR.getValue()));
         assertThat(actual.getErrorMessage(), is("Unknown exception: No 
reason"));

Reply via email to