You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/05/24 06:04:19 UTC

[shardingsphere] branch master updated: Remove generic type of DatabasePacket (#25867)

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

zhaojinchao 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 1ce54010601 Remove generic type of DatabasePacket (#25867)
1ce54010601 is described below

commit 1ce540106011a3aaa4e24c2794e11945b6d79394
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed May 24 14:04:04 2023 +0800

    Remove generic type of DatabasePacket (#25867)
    
    * Refactor MySQLPacket and PostgreSQLPacket
    
    * Remove generic type of DatabasePacket
    
    * Remove generic type of DatabasePacket
---
 .../db/protocol/codec/DatabasePacketCodecEngine.java           |  2 +-
 .../apache/shardingsphere/db/protocol/codec/PacketCodec.java   |  4 ++--
 .../shardingsphere/db/protocol/packet/DatabasePacket.java      |  6 ++----
 .../shardingsphere/db/protocol/mysql/packet/MySQLPacket.java   | 10 +++++++++-
 .../mysql/packet/binlog/AbstractMySQLBinlogEventPacket.java    |  4 ++--
 .../protocol/mysql/packet/binlog/MySQLBinlogEventHeader.java   |  4 ++--
 .../db/protocol/mysql/packet/command/MySQLCommandPacket.java   |  4 ++--
 .../packet/command/query/MySQLColumnDefinition41Packet.java    |  4 ++--
 .../mysql/packet/command/query/MySQLFieldCountPacket.java      |  4 ++--
 .../query/binary/execute/MySQLBinaryResultSetRowPacket.java    |  4 ++--
 .../query/binary/prepare/MySQLComStmtPrepareOKPacket.java      |  4 ++--
 .../packet/command/query/text/MySQLTextResultSetRowPacket.java |  4 ++--
 .../db/protocol/mysql/packet/generic/MySQLEofPacket.java       |  4 ++--
 .../db/protocol/mysql/packet/generic/MySQLErrPacket.java       |  4 ++--
 .../db/protocol/mysql/packet/generic/MySQLOKPacket.java        |  4 ++--
 .../mysql/packet/handshake/MySQLAuthMoreDataPacket.java        |  4 ++--
 .../mysql/packet/handshake/MySQLAuthSwitchRequestPacket.java   |  4 ++--
 .../mysql/packet/handshake/MySQLAuthSwitchResponsePacket.java  |  4 ++--
 .../protocol/mysql/packet/handshake/MySQLHandshakePacket.java  |  4 ++--
 .../mysql/packet/handshake/MySQLHandshakeResponse41Packet.java |  4 ++--
 .../binlog/management/MySQLBinlogRotateEventPacketTest.java    |  1 -
 .../OpenGaussAuthenticationSCRAMSha256Packet.java              |  4 ++--
 .../packet/command/generic/OpenGaussErrorResponsePacket.java   |  4 ++--
 .../query/extended/bind/OpenGaussComBatchBindPacket.java       |  2 +-
 .../db/protocol/postgresql/packet/PostgreSQLPacket.java        | 10 +++++++++-
 .../postgresql/packet/command/PostgreSQLCommandPacket.java     |  2 +-
 .../command/admin/PostgreSQLUnsupportedCommandPacket.java      |  2 +-
 .../packet/command/query/PostgreSQLDataRowPacket.java          |  4 ++--
 .../command/query/PostgreSQLEmptyQueryResponsePacket.java      |  4 ++--
 .../packet/command/query/PostgreSQLNoDataPacket.java           |  4 ++--
 .../command/query/PostgreSQLParameterDescriptionPacket.java    |  4 ++--
 .../packet/command/query/PostgreSQLRowDescriptionPacket.java   |  4 ++--
 .../query/extended/PostgreSQLAggregatedCommandPacket.java      |  2 +-
 .../query/extended/PostgreSQLAggregatedResponsesPacket.java    | 10 +++++-----
 .../query/extended/bind/PostgreSQLBindCompletePacket.java      |  4 ++--
 .../command/query/extended/bind/PostgreSQLComBindPacket.java   |  4 ++--
 .../query/extended/close/PostgreSQLCloseCompletePacket.java    |  4 ++--
 .../command/query/extended/close/PostgreSQLComClosePacket.java |  2 +-
 .../query/extended/describe/PostgreSQLComDescribePacket.java   |  2 +-
 .../query/extended/execute/PostgreSQLComExecutePacket.java     |  2 +-
 .../extended/execute/PostgreSQLPortalSuspendedPacket.java      |  4 ++--
 .../command/query/extended/flush/PostgreSQLComFlushPacket.java |  2 +-
 .../command/query/extended/parse/PostgreSQLComParsePacket.java |  2 +-
 .../query/extended/parse/PostgreSQLParseCompletePacket.java    |  4 ++--
 .../command/query/extended/sync/PostgreSQLComSyncPacket.java   |  2 +-
 .../packet/command/query/simple/PostgreSQLComQueryPacket.java  |  2 +-
 .../packet/generic/PostgreSQLComTerminationPacket.java         |  2 +-
 .../packet/generic/PostgreSQLCommandCompletePacket.java        |  4 ++--
 .../packet/generic/PostgreSQLErrorResponsePacket.java          |  4 ++--
 .../packet/generic/PostgreSQLReadyForQueryPacket.java          |  4 ++--
 .../packet/handshake/PostgreSQLAuthenticationOKPacket.java     |  4 ++--
 .../packet/handshake/PostgreSQLComStartupPacket.java           |  4 ++--
 .../packet/handshake/PostgreSQLParameterStatusPacket.java      |  4 ++--
 .../packet/handshake/PostgreSQLPasswordMessagePacket.java      |  4 ++--
 .../packet/handshake/PostgreSQLSSLUnwillingPacket.java         |  4 ++--
 .../packet/handshake/PostgreSQLSSLWillingPacket.java           |  4 ++--
 .../PostgreSQLMD5PasswordAuthenticationPacket.java             |  4 ++--
 .../authentication/PostgreSQLPasswordAuthenticationPacket.java |  4 ++--
 .../packet/identifier/PostgreSQLIdentifierPacket.java          |  4 ++--
 .../proxy/frontend/command/CommandExecutorTask.java            |  2 +-
 .../fixture/DatabaseProtocolFrontendEngineFixture.java         |  4 ++--
 .../proxy/frontend/command/CommandExecuteEngine.java           |  4 ++--
 .../proxy/frontend/command/executor/CommandExecutor.java       |  2 +-
 .../proxy/frontend/command/executor/QueryCommandExecutor.java  |  2 +-
 .../proxy/frontend/spi/DatabaseProtocolFrontendEngine.java     |  2 +-
 .../frontend/mysql/command/MySQLCommandExecuteEngine.java      |  2 +-
 .../query/binary/prepare/MySQLComStmtPrepareExecutorTest.java  | 10 +++++-----
 .../mysql/command/query/builder/ResponsePacketBuilderTest.java |  2 +-
 .../opengauss/command/OpenGaussCommandExecuteEngine.java       |  2 +-
 .../postgresql/command/PostgreSQLCommandExecuteEngine.java     |  4 ++--
 .../query/extended/PostgreSQLAggregatedCommandExecutor.java    |  2 +-
 ...stgreSQLAggregatedBatchedStatementsCommandExecutorTest.java |  3 +--
 .../extended/describe/PostgreSQLComDescribeExecutorTest.java   |  2 +-
 73 files changed, 141 insertions(+), 129 deletions(-)

diff --git a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/DatabasePacketCodecEngine.java b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/DatabasePacketCodecEngine.java
index 61ac2f7c95c..8852ecc7816 100644
--- a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/DatabasePacketCodecEngine.java
+++ b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/DatabasePacketCodecEngine.java
@@ -30,7 +30,7 @@ import java.util.List;
  * 
  * @param <T> type of database packet
  */
-public interface DatabasePacketCodecEngine<T extends DatabasePacket<?>> {
+public interface DatabasePacketCodecEngine<T extends DatabasePacket> {
     
     /**
      * Judge is valid header or not.
diff --git a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
index df31b27a178..95eb2f469d0 100644
--- a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
+++ b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/codec/PacketCodec.java
@@ -32,7 +32,7 @@ import java.util.List;
  */
 @RequiredArgsConstructor
 @Slf4j
-public final class PacketCodec extends ByteToMessageCodec<DatabasePacket<?>> {
+public final class PacketCodec extends ByteToMessageCodec<DatabasePacket> {
     
     @SuppressWarnings("rawtypes")
     private final DatabasePacketCodecEngine databasePacketCodecEngine;
@@ -52,7 +52,7 @@ public final class PacketCodec extends ByteToMessageCodec<DatabasePacket<?>> {
     
     @SuppressWarnings("unchecked")
     @Override
-    protected void encode(final ChannelHandlerContext context, final DatabasePacket<?> message, final ByteBuf out) {
+    protected void encode(final ChannelHandlerContext context, final DatabasePacket message, final ByteBuf out) {
         databasePacketCodecEngine.encode(context, message, out);
         if (log.isDebugEnabled()) {
             log.debug("Write to client {} :\n{}", context.channel().id().asShortText(), ByteBufUtil.prettyHexDump(out));
diff --git a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/packet/DatabasePacket.java b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/packet/DatabasePacket.java
index e81a86efba3..3048464297e 100644
--- a/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/packet/DatabasePacket.java
+++ b/db-protocol/core/src/main/java/org/apache/shardingsphere/db/protocol/packet/DatabasePacket.java
@@ -21,15 +21,13 @@ import org.apache.shardingsphere.db.protocol.payload.PacketPayload;
 
 /**
  * Database packet.
- *
- * @param <T> type of packet payload
  */
-public interface DatabasePacket<T extends PacketPayload> {
+public interface DatabasePacket {
     
     /**
      * Write packet to byte buffer.
      *
      * @param payload packet payload to be written
      */
-    void write(T payload);
+    void write(PacketPayload payload);
 }
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 23d59c217b9..3a00e3f4c1b 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
@@ -19,9 +19,17 @@ package org.apache.shardingsphere.db.protocol.mysql.packet;
 
 import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
+import org.apache.shardingsphere.db.protocol.payload.PacketPayload;
 
 /**
  * Database packet for MySQL.
  */
-public interface MySQLPacket extends DatabasePacket<MySQLPacketPayload> {
+public abstract class MySQLPacket implements DatabasePacket {
+    
+    @Override
+    public void write(final PacketPayload payload) {
+        write((MySQLPacketPayload) payload);
+    }
+    
+    protected abstract void write(MySQLPacketPayload payload);
 }
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 70e784d98ac..c3720a0553a 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
@@ -28,12 +28,12 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  */
 @RequiredArgsConstructor(access = AccessLevel.PROTECTED)
 @Getter
-public abstract class AbstractMySQLBinlogEventPacket implements MySQLPacket, MySQLBinlogEventPacket {
+public abstract class AbstractMySQLBinlogEventPacket extends MySQLPacket implements MySQLBinlogEventPacket {
     
     private final MySQLBinlogEventHeader binlogEventHeader;
     
     @Override
-    public final void write(final MySQLPacketPayload payload) {
+    protected final void write(final MySQLPacketPayload payload) {
         binlogEventHeader.write(payload);
         writeEvent(payload);
     }
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 77010f134c3..c74aaf9a411 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
@@ -31,7 +31,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 @RequiredArgsConstructor
 @Getter
 @ToString
-public final class MySQLBinlogEventHeader implements MySQLPacket {
+public final class MySQLBinlogEventHeader extends MySQLPacket {
     
     /**
      * MySQL binlog event header length is 19 in binlog version 3 and 4.
@@ -66,7 +66,7 @@ public final class MySQLBinlogEventHeader implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt4(timestamp);
         payload.writeInt1(eventType);
         payload.writeInt4(serverId);
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 f34fdf82e96..5e27dfe4f9b 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
@@ -26,12 +26,12 @@ import org.apache.shardingsphere.db.protocol.packet.CommandPacket;
  * Command packet for MySQL.
  */
 @RequiredArgsConstructor
-public abstract class MySQLCommandPacket implements MySQLPacket, CommandPacket {
+public abstract class MySQLCommandPacket extends MySQLPacket implements CommandPacket {
     
     private final MySQLCommandPacketType type;
     
     @Override
-    public final void write(final MySQLPacketPayload payload) {
+    protected final void write(final MySQLPacketPayload payload) {
         payload.writeInt1(type.getValue());
         doWrite(payload);
     }
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 c456e038c01..41d72e31d9e 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
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  * @see <a href="https://mariadb.com/kb/en/library/resultset/#column-definition-packet">Column definition packet</a>
  */
 @RequiredArgsConstructor
-public final class MySQLColumnDefinition41Packet implements MySQLPacket {
+public final class MySQLColumnDefinition41Packet extends MySQLPacket {
     
     private static final String CATALOG = "def";
     
@@ -87,7 +87,7 @@ public final class MySQLColumnDefinition41Packet implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeStringLenenc(CATALOG);
         payload.writeStringLenenc(schema);
         payload.writeStringLenenc(table);
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 a2be02ba053..fe90312abce 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
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLFieldCountPacket implements MySQLPacket {
+public final class MySQLFieldCountPacket extends MySQLPacket {
     
     private final int columnCount;
     
@@ -36,7 +36,7 @@ public final class MySQLFieldCountPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeIntLenenc(columnCount);
     }
 }
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 9cd95a991a9..86e2e4b36dc 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
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  * @see <a href="https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_binary_resultset.html#sect_protocol_binary_resultset_row">Binary Protocol Resultset Row</a>
  */
 @RequiredArgsConstructor
-public final class MySQLBinaryResultSetRowPacket implements MySQLPacket {
+public final class MySQLBinaryResultSetRowPacket extends MySQLPacket {
     
     private static final int PACKET_HEADER = 0x00;
     
@@ -39,7 +39,7 @@ public final class MySQLBinaryResultSetRowPacket implements MySQLPacket {
     private final BinaryRow row;
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(PACKET_HEADER);
         writeNullBitmap(payload);
         writeValues(payload);
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 c3f4b156955..d78b72f8625 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
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  * @see <a href="https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_com_stmt_prepare.html#sect_protocol_com_stmt_prepare_response_ok">COM_STMT_PREPARE_OK</a>
  */
 @RequiredArgsConstructor
-public final class MySQLComStmtPrepareOKPacket implements MySQLPacket {
+public final class MySQLComStmtPrepareOKPacket extends MySQLPacket {
     
     private static final int STATUS = 0x00;
     
@@ -40,7 +40,7 @@ public final class MySQLComStmtPrepareOKPacket implements MySQLPacket {
     private final int warningCount;
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(STATUS);
         payload.writeInt4(statementId);
         // TODO Column Definition Block should be added in future when the meta data of the columns is cached.
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 73d5821f796..fec7bed350b 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
@@ -36,7 +36,7 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLTextResultSetRowPacket implements MySQLPacket {
+public final class MySQLTextResultSetRowPacket extends MySQLPacket {
     
     private static final int NULL = 0xfb;
     
@@ -52,7 +52,7 @@ public final class MySQLTextResultSetRowPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         for (Object each : data) {
             if (null == each) {
                 payload.writeInt1(NULL);
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 6b813f89900..c37acccf456 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
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLEofPacket implements MySQLPacket {
+public final class MySQLEofPacket extends MySQLPacket {
     
     /**
      * Header of EOF packet.
@@ -52,7 +52,7 @@ public final class MySQLEofPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(HEADER);
         payload.writeInt2(warnings);
         payload.writeInt2(statusFlags);
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 5070975dd1e..6bb851c039b 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
@@ -31,7 +31,7 @@ import org.apache.shardingsphere.infra.util.exception.external.sql.vendor.Vendor
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLErrPacket implements MySQLPacket {
+public final class MySQLErrPacket extends MySQLPacket {
     
     /**
      * Header of ERR packet.
@@ -59,7 +59,7 @@ public final class MySQLErrPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(HEADER);
         payload.writeInt2(errorCode);
         payload.writeStringFix(SQL_STATE_MARKER);
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 ee41718d497..84d530a5269 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
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLOKPacket implements MySQLPacket {
+public final class MySQLOKPacket extends MySQLPacket {
     
     /**
      * Header of OK packet.
@@ -65,7 +65,7 @@ public final class MySQLOKPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(HEADER);
         payload.writeIntLenenc(affectedRows);
         payload.writeIntLenenc(lastInsertId);
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 aa00cc2c856..91fbedc41e5 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
@@ -31,7 +31,7 @@ import org.apache.shardingsphere.infra.util.exception.external.sql.type.generic.
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLAuthMoreDataPacket implements MySQLPacket {
+public final class MySQLAuthMoreDataPacket extends MySQLPacket {
     
     /**
      * Header of MySQL auth more data packet.
@@ -46,7 +46,7 @@ public final class MySQLAuthMoreDataPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         throw new UnsupportedSQLOperationException("MySQLAuthMoreDataPacket.write()");
     }
 }
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 c30eec713c2..d6d93ea3763 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
@@ -31,7 +31,7 @@ import java.util.Arrays;
  * @see <a href="https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_packets_protocol_auth_switch_request.html">AuthSwitchRequest</a>
  */
 @RequiredArgsConstructor
-public final class MySQLAuthSwitchRequestPacket implements MySQLPacket {
+public final class MySQLAuthSwitchRequestPacket extends MySQLPacket {
     
     /**
      * Header of MySQL auth switch request packet.
@@ -53,7 +53,7 @@ public final class MySQLAuthSwitchRequestPacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(HEADER);
         payload.writeStringNul(authPluginName);
         payload.writeStringNul(new String(authPluginData.getAuthenticationPluginData()));
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 a551c9a9f5a..c7c1e82c781 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
@@ -29,7 +29,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  */
 @RequiredArgsConstructor
 @Getter
-public final class MySQLAuthSwitchResponsePacket implements MySQLPacket {
+public final class MySQLAuthSwitchResponsePacket extends MySQLPacket {
     
     private final byte[] authPluginResponse;
     
@@ -38,7 +38,7 @@ public final class MySQLAuthSwitchResponsePacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeBytes(authPluginResponse);
     }
 }
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 d0bf2ed9b43..332c2092658 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
@@ -33,7 +33,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
  * @see <a href="https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_connection_phase_packets_protocol_handshake_v10.html">Handshake</a>
  */
 @Getter
-public final class MySQLHandshakePacket implements MySQLPacket {
+public final class MySQLHandshakePacket extends MySQLPacket {
     
     private final int protocolVersion = MySQLConstants.PROTOCOL_VERSION;
     
@@ -108,7 +108,7 @@ public final class MySQLHandshakePacket implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt1(protocolVersion);
         payload.writeStringNul(serverVersion);
         payload.writeInt4(connectionId);
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 684c3cd291a..96c1f90bb4d 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
@@ -33,7 +33,7 @@ import org.apache.shardingsphere.db.protocol.mysql.payload.MySQLPacketPayload;
 @RequiredArgsConstructor
 @Getter
 @Setter
-public final class MySQLHandshakeResponse41Packet implements MySQLPacket {
+public final class MySQLHandshakeResponse41Packet extends MySQLPacket {
     
     private final int maxPacketSize;
     
@@ -100,7 +100,7 @@ public final class MySQLHandshakeResponse41Packet implements MySQLPacket {
     }
     
     @Override
-    public void write(final MySQLPacketPayload payload) {
+    protected void write(final MySQLPacketPayload payload) {
         payload.writeInt4(capabilityFlags);
         payload.writeInt4(maxPacketSize);
         payload.writeInt1(characterSet);
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 a3db2f71583..3a6c8afbf2c 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
@@ -54,7 +54,6 @@ class MySQLBinlogRotateEventPacketTest {
     @Test
     void assertWrite() {
         new MySQLBinlogRotateEventPacket(binlogEventHeader, 4L, "binlog-000001").write(payload);
-        verify(binlogEventHeader).write(payload);
         verify(payload).writeInt8(4L);
         verify(payload).writeStringEOF("binlog-000001");
     }
diff --git a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/authentication/OpenGaussAuthenticationSCRAMSha256Packet.java b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/authentication/OpenGaussAuthenticationSCRAMSha256Packet.java
index c436efd5ab8..b7fb054da8e 100644
--- a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/authentication/OpenGaussAuthenticationSCRAMSha256Packet.java
+++ b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/authentication/OpenGaussAuthenticationSCRAMSha256Packet.java
@@ -26,7 +26,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * Authentication request SCRAM SHA-256 for openGauss.
  */
-public final class OpenGaussAuthenticationSCRAMSha256Packet implements PostgreSQLIdentifierPacket {
+public final class OpenGaussAuthenticationSCRAMSha256Packet extends PostgreSQLIdentifierPacket {
     
     private static final int AUTH_REQ_SHA256 = 10;
     
@@ -48,7 +48,7 @@ public final class OpenGaussAuthenticationSCRAMSha256Packet implements PostgreSQ
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt4(AUTH_REQ_SHA256);
         payload.writeInt4(PASSWORD_STORED_METHOD_SHA256);
         payload.writeBytes(authHexData.getSalt().getBytes());
diff --git a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java
index b6bb0fc88dc..291b5c55999 100644
--- a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java
+++ b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/generic/OpenGaussErrorResponsePacket.java
@@ -30,7 +30,7 @@ import java.util.Map.Entry;
 /**
  * Error response packet for openGauss.
  */
-public final class OpenGaussErrorResponsePacket implements PostgreSQLIdentifierPacket {
+public final class OpenGaussErrorResponsePacket extends PostgreSQLIdentifierPacket {
     
     public static final char FIELD_TYPE_SEVERITY = 'S';
     
@@ -121,7 +121,7 @@ public final class OpenGaussErrorResponsePacket implements PostgreSQLIdentifierP
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         for (Entry<Character, String> entry : fields.entrySet()) {
             payload.writeInt1(entry.getKey());
             payload.writeStringNul(entry.getValue());
diff --git a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/query/extended/bind/OpenGaussComBatchBindPacket.java b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/query/extended/bind/OpenGaussComBatchBindPacket.java
index 9d7ebd20b41..d9cbb83f33b 100644
--- a/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/query/extended/bind/OpenGaussComBatchBindPacket.java
+++ b/db-protocol/opengauss/src/main/java/org/apache/shardingsphere/db/protocol/opengauss/packet/command/query/extended/bind/OpenGaussComBatchBindPacket.java
@@ -154,7 +154,7 @@ public final class OpenGaussComBatchBindPacket extends OpenGaussCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/PostgreSQLPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/PostgreSQLPacket.java
index aad38459ca0..e5f90908b24 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/PostgreSQLPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/PostgreSQLPacket.java
@@ -18,10 +18,18 @@
 package org.apache.shardingsphere.db.protocol.postgresql.packet;
 
 import org.apache.shardingsphere.db.protocol.packet.DatabasePacket;
+import org.apache.shardingsphere.db.protocol.payload.PacketPayload;
 import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload;
 
 /**
  * Database packet for PostgreSQL.
  */
-public interface PostgreSQLPacket extends DatabasePacket<PostgreSQLPacketPayload> {
+public abstract class PostgreSQLPacket implements DatabasePacket {
+    
+    @Override
+    public void write(final PacketPayload payload) {
+        write((PostgreSQLPacketPayload) payload);
+    }
+    
+    protected abstract void write(PostgreSQLPacketPayload payload);
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/PostgreSQLCommandPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/PostgreSQLCommandPacket.java
index 7ae6260b643..035fd974cea 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/PostgreSQLCommandPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/PostgreSQLCommandPacket.java
@@ -23,5 +23,5 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.identifier.Postgr
 /**
  * Command packet for PostgreSQL.
  */
-public abstract class PostgreSQLCommandPacket implements PostgreSQLIdentifierPacket, CommandPacket {
+public abstract class PostgreSQLCommandPacket extends PostgreSQLIdentifierPacket implements CommandPacket {
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/admin/PostgreSQLUnsupportedCommandPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/admin/PostgreSQLUnsupportedCommandPacket.java
index d1af9e4b550..6c614bdbe48 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/admin/PostgreSQLUnsupportedCommandPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/admin/PostgreSQLUnsupportedCommandPacket.java
@@ -35,6 +35,6 @@ public final class PostgreSQLUnsupportedCommandPacket extends PostgreSQLCommandP
     private final PostgreSQLIdentifierTag identifier;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLDataRowPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLDataRowPacket.java
index c2bc4b65718..97ffd7bd2e2 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLDataRowPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLDataRowPacket.java
@@ -36,12 +36,12 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-public final class PostgreSQLDataRowPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLDataRowPacket extends PostgreSQLIdentifierPacket {
     
     private final Collection<Object> data;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt2(data.size());
         for (Object each : data) {
             if (each instanceof BinaryCell) {
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java
index fdd281585b5..8a0bb428797 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLEmptyQueryResponsePacket.java
@@ -25,10 +25,10 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * Empty query response packet for PostgreSQL.
  */
-public final class PostgreSQLEmptyQueryResponsePacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLEmptyQueryResponsePacket extends PostgreSQLIdentifierPacket {
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLNoDataPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLNoDataPacket.java
index 95cabffd824..41f813c5319 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLNoDataPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLNoDataPacket.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * No data packet for PostgreSQL.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class PostgreSQLNoDataPacket implements PostgreSQLPacket {
+public final class PostgreSQLNoDataPacket extends PostgreSQLPacket {
     
     private static final byte[] VALUE = {(byte) PostgreSQLMessagePacketType.NO_DATA.getValue(), 0, 0, 0, 4};
     
@@ -43,7 +43,7 @@ public final class PostgreSQLNoDataPacket implements PostgreSQLPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.getByteBuf().writeBytes(VALUE);
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLParameterDescriptionPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLParameterDescriptionPacket.java
index 7e195c064ff..f78e0801f5e 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLParameterDescriptionPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLParameterDescriptionPacket.java
@@ -30,12 +30,12 @@ import java.util.List;
  * Parameter description packet for PostgreSQL.
  */
 @RequiredArgsConstructor
-public final class PostgreSQLParameterDescriptionPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLParameterDescriptionPacket extends PostgreSQLIdentifierPacket {
     
     private final List<PostgreSQLColumnType> parameterTypes;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt2(parameterTypes.size());
         for (PostgreSQLColumnType each : parameterTypes) {
             payload.writeInt4(each.getValue());
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLRowDescriptionPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLRowDescriptionPacket.java
index 6e0f11698df..d0044dc13dc 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLRowDescriptionPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/PostgreSQLRowDescriptionPacket.java
@@ -29,12 +29,12 @@ import java.util.Collection;
  * Row description packet for PostgreSQL.
  */
 @RequiredArgsConstructor
-public final class PostgreSQLRowDescriptionPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLRowDescriptionPacket extends PostgreSQLIdentifierPacket {
     
     private final Collection<PostgreSQLColumnDescription> columnDescriptions;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt2(columnDescriptions.size());
         for (PostgreSQLColumnDescription each : columnDescriptions) {
             payload.writeStringNul(each.getColumnName());
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java
index 8e9ab0de2d3..f3ef516a881 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedCommandPacket.java
@@ -105,7 +105,7 @@ public final class PostgreSQLAggregatedCommandPacket extends PostgreSQLCommandPa
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedResponsesPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedResponsesPacket.java
index 5f3c8bf9db3..7c1a553adba 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedResponsesPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/PostgreSQLAggregatedResponsesPacket.java
@@ -30,16 +30,16 @@ import java.util.List;
  * PostgreSQL aggregated responses packet.
  */
 @RequiredArgsConstructor
-public final class PostgreSQLAggregatedResponsesPacket implements PostgreSQLPacket {
+public final class PostgreSQLAggregatedResponsesPacket extends PostgreSQLPacket {
     
-    private final List<DatabasePacket<?>> packets;
+    private final List<DatabasePacket> packets;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         ByteBuf byteBuf = payload.getByteBuf();
-        for (DatabasePacket<?> each : packets) {
+        for (DatabasePacket each : packets) {
             if (!(each instanceof PostgreSQLIdentifierPacket)) {
-                ((PostgreSQLPacket) each).write(payload);
+                each.write(payload);
                 continue;
             }
             PostgreSQLIdentifierPacket eachPacket = (PostgreSQLIdentifierPacket) each;
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLBindCompletePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLBindCompletePacket.java
index 48a23c9d1e5..55ee75c906e 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLBindCompletePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLBindCompletePacket.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * Bind complete packet for PostgreSQL.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class PostgreSQLBindCompletePacket implements PostgreSQLPacket {
+public final class PostgreSQLBindCompletePacket extends PostgreSQLPacket {
     
     private static final byte[] VALUE = {(byte) PostgreSQLMessagePacketType.BIND_COMPLETE.getValue(), 0, 0, 0, 4};
     
@@ -43,7 +43,7 @@ public final class PostgreSQLBindCompletePacket implements PostgreSQLPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.getByteBuf().writeBytes(VALUE);
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLComBindPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLComBindPacket.java
index 392bc08ab3f..61ceb030b12 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLComBindPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/bind/PostgreSQLComBindPacket.java
@@ -58,7 +58,7 @@ public final class PostgreSQLComBindPacket extends PostgreSQLCommandPacket {
     }
     
     /**
-     * Read parameters from Bind message.
+     * Read parameters from bind message.
      *
      * @param paramTypes parameter types
      * @return values of parameter
@@ -165,7 +165,7 @@ public final class PostgreSQLComBindPacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLCloseCompletePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLCloseCompletePacket.java
index cfbd21a72c4..db8094f49c1 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLCloseCompletePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLCloseCompletePacket.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * Close complete packet for PostgreSQL.
  */
-public final class PostgreSQLCloseCompletePacket implements PostgreSQLPacket {
+public final class PostgreSQLCloseCompletePacket extends PostgreSQLPacket {
     
     private static final byte[] VALUE = {(byte) PostgreSQLMessagePacketType.CLOSE_COMPLETE.getValue(), 0, 0, 0, 4};
     
@@ -40,7 +40,7 @@ public final class PostgreSQLCloseCompletePacket implements PostgreSQLPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.getByteBuf().writeBytes(VALUE);
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLComClosePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLComClosePacket.java
index c267f956217..9c807f7c4af 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLComClosePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/close/PostgreSQLComClosePacket.java
@@ -44,7 +44,7 @@ public final class PostgreSQLComClosePacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/describe/PostgreSQLComDescribePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/describe/PostgreSQLComDescribePacket.java
index 4ea8245c441..f964e82fb9f 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/describe/PostgreSQLComDescribePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/describe/PostgreSQLComDescribePacket.java
@@ -42,7 +42,7 @@ public final class PostgreSQLComDescribePacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLComExecutePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLComExecutePacket.java
index 321aa7b0c02..c1565641491 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLComExecutePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLComExecutePacket.java
@@ -42,7 +42,7 @@ public final class PostgreSQLComExecutePacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLPortalSuspendedPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLPortalSuspendedPacket.java
index bdb2b8b666c..2694a620d4b 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLPortalSuspendedPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/execute/PostgreSQLPortalSuspendedPacket.java
@@ -25,10 +25,10 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * Portal suspended packet for PostgreSQL.
  */
-public final class PostgreSQLPortalSuspendedPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLPortalSuspendedPacket extends PostgreSQLIdentifierPacket {
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/flush/PostgreSQLComFlushPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/flush/PostgreSQLComFlushPacket.java
index 166024e1c11..a391168bd83 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/flush/PostgreSQLComFlushPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/flush/PostgreSQLComFlushPacket.java
@@ -32,7 +32,7 @@ public final class PostgreSQLComFlushPacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLComParsePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLComParsePacket.java
index b3ebd6c554d..960ae9df61a 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLComParsePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLComParsePacket.java
@@ -63,7 +63,7 @@ public final class PostgreSQLComParsePacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLParseCompletePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLParseCompletePacket.java
index 21a1b082b40..d04c6e8e295 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLParseCompletePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/parse/PostgreSQLParseCompletePacket.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * Parse complete packet for PostgreSQL.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class PostgreSQLParseCompletePacket implements PostgreSQLPacket {
+public final class PostgreSQLParseCompletePacket extends PostgreSQLPacket {
     
     private static final byte[] VALUE = {(byte) PostgreSQLMessagePacketType.PARSE_COMPLETE.getValue(), 0, 0, 0, 4};
     
@@ -43,7 +43,7 @@ public final class PostgreSQLParseCompletePacket implements PostgreSQLPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.getByteBuf().writeBytes(VALUE);
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/sync/PostgreSQLComSyncPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/sync/PostgreSQLComSyncPacket.java
index 672d61821ba..8573707330d 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/sync/PostgreSQLComSyncPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/extended/sync/PostgreSQLComSyncPacket.java
@@ -34,7 +34,7 @@ public final class PostgreSQLComSyncPacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/simple/PostgreSQLComQueryPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/simple/PostgreSQLComQueryPacket.java
index 324ea0bb344..586b94e60bf 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/simple/PostgreSQLComQueryPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/simple/PostgreSQLComQueryPacket.java
@@ -39,7 +39,7 @@ public final class PostgreSQLComQueryPacket extends PostgreSQLCommandPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLComTerminationPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLComTerminationPacket.java
index c2ec83b50af..56686020444 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLComTerminationPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLComTerminationPacket.java
@@ -34,7 +34,7 @@ public final class PostgreSQLComTerminationPacket extends PostgreSQLCommandPacke
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLCommandCompletePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLCommandCompletePacket.java
index 1f43d647eb4..645f5de2b47 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLCommandCompletePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLCommandCompletePacket.java
@@ -31,7 +31,7 @@ import java.util.HashSet;
  * Command complete packet for PostgreSQL.
  */
 @RequiredArgsConstructor
-public final class PostgreSQLCommandCompletePacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLCommandCompletePacket extends PostgreSQLIdentifierPacket {
     
     private static final Collection<String> TAGS_WITH_COUNT = new HashSet<>(Arrays.asList("INSERT", "SELECT", "UPDATE", "DELETE", "MOVE"));
     
@@ -40,7 +40,7 @@ public final class PostgreSQLCommandCompletePacket implements PostgreSQLIdentifi
     private final long rowCount;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         if (!TAGS_WITH_COUNT.contains(sqlCommand)) {
             payload.writeStringNul(sqlCommand);
             return;
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLErrorResponsePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLErrorResponsePacket.java
index 7de1b7c4376..ef1998d8a23 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLErrorResponsePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLErrorResponsePacket.java
@@ -35,7 +35,7 @@ import java.util.stream.Collectors;
  * 
  * @see <a href="https://www.postgresql.org/docs/12/protocol-message-formats.html">ErrorResponse (B)</a>
  */
-public final class PostgreSQLErrorResponsePacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLErrorResponsePacket extends PostgreSQLIdentifierPacket {
     
     public static final char FIELD_TYPE_SEVERITY = 'S';
     
@@ -89,7 +89,7 @@ public final class PostgreSQLErrorResponsePacket implements PostgreSQLIdentifier
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         for (Entry<Character, String> entry : fields.entrySet()) {
             payload.writeInt1(entry.getKey());
             payload.writeStringNul(entry.getValue());
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLReadyForQueryPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLReadyForQueryPacket.java
index 30aac9e24c9..f23d59eb27e 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLReadyForQueryPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/generic/PostgreSQLReadyForQueryPacket.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * Ready for query packet for PostgreSQL.
  */
 @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
-public final class PostgreSQLReadyForQueryPacket implements PostgreSQLPacket {
+public final class PostgreSQLReadyForQueryPacket extends PostgreSQLPacket {
     
     public static final PostgreSQLReadyForQueryPacket IN_TRANSACTION = new PostgreSQLReadyForQueryPacket((byte) 'T');
     
@@ -40,7 +40,7 @@ public final class PostgreSQLReadyForQueryPacket implements PostgreSQLPacket {
     private final byte status;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.getByteBuf().writeBytes(PREFIX);
         payload.getByteBuf().writeByte(status);
     }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLAuthenticationOKPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLAuthenticationOKPacket.java
index e6708a8ba5d..d60c3e33fcc 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLAuthenticationOKPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLAuthenticationOKPacket.java
@@ -25,10 +25,10 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * Authentication OK packet for PostgreSQL.
  */
-public final class PostgreSQLAuthenticationOKPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLAuthenticationOKPacket extends PostgreSQLIdentifierPacket {
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt4(0);
     }
     
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLComStartupPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLComStartupPacket.java
index 413ae3ec0f6..238a13a467b 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLComStartupPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLComStartupPacket.java
@@ -27,7 +27,7 @@ import java.util.Map;
 /**
  * Startup packet for PostgreSQL.
  */
-public final class PostgreSQLComStartupPacket implements PostgreSQLPacket {
+public final class PostgreSQLComStartupPacket extends PostgreSQLPacket {
     
     private static final String DATABASE_NAME_KEY = "database";
     
@@ -76,6 +76,6 @@ public final class PostgreSQLComStartupPacket implements PostgreSQLPacket {
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLParameterStatusPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLParameterStatusPacket.java
index b62699f12fa..13f51355f92 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLParameterStatusPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLParameterStatusPacket.java
@@ -27,14 +27,14 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * Parameter status packet for PostgreSQL.
  */
 @RequiredArgsConstructor
-public final class PostgreSQLParameterStatusPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLParameterStatusPacket extends PostgreSQLIdentifierPacket {
     
     private final String key;
     
     private final String value;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeStringNul(key);
         payload.writeStringNul(value);
     }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLPasswordMessagePacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLPasswordMessagePacket.java
index 2474ab7a4ac..6feb2ab7cdf 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLPasswordMessagePacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLPasswordMessagePacket.java
@@ -27,7 +27,7 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * PasswordMessage (frontend) packet for PostgreSQL.
  */
 @Getter
-public final class PostgreSQLPasswordMessagePacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLPasswordMessagePacket extends PostgreSQLIdentifierPacket {
     
     private final String digest;
     
@@ -37,7 +37,7 @@ public final class PostgreSQLPasswordMessagePacket implements PostgreSQLIdentifi
     }
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
     }
     
     @Override
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLUnwillingPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLUnwillingPacket.java
index 83b40c1db60..2a8d44f089e 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLUnwillingPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLUnwillingPacket.java
@@ -23,12 +23,12 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * SSL unwilling packet for PostgreSQL.
  */
-public final class PostgreSQLSSLUnwillingPacket implements PostgreSQLPacket {
+public final class PostgreSQLSSLUnwillingPacket extends PostgreSQLPacket {
     
     private static final char STATUS_CODE = 'N';
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt1(STATUS_CODE);
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLWillingPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLWillingPacket.java
index c543072916a..e1683f95a23 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLWillingPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/PostgreSQLSSLWillingPacket.java
@@ -23,12 +23,12 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * SSL willing packet for PostgreSQL.
  */
-public final class PostgreSQLSSLWillingPacket implements PostgreSQLPacket {
+public final class PostgreSQLSSLWillingPacket extends PostgreSQLPacket {
     
     private static final char STATUS_CODE = 'S';
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt1(STATUS_CODE);
     }
 }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLMD5PasswordAuthenticationPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLMD5PasswordAuthenticationPacket.java
index b97b786f368..8553cf99ada 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLMD5PasswordAuthenticationPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLMD5PasswordAuthenticationPacket.java
@@ -27,14 +27,14 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
  * MD5 password authentication (backend) packet for PostgreSQL.
  */
 @RequiredArgsConstructor
-public final class PostgreSQLMD5PasswordAuthenticationPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLMD5PasswordAuthenticationPacket extends PostgreSQLIdentifierPacket {
     
     private static final int AUTH_REQ_MD5 = 5;
     
     private final byte[] md5Salt;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt4(AUTH_REQ_MD5);
         payload.writeBytes(md5Salt);
     }
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLPasswordAuthenticationPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLPasswordAuthenticationPacket.java
index db52c61ca53..ee80535deea 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLPasswordAuthenticationPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/handshake/authentication/PostgreSQLPasswordAuthenticationPacket.java
@@ -25,12 +25,12 @@ import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacket
 /**
  * Password authentication (backend) packet for PostgreSQL.
  */
-public final class PostgreSQLPasswordAuthenticationPacket implements PostgreSQLIdentifierPacket {
+public final class PostgreSQLPasswordAuthenticationPacket extends PostgreSQLIdentifierPacket {
     
     private static final int AUTH_REQ_PASSWORD = 3;
     
     @Override
-    public void write(final PostgreSQLPacketPayload payload) {
+    protected void write(final PostgreSQLPacketPayload payload) {
         payload.writeInt4(AUTH_REQ_PASSWORD);
     }
     
diff --git a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/identifier/PostgreSQLIdentifierPacket.java b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/identifier/PostgreSQLIdentifierPacket.java
index 3f316b902f3..0266ee57aaf 100644
--- a/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/identifier/PostgreSQLIdentifierPacket.java
+++ b/db-protocol/postgresql/src/main/java/org/apache/shardingsphere/db/protocol/postgresql/packet/identifier/PostgreSQLIdentifierPacket.java
@@ -22,12 +22,12 @@ import org.apache.shardingsphere.db.protocol.postgresql.packet.PostgreSQLPacket;
 /**
  * Identifier packet for PostgreSQL.
  */
-public interface PostgreSQLIdentifierPacket extends PostgreSQLPacket {
+public abstract class PostgreSQLIdentifierPacket extends PostgreSQLPacket {
     
     /**
      * Get identifier.
      *
      * @return identifier
      */
-    PostgreSQLIdentifierTag getIdentifier();
+    public abstract PostgreSQLIdentifierTag getIdentifier();
 }
diff --git a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java
index 2531fe81f75..183aeb66fd4 100644
--- a/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java
+++ b/proxy/frontend/core/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecutorTask.java
@@ -123,7 +123,7 @@ public final class CommandExecutorTask implements Runnable {
     
     private boolean doExecuteCommand(final ChannelHandlerContext context, final CommandExecuteEngine commandExecuteEngine, final CommandExecutor commandExecutor) throws SQLException {
         try {
-            Collection<DatabasePacket<?>> responsePackets = commandExecutor.execute();
+            Collection<DatabasePacket> responsePackets = commandExecutor.execute();
             if (responsePackets.isEmpty()) {
                 return false;
             }
diff --git a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/fixture/DatabaseProtocolFrontendEngineFixture.java b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/fixture/DatabaseProtocolFrontendEngineFixture.java
index 68897511bb4..4a8a5fd1701 100644
--- a/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/fixture/DatabaseProtocolFrontendEngineFixture.java
+++ b/proxy/frontend/core/src/test/java/org/apache/shardingsphere/proxy/frontend/fixture/DatabaseProtocolFrontendEngineFixture.java
@@ -25,10 +25,10 @@ import org.apache.shardingsphere.proxy.frontend.command.CommandExecuteEngine;
 import org.apache.shardingsphere.proxy.frontend.spi.DatabaseProtocolFrontendEngine;
 import org.apache.shardingsphere.test.fixture.infra.database.type.MockedDatabaseType;
 
-public final class DatabaseProtocolFrontendEngineFixture implements DatabaseProtocolFrontendEngine<DatabasePacket<?>> {
+public final class DatabaseProtocolFrontendEngineFixture implements DatabaseProtocolFrontendEngine<DatabasePacket> {
     
     @Override
-    public DatabasePacketCodecEngine<DatabasePacket<?>> getCodecEngine() {
+    public DatabasePacketCodecEngine<DatabasePacket> getCodecEngine() {
         return null;
     }
     
diff --git a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecuteEngine.java b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecuteEngine.java
index 22ffb8ee441..da79dba985c 100644
--- a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecuteEngine.java
+++ b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/CommandExecuteEngine.java
@@ -70,7 +70,7 @@ public interface CommandExecuteEngine {
      * @param cause cause of error
      * @return error packet
      */
-    DatabasePacket<?> getErrorPacket(Exception cause);
+    DatabasePacket getErrorPacket(Exception cause);
     
     /**
      * Get other packet.
@@ -78,7 +78,7 @@ public interface CommandExecuteEngine {
      * @param connectionSession connection session
      * @return other packet
      */
-    default Optional<DatabasePacket<?>> getOtherPacket(ConnectionSession connectionSession) {
+    default Optional<DatabasePacket> getOtherPacket(ConnectionSession connectionSession) {
         return Optional.empty();
     }
     
diff --git a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/CommandExecutor.java b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/CommandExecutor.java
index 804a6652dff..1f182efb0bb 100644
--- a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/CommandExecutor.java
+++ b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/CommandExecutor.java
@@ -27,7 +27,7 @@ import java.util.Collection;
  * 
  * @param <T> type of database packet
  */
-public interface CommandExecutor<T extends DatabasePacket<?>> {
+public interface CommandExecutor<T extends DatabasePacket> {
     
     /**
      * Execute command.
diff --git a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/QueryCommandExecutor.java b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/QueryCommandExecutor.java
index 3ddbebf4fc3..f9467f13b94 100644
--- a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/QueryCommandExecutor.java
+++ b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/command/executor/QueryCommandExecutor.java
@@ -26,7 +26,7 @@ import java.sql.SQLException;
  * 
  * @param <T> type of database packet
  */
-public interface QueryCommandExecutor<T extends DatabasePacket<?>> extends CommandExecutor<T> {
+public interface QueryCommandExecutor<T extends DatabasePacket> extends CommandExecutor<T> {
     
     /**
      * Get response type.
diff --git a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/spi/DatabaseProtocolFrontendEngine.java b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/spi/DatabaseProtocolFrontendEngine.java
index aafc7d3af53..f6b4518c901 100644
--- a/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/spi/DatabaseProtocolFrontendEngine.java
+++ b/proxy/frontend/spi/src/main/java/org/apache/shardingsphere/proxy/frontend/spi/DatabaseProtocolFrontendEngine.java
@@ -30,7 +30,7 @@ import org.apache.shardingsphere.infra.util.spi.type.typed.TypedSPI;
  * 
  * @param <T> type of database packet
  */
-public interface DatabaseProtocolFrontendEngine<T extends DatabasePacket<?>> extends TypedSPI {
+public interface DatabaseProtocolFrontendEngine<T extends DatabasePacket> extends TypedSPI {
     
     /**
      * Initialize channel.
diff --git a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
index ee6f32e00d4..ac1571d109c 100644
--- a/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
+++ b/proxy/frontend/type/mysql/src/main/java/org/apache/shardingsphere/proxy/frontend/mysql/command/MySQLCommandExecuteEngine.java
@@ -83,7 +83,7 @@ public final class MySQLCommandExecuteEngine implements CommandExecuteEngine {
                 context.flush();
                 databaseConnectionManager.getResourceLock().doAwait();
             }
-            DatabasePacket<?> dataValue = queryCommandExecutor.getQueryRowPacket();
+            DatabasePacket dataValue = queryCommandExecutor.getQueryRowPacket();
             context.write(dataValue);
             if (flushThreshold == count) {
                 context.flush();
diff --git a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
index f44fd090e86..e7331586ab5 100644
--- a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
+++ b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/binary/prepare/MySQLComStmtPrepareExecutorTest.java
@@ -136,12 +136,12 @@ class MySQLComStmtPrepareExecutorTest {
         assertThat(actualIterator.next(), instanceOf(MySQLComStmtPrepareOKPacket.class));
         assertThat(actualIterator.next(), instanceOf(MySQLColumnDefinition41Packet.class));
         assertThat(actualIterator.next(), instanceOf(MySQLEofPacket.class));
-        DatabasePacket<?> idColumnDefinitionPacket = actualIterator.next();
+        DatabasePacket idColumnDefinitionPacket = actualIterator.next();
         assertThat(idColumnDefinitionPacket, instanceOf(MySQLColumnDefinition41Packet.class));
         assertThat(getColumnDefinitionFlag((MySQLColumnDefinition41Packet) idColumnDefinitionPacket),
                 is(MySQLColumnDefinitionFlag.PRIMARY_KEY.getValue() | MySQLColumnDefinitionFlag.UNSIGNED.getValue()));
         assertThat(actualIterator.next(), instanceOf(MySQLColumnDefinition41Packet.class));
-        DatabasePacket<?> ageColumnDefinitionPacket = actualIterator.next();
+        DatabasePacket ageColumnDefinitionPacket = actualIterator.next();
         assertThat(ageColumnDefinitionPacket, instanceOf(MySQLColumnDefinition41Packet.class));
         assertThat(getColumnDefinitionFlag((MySQLColumnDefinition41Packet) ageColumnDefinitionPacket), is(MySQLColumnDefinitionFlag.UNSIGNED.getValue()));
         assertThat(actualIterator.next(), instanceOf(MySQLColumnDefinition41Packet.class));
@@ -167,14 +167,14 @@ class MySQLComStmtPrepareExecutorTest {
         Iterator<MySQLPacket> actualIterator = new MySQLComStmtPrepareExecutor(packet, connectionSession).execute().iterator();
         assertThat(actualIterator.next(), instanceOf(MySQLComStmtPrepareOKPacket.class));
         assertThat(actualIterator.next(), instanceOf(MySQLColumnDefinition41Packet.class));
-        DatabasePacket<?> firstAgeColumnDefinitionPacket = actualIterator.next();
+        DatabasePacket firstAgeColumnDefinitionPacket = actualIterator.next();
         assertThat(firstAgeColumnDefinitionPacket, instanceOf(MySQLColumnDefinition41Packet.class));
         assertThat(getColumnDefinitionFlag((MySQLColumnDefinition41Packet) firstAgeColumnDefinitionPacket), is(MySQLColumnDefinitionFlag.UNSIGNED.getValue()));
-        DatabasePacket<?> idColumnDefinitionPacket = actualIterator.next();
+        DatabasePacket idColumnDefinitionPacket = actualIterator.next();
         assertThat(idColumnDefinitionPacket, instanceOf(MySQLColumnDefinition41Packet.class));
         assertThat(getColumnDefinitionFlag((MySQLColumnDefinition41Packet) idColumnDefinitionPacket),
                 is(MySQLColumnDefinitionFlag.PRIMARY_KEY.getValue() | MySQLColumnDefinitionFlag.UNSIGNED.getValue()));
-        DatabasePacket<?> secondAgeColumnDefinitionPacket = actualIterator.next();
+        DatabasePacket secondAgeColumnDefinitionPacket = actualIterator.next();
         assertThat(secondAgeColumnDefinitionPacket, instanceOf(MySQLColumnDefinition41Packet.class));
         assertThat(getColumnDefinitionFlag((MySQLColumnDefinition41Packet) secondAgeColumnDefinitionPacket), is(MySQLColumnDefinitionFlag.UNSIGNED.getValue()));
         assertThat(actualIterator.next(), instanceOf(MySQLEofPacket.class));
diff --git a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
index 557d358511e..692bd05429c 100644
--- a/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
+++ b/proxy/frontend/type/mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/command/query/builder/ResponsePacketBuilderTest.java
@@ -77,7 +77,7 @@ class ResponsePacketBuilderTest {
         QueryHeader binaryHeader = new QueryHeader("s", "t", "columnLabel2", "columnName2", 8, "VARBINARY", 1, 1, false, false, false, false);
         List<QueryHeader> queryHeaders = Arrays.asList(nonBinaryHeader, binaryHeader);
         QueryResponseHeader queryResponseHeader = new QueryResponseHeader(queryHeaders);
-        List<DatabasePacket<MySQLPacketPayload>> actual = new ArrayList(ResponsePacketBuilder.buildQueryResponsePackets(queryResponseHeader, 255, 0));
+        List<DatabasePacket> actual = new ArrayList(ResponsePacketBuilder.buildQueryResponsePackets(queryResponseHeader, 255, 0));
         assertThat(actual.size(), is(4));
         byte[] actualNonBinaryData = new byte[48];
         actual.get(1).write(new MySQLPacketPayload(Unpooled.wrappedBuffer(actualNonBinaryData).writerIndex(0), StandardCharsets.UTF_8));
diff --git a/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecuteEngine.java b/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecuteEngine.java
index cc0ce1f29ea..b7674e7b971 100644
--- a/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecuteEngine.java
+++ b/proxy/frontend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/frontend/opengauss/command/OpenGaussCommandExecuteEngine.java
@@ -69,7 +69,7 @@ public final class OpenGaussCommandExecuteEngine implements CommandExecuteEngine
     }
     
     @Override
-    public Optional<DatabasePacket<?>> getOtherPacket(final ConnectionSession connectionSession) {
+    public Optional<DatabasePacket> getOtherPacket(final ConnectionSession connectionSession) {
         return postgreSQLCommandExecuteEngine.getOtherPacket(connectionSession);
     }
     
diff --git a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java
index f8438dc07d8..a6afd02b7a8 100644
--- a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java
+++ b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/PostgreSQLCommandExecuteEngine.java
@@ -72,7 +72,7 @@ public final class PostgreSQLCommandExecuteEngine implements CommandExecuteEngin
     }
     
     @Override
-    public Optional<DatabasePacket<?>> getOtherPacket(final ConnectionSession connectionSession) {
+    public Optional<DatabasePacket> getOtherPacket(final ConnectionSession connectionSession) {
         return Optional.of(connectionSession.getTransactionStatus().isInTransaction() ? PostgreSQLReadyForQueryPacket.TRANSACTION_FAILED : PostgreSQLReadyForQueryPacket.NOT_IN_TRANSACTION);
     }
     
@@ -113,7 +113,7 @@ public final class PostgreSQLCommandExecuteEngine implements CommandExecuteEngin
                 context.flush();
                 databaseConnectionManager.getResourceLock().doAwait();
             }
-            DatabasePacket<?> resultValue = queryCommandExecutor.getQueryRowPacket();
+            DatabasePacket resultValue = queryCommandExecutor.getQueryRowPacket();
             context.write(resultValue);
             if (proxyFrontendFlushThreshold == flushCount) {
                 context.flush();
diff --git a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedCommandExecutor.java b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedCommandExecutor.java
index 4165f0e3b91..1de38e77648 100644
--- a/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedCommandExecutor.java
+++ b/proxy/frontend/type/postgresql/src/main/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedCommandExecutor.java
@@ -36,7 +36,7 @@ public final class PostgreSQLAggregatedCommandExecutor implements CommandExecuto
     
     @Override
     public Collection<PostgreSQLPacket> execute() throws SQLException {
-        List<DatabasePacket<?>> result = new LinkedList<>();
+        List<DatabasePacket> result = new LinkedList<>();
         for (CommandExecutor<?> each : executors) {
             try {
                 result.addAll(each.execute());
diff --git a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
index f5b021d8f5d..644da5f06b5 100644
--- a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
+++ b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/PostgreSQLAggregatedBatchedStatementsCommandExecutorTest.java
@@ -95,7 +95,7 @@ class PostgreSQLAggregatedBatchedStatementsCommandExecutorTest {
         PostgreSQLAggregatedBatchedStatementsCommandExecutor executor = new PostgreSQLAggregatedBatchedStatementsCommandExecutor(connectionSession, createPackets());
         ContextManager contextManager = mockContextManager();
         when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        List<DatabasePacket<?>> actualPackets = new ArrayList<>(executor.execute());
+        List<DatabasePacket> actualPackets = new ArrayList<>(executor.execute());
         assertThat(actualPackets.size(), is(BATCH_SIZE * 3));
         for (int i = 0; i < BATCH_SIZE; i++) {
             assertThat(actualPackets.get(i * 3), is(PostgreSQLBindCompletePacket.getInstance()));
@@ -106,7 +106,6 @@ class PostgreSQLAggregatedBatchedStatementsCommandExecutorTest {
     
     private ConnectionSession mockConnectionSession() throws SQLException {
         ConnectionSession result = mock(ConnectionSession.class);
-        @SuppressWarnings("rawtypes")
         SQLStatementContext sqlStatementContext = mock(InsertStatementContext.class);
         when(sqlStatementContext.getSqlStatement()).thenReturn(parserEngine.parse(SQL, false));
         when(result.getDatabaseName()).thenReturn("foo_db");
diff --git a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
index 1baed767f7b..0b7bf8408fd 100644
--- a/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
+++ b/proxy/frontend/type/postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/command/query/extended/describe/PostgreSQLComDescribeExecutorTest.java
@@ -265,7 +265,7 @@ class PostgreSQLComDescribeExecutorTest {
         verify(mockPayload).writeInt2(3);
         verify(mockPayload).writeInt4(23);
         verify(mockPayload, times(2)).writeInt4(18);
-        DatabasePacket<?> actualRowDescriptionPacket = actualPacketsIterator.next();
+        DatabasePacket actualRowDescriptionPacket = actualPacketsIterator.next();
         assertThat(actualRowDescriptionPacket, is(instanceOf(PostgreSQLRowDescriptionPacket.class)));
         assertRowDescriptions((PostgreSQLRowDescriptionPacket) actualRowDescriptionPacket);
     }