You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2022/06/09 23:24:10 UTC

[shardingsphere] branch master updated: Refactor RALBackendHandler.init() (#18273)

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

menghaoran 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 865da4240b4 Refactor RALBackendHandler.init() (#18273)
865da4240b4 is described below

commit 865da4240b409fb0bcbcda6480dee2641647a0f9
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Jun 10 07:23:53 2022 +0800

    Refactor RALBackendHandler.init() (#18273)
---
 .../distsql/ral/QueryableRALBackendHandler.java    |  4 +-
 .../text/distsql/ral/RALBackendHandler.java        |  6 +-
 .../text/distsql/ral/RALBackendHandlerFactory.java | 86 ++++++++++------------
 .../distsql/ral/UpdatableRALBackendHandler.java    |  6 +-
 .../text/distsql/ral/advanced/FormatHandler.java   |  2 +-
 .../ral/advanced/ParseDistSQLBackendHandler.java   |  6 +-
 .../ral/advanced/PreviewBackendHandler.java        |  6 +-
 .../queryable/CountInstanceRulesHandler.java       |  2 +-
 .../ExportDatabaseConfigurationHandler.java        |  6 +-
 .../common/queryable/ShowAuthorityRuleHandler.java |  2 +-
 .../ral/common/queryable/ShowInstanceHandler.java  |  2 +-
 .../common/queryable/ShowInstanceModeHandler.java  |  2 +-
 ...ShowReadwriteSplittingReadResourcesHandler.java |  6 +-
 .../common/queryable/ShowSQLParserRuleHandler.java |  2 +-
 .../common/queryable/ShowTableMetadataHandler.java |  6 +-
 .../common/queryable/ShowTrafficRulesHandler.java  |  2 +-
 .../queryable/ShowTransactionRuleHandler.java      |  2 +-
 .../ral/common/queryable/ShowVariableHandler.java  |  6 +-
 .../ral/common/updatable/AlterInstanceHandler.java |  2 +-
 .../updatable/AlterSQLParserRuleHandler.java       |  2 +-
 .../common/updatable/AlterTrafficRuleHandler.java  |  2 +-
 .../updatable/AlterTransactionRuleHandler.java     |  2 +-
 .../ral/common/updatable/ApplyDistSQLHandler.java  |  2 +-
 .../common/updatable/CreateTrafficRuleHandler.java |  2 +-
 .../common/updatable/DiscardDistSQLHandler.java    |  2 +-
 .../common/updatable/DropTrafficRuleHandler.java   |  2 +-
 .../ImportDatabaseConfigurationHandler.java        |  2 +-
 .../ral/common/updatable/LabelInstanceHandler.java |  2 +-
 .../common/updatable/PrepareDistSQLHandler.java    |  2 +-
 .../updatable/RefreshTableMetadataHandler.java     |  6 +-
 .../common/updatable/SetInstanceStatusHandler.java |  2 +-
 .../SetReadwriteSplittingStatusHandler.java        |  6 +-
 .../ral/common/updatable/SetVariableHandler.java   |  6 +-
 .../common/updatable/UnlabelInstanceHandler.java   |  2 +-
 .../advance/ParseDistSQLBackendHandlerTest.java    |  6 +-
 .../common/queryable/CountInstanceRulesTest.java   |  6 +-
 .../ExportDatabaseConfigurationHandlerTest.java    |  3 +-
 .../queryable/ShowAuthorityRuleHandlerTest.java    |  4 +-
 .../queryable/ShowInstanceModeHandlerTest.java     |  3 +-
 .../queryable/ShowSQLParserRuleHandlerTest.java    |  3 +-
 .../queryable/ShowTableMetadataHandlerTest.java    |  3 +-
 .../queryable/ShowTrafficRulesHandlerTest.java     |  3 +-
 .../queryable/ShowTransactionRuleHandlerTest.java  |  6 +-
 .../queryable/ShowVariableBackendHandlerTest.java  | 18 +++--
 .../common/updatable/AlterInstanceHandlerTest.java | 12 ++-
 .../updatable/AlterSQLParserRuleHandlerTest.java   |  8 +-
 .../updatable/AlterTrafficRuleHandlerTest.java     | 16 +++-
 .../updatable/CreateTrafficRuleHandlerTest.java    | 17 ++++-
 .../updatable/DropTrafficRuleHandlerTest.java      | 24 ++++--
 .../ImportDatabaseConfigurationHandlerTest.java    |  3 +-
 .../updatable/SetVariableBackendHandlerTest.java   | 32 ++++++--
 .../common/updatable/SetVariableExecutorTest.java  | 12 ++-
 52 files changed, 225 insertions(+), 152 deletions(-)

diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
index fe6d53062a2..4dbe4e9eed7 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/QueryableRALBackendHandler.java
@@ -36,8 +36,10 @@ import java.util.stream.Collectors;
 
 /**
  * Queryable RAL backend handler.
+ * 
+ * @param <E> type of RAL statement
  */
-public abstract class QueryableRALBackendHandler<E extends RALStatement, R extends QueryableRALBackendHandler> extends RALBackendHandler<E, R> {
+public abstract class QueryableRALBackendHandler<E extends RALStatement> extends RALBackendHandler<E> {
     
     private List<QueryHeader> queryHeaders;
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java
index 6034c074fcb..215c39bca51 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandler.java
@@ -33,7 +33,7 @@ import java.sql.SQLException;
  * RAL backend handler.
  */
 @Getter
-public abstract class RALBackendHandler<E extends RALStatement, R extends RALBackendHandler> implements TextProtocolBackendHandler {
+public abstract class RALBackendHandler<E extends RALStatement> implements TextProtocolBackendHandler {
     
     private E sqlStatement;
     
@@ -41,11 +41,9 @@ public abstract class RALBackendHandler<E extends RALStatement, R extends RALBac
      * Method to initialize handler, this method needs to be rewritten when the handler has properties other than sql statement.
      *
      * @param parameter parameters required by handler
-     * @return the object itself
      */
-    public R init(final HandlerParameter<E> parameter) {
+    public void init(final HandlerParameter<E> parameter) {
         sqlStatement = parameter.getStatement();
-        return (R) this;
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
index a9a107c67b5..c8b86128c91 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/RALBackendHandlerFactory.java
@@ -92,7 +92,7 @@ import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.Sho
 import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.status.SetReadwriteSplittingStatusStatement;
 
 import java.sql.SQLException;
-import java.util.LinkedHashMap;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -101,49 +101,39 @@ import java.util.Map;
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 public final class RALBackendHandlerFactory {
     
-    private static final Map<String, Class<? extends RALBackendHandler>> UPDATABLE_HANDLER_MAP = new LinkedHashMap<>();
-    
-    private static final Map<String, Class<? extends RALBackendHandler>> QUERYABLE_HANDLER_MAP = new LinkedHashMap<>();
+    private static final Map<String, Class<? extends RALBackendHandler>> HANDLERS = new HashMap<>();
     
     static {
-        initUpdatableHandlerMap();
-        initQueryableHandlerMap();
-    }
-    
-    private static void initUpdatableHandlerMap() {
-        UPDATABLE_HANDLER_MAP.put(LabelInstanceStatement.class.getName(), LabelInstanceHandler.class);
-        UPDATABLE_HANDLER_MAP.put(UnlabelInstanceStatement.class.getName(), UnlabelInstanceHandler.class);
-        UPDATABLE_HANDLER_MAP.put(SetInstanceStatusStatement.class.getName(), SetInstanceStatusHandler.class);
-        UPDATABLE_HANDLER_MAP.put(SetVariableStatement.class.getName(), SetVariableHandler.class);
-        UPDATABLE_HANDLER_MAP.put(AlterInstanceStatement.class.getName(), AlterInstanceHandler.class);
-        UPDATABLE_HANDLER_MAP.put(SetReadwriteSplittingStatusStatement.class.getName(), SetReadwriteSplittingStatusHandler.class);
-        UPDATABLE_HANDLER_MAP.put(RefreshTableMetadataStatement.class.getName(), RefreshTableMetadataHandler.class);
-        UPDATABLE_HANDLER_MAP.put(CreateTrafficRuleStatement.class.getName(), CreateTrafficRuleHandler.class);
-        UPDATABLE_HANDLER_MAP.put(AlterTrafficRuleStatement.class.getName(), AlterTrafficRuleHandler.class);
-        UPDATABLE_HANDLER_MAP.put(DropTrafficRuleStatement.class.getName(), DropTrafficRuleHandler.class);
-        UPDATABLE_HANDLER_MAP.put(AlterSQLParserRuleStatement.class.getName(), AlterSQLParserRuleHandler.class);
-        UPDATABLE_HANDLER_MAP.put(AlterTransactionRuleStatement.class.getName(), AlterTransactionRuleHandler.class);
-        UPDATABLE_HANDLER_MAP.put(PrepareDistSQLStatement.class.getName(), PrepareDistSQLHandler.class);
-        UPDATABLE_HANDLER_MAP.put(ApplyDistSQLStatement.class.getName(), ApplyDistSQLHandler.class);
-        UPDATABLE_HANDLER_MAP.put(DiscardDistSQLStatement.class.getName(), DiscardDistSQLHandler.class);
-        UPDATABLE_HANDLER_MAP.put(ImportDatabaseConfigurationStatement.class.getName(), ImportDatabaseConfigurationHandler.class);
-    }
-    
-    private static void initQueryableHandlerMap() {
-        QUERYABLE_HANDLER_MAP.put(ShowInstanceStatement.class.getName(), ShowInstanceHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowInstanceModeStatement.class.getName(), ShowInstanceModeHandler.class);
-        QUERYABLE_HANDLER_MAP.put(CountInstanceRulesStatement.class.getName(), CountInstanceRulesHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowVariableStatement.class.getName(), ShowVariableHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowReadwriteSplittingReadResourcesStatement.class.getName(), ShowReadwriteSplittingReadResourcesHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowAuthorityRuleStatement.class.getName(), ShowAuthorityRuleHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowSQLParserRuleStatement.class.getName(), ShowSQLParserRuleHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowTableMetadataStatement.class.getName(), ShowTableMetadataHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowTrafficRulesStatement.class.getName(), ShowTrafficRulesHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ShowTransactionRuleStatement.class.getName(), ShowTransactionRuleHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ExportDatabaseConfigurationStatement.class.getName(), ExportDatabaseConfigurationHandler.class);
-        QUERYABLE_HANDLER_MAP.put(ParseStatement.class.getName(), ParseDistSQLBackendHandler.class);
-        QUERYABLE_HANDLER_MAP.put(PreviewStatement.class.getName(), PreviewBackendHandler.class);
-        QUERYABLE_HANDLER_MAP.put(FormatStatement.class.getName(), FormatHandler.class);
+        HANDLERS.put(LabelInstanceStatement.class.getName(), LabelInstanceHandler.class);
+        HANDLERS.put(UnlabelInstanceStatement.class.getName(), UnlabelInstanceHandler.class);
+        HANDLERS.put(SetInstanceStatusStatement.class.getName(), SetInstanceStatusHandler.class);
+        HANDLERS.put(SetVariableStatement.class.getName(), SetVariableHandler.class);
+        HANDLERS.put(AlterInstanceStatement.class.getName(), AlterInstanceHandler.class);
+        HANDLERS.put(SetReadwriteSplittingStatusStatement.class.getName(), SetReadwriteSplittingStatusHandler.class);
+        HANDLERS.put(RefreshTableMetadataStatement.class.getName(), RefreshTableMetadataHandler.class);
+        HANDLERS.put(CreateTrafficRuleStatement.class.getName(), CreateTrafficRuleHandler.class);
+        HANDLERS.put(AlterTrafficRuleStatement.class.getName(), AlterTrafficRuleHandler.class);
+        HANDLERS.put(DropTrafficRuleStatement.class.getName(), DropTrafficRuleHandler.class);
+        HANDLERS.put(AlterSQLParserRuleStatement.class.getName(), AlterSQLParserRuleHandler.class);
+        HANDLERS.put(AlterTransactionRuleStatement.class.getName(), AlterTransactionRuleHandler.class);
+        HANDLERS.put(PrepareDistSQLStatement.class.getName(), PrepareDistSQLHandler.class);
+        HANDLERS.put(ApplyDistSQLStatement.class.getName(), ApplyDistSQLHandler.class);
+        HANDLERS.put(DiscardDistSQLStatement.class.getName(), DiscardDistSQLHandler.class);
+        HANDLERS.put(ImportDatabaseConfigurationStatement.class.getName(), ImportDatabaseConfigurationHandler.class);
+        HANDLERS.put(ShowInstanceStatement.class.getName(), ShowInstanceHandler.class);
+        HANDLERS.put(ShowInstanceModeStatement.class.getName(), ShowInstanceModeHandler.class);
+        HANDLERS.put(CountInstanceRulesStatement.class.getName(), CountInstanceRulesHandler.class);
+        HANDLERS.put(ShowVariableStatement.class.getName(), ShowVariableHandler.class);
+        HANDLERS.put(ShowReadwriteSplittingReadResourcesStatement.class.getName(), ShowReadwriteSplittingReadResourcesHandler.class);
+        HANDLERS.put(ShowAuthorityRuleStatement.class.getName(), ShowAuthorityRuleHandler.class);
+        HANDLERS.put(ShowSQLParserRuleStatement.class.getName(), ShowSQLParserRuleHandler.class);
+        HANDLERS.put(ShowTableMetadataStatement.class.getName(), ShowTableMetadataHandler.class);
+        HANDLERS.put(ShowTrafficRulesStatement.class.getName(), ShowTrafficRulesHandler.class);
+        HANDLERS.put(ShowTransactionRuleStatement.class.getName(), ShowTransactionRuleHandler.class);
+        HANDLERS.put(ExportDatabaseConfigurationStatement.class.getName(), ExportDatabaseConfigurationHandler.class);
+        HANDLERS.put(ParseStatement.class.getName(), ParseDistSQLBackendHandler.class);
+        HANDLERS.put(PreviewStatement.class.getName(), PreviewBackendHandler.class);
+        HANDLERS.put(FormatStatement.class.getName(), FormatHandler.class);
     }
     
     /**
@@ -164,7 +154,7 @@ public final class RALBackendHandlerFactory {
         if (sqlStatement instanceof UpdatableScalingRALStatement) {
             return new UpdatableScalingRALBackendHandler((UpdatableScalingRALStatement) sqlStatement);
         }
-        return getHandler(sqlStatement, new HandlerParameter(sqlStatement, connectionSession));
+        return getHandler(sqlStatement, connectionSession);
     }
     
     private static RALBackendHandler newInstance(final Class<? extends RALBackendHandler> clazz) {
@@ -175,11 +165,13 @@ public final class RALBackendHandlerFactory {
         }
     }
     
-    private static RALBackendHandler getHandler(final RALStatement sqlStatement, final HandlerParameter<RALStatement> parameter) {
-        Class<? extends RALBackendHandler> clazz = UPDATABLE_HANDLER_MAP.getOrDefault(sqlStatement.getClass().getName(), QUERYABLE_HANDLER_MAP.get(sqlStatement.getClass().getName()));
+    private static RALBackendHandler<?> getHandler(final RALStatement sqlStatement, final ConnectionSession connectionSession) {
+        Class<? extends RALBackendHandler> clazz = HANDLERS.get(sqlStatement.getClass().getName());
         if (null == clazz) {
-            throw new UnsupportedOperationException(String.format("Unsupported statement : %s", sqlStatement.getClass().getCanonicalName()));
+            throw new UnsupportedOperationException(String.format("Unsupported SQL statement : %s", sqlStatement.getClass().getCanonicalName()));
         }
-        return newInstance(clazz).init(parameter);
+        RALBackendHandler<?> result = newInstance(clazz);
+        result.init(new HandlerParameter(sqlStatement, connectionSession));
+        return result;
     }
 }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java
index a302748a762..862dc93e72c 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/UpdatableRALBackendHandler.java
@@ -24,9 +24,11 @@ import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
 
 /**
- * Updatable RAL backend handler .
+ * Updatable RAL backend handler.
+ * 
+ * @param <E> type of RAL Statement
  */
-public abstract class UpdatableRALBackendHandler<E extends RALStatement, R extends UpdatableRALBackendHandler> extends RALBackendHandler<E, R> {
+public abstract class UpdatableRALBackendHandler<E extends RALStatement> extends RALBackendHandler<E> {
     
     @Override
     protected final ResponseHeader handle(final ContextManager contextManager, final E sqlStatement) throws DistSQLException {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java
index 4f6077d9070..594ec72f6a4 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/FormatHandler.java
@@ -35,7 +35,7 @@ import java.util.Properties;
 /**
  * Format handler.
  */
-public final class FormatHandler extends QueryableRALBackendHandler<FormatStatement, FormatHandler> {
+public final class FormatHandler extends QueryableRALBackendHandler<FormatStatement> {
     
     private static final String FORMATTED_RESULT = "formatted_result";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java
index 0eb00f3f326..f2f0b9a655f 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/ParseDistSQLBackendHandler.java
@@ -39,7 +39,7 @@ import java.util.Optional;
 /**
  * Parse dist sql backend handler.
  */
-public final class ParseDistSQLBackendHandler extends QueryableRALBackendHandler<ParseStatement, ParseDistSQLBackendHandler> {
+public final class ParseDistSQLBackendHandler extends QueryableRALBackendHandler<ParseStatement> {
     
     private static final String PARSED_STATEMENT = "parsed_statement";
     
@@ -48,9 +48,9 @@ public final class ParseDistSQLBackendHandler extends QueryableRALBackendHandler
     private ConnectionSession connectionSession;
     
     @Override
-    public ParseDistSQLBackendHandler init(final HandlerParameter<ParseStatement> parameter) {
+    public void init(final HandlerParameter<ParseStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewBackendHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewBackendHandler.java
index 5d4e4fd12a7..3bb943f2bdb 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewBackendHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advanced/PreviewBackendHandler.java
@@ -76,7 +76,7 @@ import java.util.stream.Collectors;
 /**
  * Preview backend handler.
  */
-public final class PreviewBackendHandler extends QueryableRALBackendHandler<PreviewStatement, PreviewBackendHandler> {
+public final class PreviewBackendHandler extends QueryableRALBackendHandler<PreviewStatement> {
     
     private static final String DATA_SOURCE_NAME = "data_source_name";
     
@@ -87,9 +87,9 @@ public final class PreviewBackendHandler extends QueryableRALBackendHandler<Prev
     private final KernelProcessor kernelProcessor = new KernelProcessor();
     
     @Override
-    public PreviewBackendHandler init(final HandlerParameter<PreviewStatement> parameter) {
+    public void init(final HandlerParameter<PreviewStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesHandler.java
index 39942feea4f..18f0254f554 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesHandler.java
@@ -45,7 +45,7 @@ import java.util.function.Supplier;
 /**
  * Count instance rules handler.
  */
-public final class CountInstanceRulesHandler extends QueryableRALBackendHandler<CountInstanceRulesStatement, CountInstanceRulesHandler> {
+public final class CountInstanceRulesHandler extends QueryableRALBackendHandler<CountInstanceRulesStatement> {
     
     private static final int DEFAULT_COUNT = 0;
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandler.java
index fdbf4c727d0..55d21c3fc72 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandler.java
@@ -56,7 +56,7 @@ import java.util.Map.Entry;
 /**
  * Export database configuration handler.
  */
-public final class ExportDatabaseConfigurationHandler extends QueryableRALBackendHandler<ExportDatabaseConfigurationStatement, ExportDatabaseConfigurationHandler> {
+public final class ExportDatabaseConfigurationHandler extends QueryableRALBackendHandler<ExportDatabaseConfigurationStatement> {
     
     private static final String RESULT = "result";
     
@@ -101,9 +101,9 @@ public final class ExportDatabaseConfigurationHandler extends QueryableRALBacken
     }
     
     @Override
-    public ExportDatabaseConfigurationHandler init(final HandlerParameter<ExportDatabaseConfigurationStatement> parameter) {
+    public void init(final HandlerParameter<ExportDatabaseConfigurationStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
index de974d8340f..ad52431b494 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandler.java
@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
 /**
  * Show authority rule handler.
  */
-public final class ShowAuthorityRuleHandler extends QueryableRALBackendHandler<ShowAuthorityRuleStatement, ShowAuthorityRuleHandler> {
+public final class ShowAuthorityRuleHandler extends QueryableRALBackendHandler<ShowAuthorityRuleStatement> {
     
     private static final String USERS = "users";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java
index b9223a36282..f9c567a76c4 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceHandler.java
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
 /**
  * Show instance handler.
  */
-public final class ShowInstanceHandler extends QueryableRALBackendHandler<ShowInstanceStatement, ShowInstanceHandler> {
+public final class ShowInstanceHandler extends QueryableRALBackendHandler<ShowInstanceStatement> {
     
     private static final String DELIMITER = "@";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java
index a803bd333b2..5aa1a07a0bf 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandler.java
@@ -33,7 +33,7 @@ import java.util.List;
 /**
  * Show instance mode handler.
  */
-public final class ShowInstanceModeHandler extends QueryableRALBackendHandler<ShowInstanceModeStatement, ShowInstanceModeHandler> {
+public final class ShowInstanceModeHandler extends QueryableRALBackendHandler<ShowInstanceModeStatement> {
     
     private static final String INSTANCE_ID = "instance_id";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java
index efd4f271a6e..23ad76e63a6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowReadwriteSplittingReadResourcesHandler.java
@@ -52,7 +52,7 @@ import java.util.stream.Collectors;
 /**
  * Show readwrite-splitting read resources executor.
  */
-public final class ShowReadwriteSplittingReadResourcesHandler extends QueryableRALBackendHandler<ShowReadwriteSplittingReadResourcesStatement, ShowReadwriteSplittingReadResourcesHandler> {
+public final class ShowReadwriteSplittingReadResourcesHandler extends QueryableRALBackendHandler<ShowReadwriteSplittingReadResourcesStatement> {
     
     private static final String RESOURCE = "resource";
     
@@ -63,9 +63,9 @@ public final class ShowReadwriteSplittingReadResourcesHandler extends QueryableR
     private ConnectionSession connectionSession;
     
     @Override
-    public ShowReadwriteSplittingReadResourcesHandler init(final HandlerParameter<ShowReadwriteSplittingReadResourcesStatement> parameter) {
+    public void init(final HandlerParameter<ShowReadwriteSplittingReadResourcesStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
index 1bb25b2ca7b..b468e3f2fc0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandler.java
@@ -34,7 +34,7 @@ import java.util.Optional;
 /**
  * Show SQL parser rule handler.
  */
-public final class ShowSQLParserRuleHandler extends QueryableRALBackendHandler<ShowSQLParserRuleStatement, ShowSQLParserRuleHandler> {
+public final class ShowSQLParserRuleHandler extends QueryableRALBackendHandler<ShowSQLParserRuleStatement> {
     
     private static final Gson GSON = new Gson();
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java
index 0d205d895d9..7f30717bedc 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandler.java
@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
 /**
  * Show table metadata handler.
  */
-public final class ShowTableMetadataHandler extends QueryableRALBackendHandler<ShowTableMetadataStatement, ShowTableMetadataHandler> {
+public final class ShowTableMetadataHandler extends QueryableRALBackendHandler<ShowTableMetadataStatement> {
     
     private static final String SCHEMA_NAME = "schema_name";
     
@@ -52,9 +52,9 @@ public final class ShowTableMetadataHandler extends QueryableRALBackendHandler<S
     private ConnectionSession connectionSession;
     
     @Override
-    public ShowTableMetadataHandler init(final HandlerParameter<ShowTableMetadataStatement> parameter) {
+    public void init(final HandlerParameter<ShowTableMetadataStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java
index 60b30cd0c62..6a418f71050 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandler.java
@@ -38,7 +38,7 @@ import java.util.Optional;
  * Show traffic rules handler.
  */
 @RequiredArgsConstructor
-public final class ShowTrafficRulesHandler extends QueryableRALBackendHandler<ShowTrafficRulesStatement, ShowTrafficRulesHandler> {
+public final class ShowTrafficRulesHandler extends QueryableRALBackendHandler<ShowTrafficRulesStatement> {
     
     private static final String RULE_NAME = "name";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java
index e887bf44466..927158c6b2a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandler.java
@@ -36,7 +36,7 @@ import java.util.Optional;
  * Show transaction rule handler.
  */
 @RequiredArgsConstructor
-public final class ShowTransactionRuleHandler extends QueryableRALBackendHandler<ShowTransactionRuleStatement, ShowTransactionRuleHandler> {
+public final class ShowTransactionRuleHandler extends QueryableRALBackendHandler<ShowTransactionRuleStatement> {
     
     private static final String DEFAULT_TYPE = "default_type";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java
index fe8934c9fa9..8cffa791e82 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableHandler.java
@@ -39,7 +39,7 @@ import java.util.List;
 /**
  * Show variable handler.
  */
-public final class ShowVariableHandler extends QueryableRALBackendHandler<ShowVariableStatement, ShowVariableHandler> {
+public final class ShowVariableHandler extends QueryableRALBackendHandler<ShowVariableStatement> {
     
     private static final String VARIABLE_NAME = "variable_name";
     
@@ -48,9 +48,9 @@ public final class ShowVariableHandler extends QueryableRALBackendHandler<ShowVa
     private ConnectionSession connectionSession;
     
     @Override
-    public ShowVariableHandler init(final HandlerParameter<ShowVariableStatement> parameter) {
+    public void init(final HandlerParameter<ShowVariableStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java
index 05c68523a46..be8783f86f8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandler.java
@@ -31,7 +31,7 @@ import java.util.Optional;
 /**
  * Alter instance handler.
  */
-public final class AlterInstanceHandler extends UpdatableRALBackendHandler<AlterInstanceStatement, AlterInstanceHandler> {
+public final class AlterInstanceHandler extends UpdatableRALBackendHandler<AlterInstanceStatement> {
     
     private static final String XA_RECOVERY_NODES = "xa_recovery_nodes";
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java
index c35cf3b6c32..9ce86e52ca8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandler.java
@@ -34,7 +34,7 @@ import java.util.Optional;
 /**
  * Alter SQL parser rule statement handler.
  */
-public final class AlterSQLParserRuleHandler extends UpdatableRALBackendHandler<AlterSQLParserRuleStatement, AlterSQLParserRuleHandler> {
+public final class AlterSQLParserRuleHandler extends UpdatableRALBackendHandler<AlterSQLParserRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final AlterSQLParserRuleStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java
index b2729026f89..e82cb61ccb6 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandler.java
@@ -42,7 +42,7 @@ import java.util.stream.Collectors;
 /**
  * Alter traffic rule handler.
  */
-public final class AlterTrafficRuleHandler extends UpdatableRALBackendHandler<AlterTrafficRuleStatement, AlterTrafficRuleHandler> {
+public final class AlterTrafficRuleHandler extends UpdatableRALBackendHandler<AlterTrafficRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final AlterTrafficRuleStatement sqlStatement) throws DistSQLException {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java
index 3699a266eff..b74b4252bf0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandler.java
@@ -35,7 +35,7 @@ import java.util.Optional;
 /**
  * Alter transaction rule statement handler.
  */
-public final class AlterTransactionRuleHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement, AlterTrafficRuleHandler> {
+public final class AlterTransactionRuleHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java
index 1783ca71265..9c509f9e88e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ApplyDistSQLHandler.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
 /**
  * Apply dist sql statement handler.
  */
-public final class ApplyDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement, AlterTrafficRuleHandler> {
+public final class ApplyDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java
index 3ece9feb9fc..7453c0df7d3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandler.java
@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
 /**
  * Create traffic rule handler.
  */
-public final class CreateTrafficRuleHandler extends UpdatableRALBackendHandler<CreateTrafficRuleStatement, CreateTrafficRuleHandler> {
+public final class CreateTrafficRuleHandler extends UpdatableRALBackendHandler<CreateTrafficRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final CreateTrafficRuleStatement sqlStatement) throws DistSQLException {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java
index 0d5fc016550..6f850ab5792 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DiscardDistSQLHandler.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
 /**
  * Discard dist sql statement handler.
  */
-public final class DiscardDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement, AlterTrafficRuleHandler> {
+public final class DiscardDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java
index 93bace1aea2..72fea003d52 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandler.java
@@ -36,7 +36,7 @@ import java.util.stream.Collectors;
 /**
  * Drop traffic rule statement handler.
  */
-public final class DropTrafficRuleHandler extends UpdatableRALBackendHandler<DropTrafficRuleStatement, DropTrafficRuleHandler> {
+public final class DropTrafficRuleHandler extends UpdatableRALBackendHandler<DropTrafficRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final DropTrafficRuleStatement sqlStatement) throws DistSQLException {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java
index 1d67e9b86e5..344c77ca7dc 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandler.java
@@ -74,7 +74,7 @@ import java.util.stream.Collectors;
 /**
  * Import database configuration handler.
  */
-public final class ImportDatabaseConfigurationHandler extends UpdatableRALBackendHandler<ImportDatabaseConfigurationStatement, ImportDatabaseConfigurationHandler> {
+public final class ImportDatabaseConfigurationHandler extends UpdatableRALBackendHandler<ImportDatabaseConfigurationStatement> {
     
     private final DataSourcePropertiesValidator validator = new DataSourcePropertiesValidator();
     
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java
index b4638131b9d..372e3786a68 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/LabelInstanceHandler.java
@@ -35,7 +35,7 @@ import java.util.Optional;
 /**
  * Label instance handler.
  */
-public final class LabelInstanceHandler extends UpdatableRALBackendHandler<LabelInstanceStatement, LabelInstanceHandler> {
+public final class LabelInstanceHandler extends UpdatableRALBackendHandler<LabelInstanceStatement> {
     
     @Override
     public void update(final ContextManager contextManager, final LabelInstanceStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java
index 87ca8ebe708..7ffb2e99698 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/PrepareDistSQLHandler.java
@@ -24,7 +24,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
 /**
  * Prepare dist sql statement handler.
  */
-public final class PrepareDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement, AlterTrafficRuleHandler> {
+public final class PrepareDistSQLHandler extends UpdatableRALBackendHandler<AlterTransactionRuleStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final AlterTransactionRuleStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java
index 908caea7312..be5a0c05bb4 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/RefreshTableMetadataHandler.java
@@ -31,14 +31,14 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
 /**
  * Refresh table metadata handler.
  */
-public final class RefreshTableMetadataHandler extends UpdatableRALBackendHandler<RefreshTableMetadataStatement, RefreshTableMetadataHandler> {
+public final class RefreshTableMetadataHandler extends UpdatableRALBackendHandler<RefreshTableMetadataStatement> {
     
     private ConnectionSession connectionSession;
     
     @Override
-    public RefreshTableMetadataHandler init(final HandlerParameter<RefreshTableMetadataStatement> parameter) {
+    public void init(final HandlerParameter<RefreshTableMetadataStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java
index df958e0fc57..197b82f1c0b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetInstanceStatusHandler.java
@@ -28,7 +28,7 @@ import org.apache.shardingsphere.proxy.backend.text.distsql.ral.UpdatableRALBack
 /**
  * Set instance status handler.
  */
-public final class SetInstanceStatusHandler extends UpdatableRALBackendHandler<SetInstanceStatusStatement, SetInstanceStatusHandler> {
+public final class SetInstanceStatusHandler extends UpdatableRALBackendHandler<SetInstanceStatusStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final SetInstanceStatusStatement sqlStatement) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java
index f70878fbaac..1b62ba96a31 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetReadwriteSplittingStatusHandler.java
@@ -54,16 +54,16 @@ import java.util.stream.Collectors;
 /**
  * Set readwrite-splitting status handler.
  */
-public final class SetReadwriteSplittingStatusHandler extends UpdatableRALBackendHandler<SetReadwriteSplittingStatusStatement, SetReadwriteSplittingStatusHandler> {
+public final class SetReadwriteSplittingStatusHandler extends UpdatableRALBackendHandler<SetReadwriteSplittingStatusStatement> {
     
     private static final String DISABLE = "DISABLE";
     
     private ConnectionSession connectionSession;
     
     @Override
-    public SetReadwriteSplittingStatusHandler init(final HandlerParameter<SetReadwriteSplittingStatusStatement> parameter) {
+    public void init(final HandlerParameter<SetReadwriteSplittingStatusStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java
index 9549961dc41..11908844aad 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableHandler.java
@@ -41,14 +41,14 @@ import java.util.Properties;
 /**
  * Set variable statement handler.
  */
-public final class SetVariableHandler extends UpdatableRALBackendHandler<SetVariableStatement, SetVariableHandler> {
+public final class SetVariableHandler extends UpdatableRALBackendHandler<SetVariableStatement> {
     
     private ConnectionSession connectionSession;
     
     @Override
-    public SetVariableHandler init(final HandlerParameter<SetVariableStatement> parameter) {
+    public void init(final HandlerParameter<SetVariableStatement> parameter) {
+        super.init(parameter);
         connectionSession = parameter.getConnectionSession();
-        return super.init(parameter);
     }
     
     @Override
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java
index e59b6e2bcc9..8f38d1cb690 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/UnlabelInstanceHandler.java
@@ -37,7 +37,7 @@ import java.util.Optional;
 /**
  * Unlabel instance handler.
  */
-public final class UnlabelInstanceHandler extends UpdatableRALBackendHandler<UnlabelInstanceStatement, UnlabelInstanceHandler> {
+public final class UnlabelInstanceHandler extends UpdatableRALBackendHandler<UnlabelInstanceStatement> {
     
     @Override
     protected void update(final ContextManager contextManager, final UnlabelInstanceStatement sqlStatement) throws DistSQLException {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLBackendHandlerTest.java
index 46c4a4e1c1e..6bf67060610 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/advance/ParseDistSQLBackendHandlerTest.java
@@ -67,7 +67,8 @@ public final class ParseDistSQLBackendHandlerTest extends ProxyContextRestorer {
     public void assertGetRowData() throws SQLException {
         String sql = "select * from t_order";
         ParseStatement parseStatement = new ParseStatement(sql);
-        ParseDistSQLBackendHandler parseDistSQLBackendHandler = new ParseDistSQLBackendHandler().init(new HandlerParameter<>(parseStatement, connectionSession));
+        ParseDistSQLBackendHandler parseDistSQLBackendHandler = new ParseDistSQLBackendHandler();
+        parseDistSQLBackendHandler.init(new HandlerParameter<>(parseStatement, connectionSession));
         parseDistSQLBackendHandler.execute();
         parseDistSQLBackendHandler.next();
         SQLStatement statement = sqlParserRule.getSQLParserEngine("MySQL").parse(sql, false);
@@ -79,7 +80,8 @@ public final class ParseDistSQLBackendHandlerTest extends ProxyContextRestorer {
     public void assertExecute() throws SQLException {
         String sql = "wrong sql";
         ParseStatement parseStatement = new ParseStatement(sql);
-        ParseDistSQLBackendHandler parseDistSQLBackendHandler = new ParseDistSQLBackendHandler().init(new HandlerParameter<>(parseStatement, connectionSession));
+        ParseDistSQLBackendHandler parseDistSQLBackendHandler = new ParseDistSQLBackendHandler();
+        parseDistSQLBackendHandler.init(new HandlerParameter<>(parseStatement, connectionSession));
         parseDistSQLBackendHandler.execute();
     }
 }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesTest.java
index 8e70cbeae60..344c5226853 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/CountInstanceRulesTest.java
@@ -119,7 +119,8 @@ public final class CountInstanceRulesTest extends ProxyContextRestorer {
     
     @Test
     public void assertGetRowData() throws SQLException {
-        CountInstanceRulesHandler handler = new CountInstanceRulesHandler().init(new RALBackendHandler.HandlerParameter<>(new CountInstanceRulesStatement(), null));
+        CountInstanceRulesHandler handler = new CountInstanceRulesHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new CountInstanceRulesStatement(), null));
         handler.execute();
         handler.next();
         Collection<Object> actual = handler.getRowData();
@@ -166,7 +167,8 @@ public final class CountInstanceRulesTest extends ProxyContextRestorer {
     
     @Test
     public void assertGetRowDataWithoutConfiguration() throws SQLException {
-        CountInstanceRulesHandler handler = new CountInstanceRulesHandler().init(new RALBackendHandler.HandlerParameter<>(new CountInstanceRulesStatement(), null));
+        CountInstanceRulesHandler handler = new CountInstanceRulesHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new CountInstanceRulesStatement(), null));
         when(database1.getRuleMetaData().getConfigurations()).thenReturn(Collections.emptyList());
         when(database2.getRuleMetaData().getConfigurations()).thenReturn(Collections.emptyList());
         handler.execute();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandlerTest.java
index 032e60e9dc9..9d9aa14d9a7 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ExportDatabaseConfigurationHandlerTest.java
@@ -70,7 +70,8 @@ public final class ExportDatabaseConfigurationHandlerTest extends ProxyContextRe
     
     @Test
     public void assertExportDatabaseExecutor() throws SQLException {
-        ExportDatabaseConfigurationHandler handler = new ExportDatabaseConfigurationHandler().init(new HandlerParameter<>(createSQLStatement(), mock(ConnectionSession.class)));
+        ExportDatabaseConfigurationHandler handler = new ExportDatabaseConfigurationHandler();
+        handler.init(new HandlerParameter<>(createSQLStatement(), mock(ConnectionSession.class)));
         handler.execute();
         handler.next();
         Collection<Object> data = new ArrayList<>(handler.getRowData());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandlerTest.java
index e6223e42b29..348a9c2fbfd 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowAuthorityRuleHandlerTest.java
@@ -42,13 +42,13 @@ import static org.mockito.Mockito.when;
 
 public final class ShowAuthorityRuleHandlerTest extends ProxyContextRestorer {
     
-    private final ShowAuthorityRuleHandler handler = new ShowAuthorityRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new ShowAuthorityRuleStatement(), null));
-    
     @Test
     public void assertAuthorityRule() throws SQLException {
+        ShowAuthorityRuleHandler handler = new ShowAuthorityRuleHandler();
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData());
         ProxyContext.init(contextManager);
+        handler.init(new RALBackendHandler.HandlerParameter<>(new ShowAuthorityRuleStatement(), null));
         handler.execute();
         handler.next();
         List<Object> data = new ArrayList<>(handler.getRowData());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandlerTest.java
index 4dd9b60042d..c991ca0bde2 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowInstanceModeHandlerTest.java
@@ -45,7 +45,8 @@ public final class ShowInstanceModeHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         InstanceContext instanceContext = createInstanceContext();
         when(contextManager.getInstanceContext()).thenReturn(instanceContext);
-        ShowInstanceModeHandler handler = new ShowInstanceModeHandler().init(new RALBackendHandler.HandlerParameter<>(new ShowInstanceModeStatement(), null));
+        ShowInstanceModeHandler handler = new ShowInstanceModeHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new ShowInstanceModeStatement(), null));
         ProxyContext.init(contextManager);
         handler.execute();
         handler.next();
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandlerTest.java
index b6acb615e31..ae9fc64809b 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowSQLParserRuleHandlerTest.java
@@ -46,7 +46,8 @@ public final class ShowSQLParserRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData());
         ProxyContext.init(contextManager);
-        ShowSQLParserRuleHandler handler = new ShowSQLParserRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new ShowSQLParserRuleStatement(), null));
+        ShowSQLParserRuleHandler handler = new ShowSQLParserRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new ShowSQLParserRuleStatement(), null));
         handler.execute();
         handler.next();
         List<Object> data = new ArrayList<>(handler.getRowData());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandlerTest.java
index 4816a22ddac..c90214bbff0 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTableMetadataHandlerTest.java
@@ -57,7 +57,8 @@ public final class ShowTableMetadataHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         ConnectionSession connectionSession = mock(ConnectionSession.class, RETURNS_DEEP_STUBS);
         when(connectionSession.getDatabaseName()).thenReturn("db_name");
-        ShowTableMetadataHandler handler = new ShowTableMetadataHandler().init(new HandlerParameter<>(createSqlStatement(), connectionSession));
+        ShowTableMetadataHandler handler = new ShowTableMetadataHandler();
+        handler.init(new HandlerParameter<>(createSqlStatement(), connectionSession));
         handler.execute();
         handler.next();
         List<Object> data = new ArrayList<>(handler.getRowData());
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandlerTest.java
index 7a44c5a5a61..57397274deb 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTrafficRulesHandlerTest.java
@@ -49,7 +49,8 @@ public class ShowTrafficRulesHandlerTest extends ProxyContextRestorer {
     public void assertExecutor() throws SQLException {
         ShowTrafficRulesStatement showTrafficRuleStatement = new ShowTrafficRulesStatement();
         showTrafficRuleStatement.setRuleName("rule_name_1");
-        ShowTrafficRulesHandler handler = new ShowTrafficRulesHandler().init(new RALBackendHandler.HandlerParameter<>(showTrafficRuleStatement, null));
+        ShowTrafficRulesHandler handler = new ShowTrafficRulesHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(showTrafficRuleStatement, null));
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findRuleConfigurations(any())).thenReturn(createTrafficRule());
         ProxyContext.init(contextManager);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandlerTest.java
index 499d0d3a8e2..fc278870209 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowTransactionRuleHandlerTest.java
@@ -41,10 +41,10 @@ import static org.mockito.Mockito.when;
 
 public final class ShowTransactionRuleHandlerTest extends ProxyContextRestorer {
     
-    private final ShowTransactionRuleHandler handler = new ShowTransactionRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new ShowTransactionRuleStatement(), null));
-    
     @Test
     public void assertExecutorWithXA() throws SQLException {
+        ShowTransactionRuleHandler handler = new ShowTransactionRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new ShowTransactionRuleStatement(), null));
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("XA", "Atomikos", getProperties()));
         ProxyContext.init(contextManager);
@@ -61,6 +61,8 @@ public final class ShowTransactionRuleHandlerTest extends ProxyContextRestorer {
     
     @Test
     public void assertExecutorWithLocal() throws SQLException {
+        ShowTransactionRuleHandler handler = new ShowTransactionRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new ShowTransactionRuleStatement(), null));
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(getGlobalRuleMetaData("LOCAL", null, null));
         ProxyContext.init(contextManager);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableBackendHandlerTest.java
index 36adca234e7..27cc7a411cf 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/queryable/ShowVariableBackendHandlerTest.java
@@ -63,7 +63,8 @@ public final class ShowVariableBackendHandlerTest extends ProxyContextRestorer {
     @Test
     public void assertShowTransactionType() throws SQLException {
         connectionSession.setCurrentDatabase("db");
-        ShowVariableHandler backendHandler = new ShowVariableHandler().init(new HandlerParameter<>(new ShowVariableStatement("transaction_type"), connectionSession));
+        ShowVariableHandler backendHandler = new ShowVariableHandler();
+        backendHandler.init(new HandlerParameter<>(new ShowVariableStatement("transaction_type"), connectionSession));
         ResponseHeader actual = backendHandler.execute();
         assertThat(actual, instanceOf(QueryResponseHeader.class));
         assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(2));
@@ -76,7 +77,8 @@ public final class ShowVariableBackendHandlerTest extends ProxyContextRestorer {
     @Test
     public void assertShowCachedConnections() throws SQLException {
         connectionSession.setCurrentDatabase("db");
-        ShowVariableHandler backendHandler = new ShowVariableHandler().init(new HandlerParameter<>(new ShowVariableStatement("cached_connections"), connectionSession));
+        ShowVariableHandler backendHandler = new ShowVariableHandler();
+        backendHandler.init(new HandlerParameter<>(new ShowVariableStatement("cached_connections"), connectionSession));
         ResponseHeader actual = backendHandler.execute();
         assertThat(actual, instanceOf(QueryResponseHeader.class));
         assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(2));
@@ -89,7 +91,8 @@ public final class ShowVariableBackendHandlerTest extends ProxyContextRestorer {
     @Test(expected = UnsupportedVariableException.class)
     public void assertShowCachedConnectionFailed() throws SQLException {
         connectionSession.setCurrentDatabase("db");
-        ShowVariableHandler backendHandler = new ShowVariableHandler().init(new HandlerParameter<>(new ShowVariableStatement("cached_connectionss"), connectionSession));
+        ShowVariableHandler backendHandler = new ShowVariableHandler();
+        backendHandler.init(new HandlerParameter<>(new ShowVariableStatement("cached_connectionss"), connectionSession));
         backendHandler.execute();
     }
     
@@ -97,7 +100,8 @@ public final class ShowVariableBackendHandlerTest extends ProxyContextRestorer {
     public void assertShowAgentPluginsEnabled() throws SQLException {
         SystemPropertyUtil.setSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.TRUE.toString());
         connectionSession.setCurrentDatabase("db");
-        ShowVariableHandler backendHandler = new ShowVariableHandler().init(new HandlerParameter<>(new ShowVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name()), connectionSession));
+        ShowVariableHandler backendHandler = new ShowVariableHandler();
+        backendHandler.init(new HandlerParameter<>(new ShowVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name()), connectionSession));
         ResponseHeader actual = backendHandler.execute();
         assertThat(actual, instanceOf(QueryResponseHeader.class));
         assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(2));
@@ -117,7 +121,8 @@ public final class ShowVariableBackendHandlerTest extends ProxyContextRestorer {
         Properties props = new Properties();
         props.put("sql-show", Boolean.TRUE.toString());
         when(metaDataContexts.getMetaData().getProps()).thenReturn(new ConfigurationProperties(props));
-        ShowVariableHandler backendHandler = new ShowVariableHandler().init(new HandlerParameter<>(new ShowVariableStatement("SQL_SHOW"), connectionSession));
+        ShowVariableHandler backendHandler = new ShowVariableHandler();
+        backendHandler.init(new HandlerParameter<>(new ShowVariableStatement("SQL_SHOW"), connectionSession));
         ResponseHeader actual = backendHandler.execute();
         assertThat(actual, instanceOf(QueryResponseHeader.class));
         assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(2));
@@ -135,7 +140,8 @@ public final class ShowVariableBackendHandlerTest extends ProxyContextRestorer {
         MetaDataContexts metaDataContexts = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         when(metaDataContexts.getMetaData().getProps()).thenReturn(new ConfigurationProperties(new Properties()));
-        ShowVariableHandler backendHandler = new ShowVariableHandler().init(new HandlerParameter<>(new ShowVariableStatement(), connectionSession));
+        ShowVariableHandler backendHandler = new ShowVariableHandler();
+        backendHandler.init(new HandlerParameter<>(new ShowVariableStatement(), connectionSession));
         ResponseHeader actual = backendHandler.execute();
         assertThat(actual, instanceOf(QueryResponseHeader.class));
         assertThat(((QueryResponseHeader) actual).getQueryHeaders().size(), is(2));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandlerTest.java
index 8baf2bd31b7..e17c7edd67d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterInstanceHandlerTest.java
@@ -40,7 +40,9 @@ public final class AlterInstanceHandlerTest extends ProxyContextRestorer {
         String instanceId = "instance_id";
         String key = "key_1";
         String value = "value_1";
-        new AlterInstanceHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(instanceId, key, value), null)).execute();
+        AlterInstanceHandler handler = new AlterInstanceHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(instanceId, key, value), null));
+        handler.execute();
     }
     
     @Test(expected = UnsupportedOperationException.class)
@@ -51,7 +53,9 @@ public final class AlterInstanceHandlerTest extends ProxyContextRestorer {
         String instanceId = "instance_id";
         String key = "xa_recovery_nodes";
         String value = "value_1";
-        new AlterInstanceHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(instanceId, key, value), null)).execute();
+        AlterInstanceHandler handler = new AlterInstanceHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(instanceId, key, value), null));
+        handler.execute();
     }
     
     @Test(expected = UnsupportedOperationException.class)
@@ -63,7 +67,9 @@ public final class AlterInstanceHandlerTest extends ProxyContextRestorer {
         String instanceId = "instance_id";
         String key = "xa_recovery_nodes";
         String value = "value_1";
-        new AlterInstanceHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(instanceId, key, value), null)).execute();
+        AlterInstanceHandler handler = new AlterInstanceHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(instanceId, key, value), null));
+        handler.execute();
     }
     
     private AlterInstanceStatement getSQLStatement(final String instanceId, final String key, final String value) {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandlerTest.java
index 2cd8e17d693..ee14a9a0c52 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterSQLParserRuleHandlerTest.java
@@ -48,7 +48,9 @@ public final class AlterSQLParserRuleHandlerTest extends ProxyContextRestorer {
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findRuleConfigurations(SQLParserRuleConfiguration.class)).thenReturn(Collections.emptyList());
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getConfigurations()).thenReturn(new LinkedList<>());
         ProxyContext.init(contextManager);
-        new AlterSQLParserRuleHandler().init(new RALBackendHandler.HandlerParameter<>(createSQLStatement(), null)).execute();
+        AlterSQLParserRuleHandler handler = new AlterSQLParserRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(createSQLStatement(), null));
+        handler.execute();
         SQLParserRuleConfiguration actual = (SQLParserRuleConfiguration) contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getConfigurations().iterator().next();
         assertTrue(actual.isSqlCommentParseEnabled());
         assertThat(actual.getSqlStatementCache().getInitialCapacity(), is(1000));
@@ -66,7 +68,9 @@ public final class AlterSQLParserRuleHandlerTest extends ProxyContextRestorer {
                 .getMetaData().getGlobalRuleMetaData().findRuleConfigurations(SQLParserRuleConfiguration.class)).thenReturn(Collections.singleton(sqlParserRuleConfig));
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getConfigurations()).thenReturn(globalRuleConfigs);
         ProxyContext.init(contextManager);
-        new AlterSQLParserRuleHandler().init(new RALBackendHandler.HandlerParameter<>(createSQLStatement(), null)).execute();
+        AlterSQLParserRuleHandler handler = new AlterSQLParserRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(createSQLStatement(), null));
+        handler.execute();
         SQLParserRuleConfiguration actual = (SQLParserRuleConfiguration) contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getConfigurations().iterator().next();
         assertTrue(actual.isSqlCommentParseEnabled());
         assertThat(actual.getSqlStatementCache().getInitialCapacity(), is(1000));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandlerTest.java
index d86458cb46a..c557338bac3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTrafficRuleHandlerTest.java
@@ -53,7 +53,9 @@ public final class AlterTrafficRuleHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         TrafficRuleSegment trafficRuleSegment = new TrafficRuleSegment("input_rule_name", Arrays.asList("olap", "order_by"),
                 new AlgorithmSegment("invalid", new Properties()), new AlgorithmSegment("invalid", new Properties()));
-        new AlterTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment), null)).execute();
+        AlterTrafficRuleHandler handler = new AlterTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment), null));
+        handler.execute();
     }
     
     @Test(expected = InvalidAlgorithmConfigurationException.class)
@@ -63,7 +65,9 @@ public final class AlterTrafficRuleHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         TrafficRuleSegment trafficRuleSegment = new TrafficRuleSegment("rule_name_1", Arrays.asList("olap", "order_by"),
                 new AlgorithmSegment("invalid", new Properties()), new AlgorithmSegment("invalid", new Properties()));
-        new AlterTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment), null)).execute();
+        AlterTrafficRuleHandler handler = new AlterTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment), null));
+        handler.execute();
     }
     
     @Test(expected = RequiredRuleMissedException.class)
@@ -73,7 +77,9 @@ public final class AlterTrafficRuleHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         TrafficRuleSegment trafficRuleSegment = new TrafficRuleSegment("rule_name_3", Arrays.asList("olap", "order_by"),
                 new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()), new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()));
-        new AlterTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment), null)).execute();
+        AlterTrafficRuleHandler handler = new AlterTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment), null));
+        handler.execute();
     }
     
     @Test
@@ -85,7 +91,9 @@ public final class AlterTrafficRuleHandlerTest extends ProxyContextRestorer {
                 new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()), new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()));
         TrafficRuleSegment trafficRuleSegment2 = new TrafficRuleSegment("rule_name_2", Collections.emptyList(),
                 new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()), null);
-        new AlterTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment1, trafficRuleSegment2), null)).execute();
+        AlterTrafficRuleHandler handler = new AlterTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(getSQLStatement(trafficRuleSegment1, trafficRuleSegment2), null));
+        handler.execute();
     }
     
     private Collection<RuleConfiguration> createTrafficRule() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandlerTest.java
index bdd0f9d6608..c645a6b0f20 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/CreateTrafficRuleHandlerTest.java
@@ -51,7 +51,10 @@ public final class CreateTrafficRuleHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         TrafficRuleSegment trafficRuleSegment = new TrafficRuleSegment("input_rule_name", Arrays.asList("olap", "order_by"),
                 new AlgorithmSegment("invalid", new Properties()), new AlgorithmSegment("invalid", new Properties()));
-        new CreateTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Collections.singletonList(trafficRuleSegment)), null)).execute();
+        CreateTrafficRuleHandler handler = new CreateTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Collections.singletonList(trafficRuleSegment)), null));
+        handler.execute();
+        
     }
     
     @Test(expected = InvalidAlgorithmConfigurationException.class)
@@ -61,7 +64,9 @@ public final class CreateTrafficRuleHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         TrafficRuleSegment trafficRuleSegment = new TrafficRuleSegment("input_rule_name", Arrays.asList("olap", "order_by"),
                 new AlgorithmSegment("invalid", new Properties()), new AlgorithmSegment("invalid", new Properties()));
-        new CreateTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Collections.singletonList(trafficRuleSegment)), null)).execute();
+        CreateTrafficRuleHandler handler = new CreateTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Collections.singletonList(trafficRuleSegment)), null));
+        handler.execute();
     }
     
     @Test(expected = DuplicateRuleException.class)
@@ -71,7 +76,9 @@ public final class CreateTrafficRuleHandlerTest extends ProxyContextRestorer {
         ProxyContext.init(contextManager);
         TrafficRuleSegment trafficRuleSegment = new TrafficRuleSegment("rule_name_1", Arrays.asList("olap", "order_by"),
                 new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()), new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()));
-        new CreateTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Collections.singletonList(trafficRuleSegment)), null)).execute();
+        CreateTrafficRuleHandler handler = new CreateTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Collections.singletonList(trafficRuleSegment)), null));
+        handler.execute();
     }
     
     @Test
@@ -83,7 +90,9 @@ public final class CreateTrafficRuleHandlerTest extends ProxyContextRestorer {
                 new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()), new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()));
         TrafficRuleSegment trafficRuleSegment2 = new TrafficRuleSegment("rule_name_4", Collections.emptyList(),
                 new AlgorithmSegment("DISTSQL.FIXTURE", new Properties()), null);
-        new CreateTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Arrays.asList(trafficRuleSegment1, trafficRuleSegment2)), null)).execute();
+        CreateTrafficRuleHandler handler = new CreateTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new CreateTrafficRuleStatement(Arrays.asList(trafficRuleSegment1, trafficRuleSegment2)), null));
+        handler.execute();
     }
     
     private RuleConfiguration createTrafficRuleConfiguration() {
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandlerTest.java
index d30e70d61fa..8f02227f48d 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/DropTrafficRuleHandlerTest.java
@@ -53,7 +53,9 @@ public final class DropTrafficRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findRuleConfigurations(any())).thenReturn(new LinkedList<>());
         ProxyContext.init(contextManager);
-        new DropTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name"), false), null)).execute();
+        DropTrafficRuleHandler handler = new DropTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name"), false), null));
+        handler.execute();
     }
     
     @Test
@@ -61,7 +63,9 @@ public final class DropTrafficRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findRuleConfigurations(any())).thenReturn(new LinkedList<>());
         ProxyContext.init(contextManager);
-        new DropTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name"), true), null)).execute();
+        DropTrafficRuleHandler handler = new DropTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name"), true), null));
+        handler.execute();
     }
     
     @Test(expected = RequiredRuleMissedException.class)
@@ -69,7 +73,9 @@ public final class DropTrafficRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findRuleConfigurations(any())).thenReturn(Collections.singleton(createTrafficRuleConfiguration()));
         ProxyContext.init(contextManager);
-        new DropTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name"), false), null)).execute();
+        DropTrafficRuleHandler handler = new DropTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name"), false), null));
+        handler.execute();
     }
     
     @Test
@@ -77,7 +83,9 @@ public final class DropTrafficRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(any())).thenReturn(Optional.of(createTrafficRuleConfiguration()));
         ProxyContext.init(contextManager);
-        new DropTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name_1"), false), null)).execute();
+        DropTrafficRuleHandler handler = new DropTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name_1"), false), null));
+        handler.execute();
         Optional<TrafficRuleConfiguration> ruleConfig = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(TrafficRuleConfiguration.class);
         assertTrue(ruleConfig.isPresent());
         assertThat(ruleConfig.get().getTrafficStrategies().size(), is(1));
@@ -93,7 +101,9 @@ public final class DropTrafficRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(any())).thenReturn(Optional.of(createTrafficRuleConfiguration()));
         ProxyContext.init(contextManager);
-        new DropTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name_1"), false), null)).execute();
+        DropTrafficRuleHandler handler = new DropTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name_1"), false), null));
+        handler.execute();
         Optional<TrafficRuleConfiguration> ruleConfig = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(TrafficRuleConfiguration.class);
         assertTrue(ruleConfig.isPresent());
         assertThat(ruleConfig.get().getTrafficStrategies().size(), is(1));
@@ -109,7 +119,9 @@ public final class DropTrafficRuleHandlerTest extends ProxyContextRestorer {
         ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
         when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(any())).thenReturn(Optional.of(createTrafficRuleConfiguration()));
         ProxyContext.init(contextManager);
-        new DropTrafficRuleHandler().init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name_3"), true), null)).execute();
+        DropTrafficRuleHandler handler = new DropTrafficRuleHandler();
+        handler.init(new RALBackendHandler.HandlerParameter<>(new DropTrafficRuleStatement(Collections.singletonList("rule_name_3"), true), null));
+        handler.execute();
         Optional<TrafficRuleConfiguration> ruleConfig = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().findSingleRuleConfiguration(TrafficRuleConfiguration.class);
         assertTrue(ruleConfig.isPresent());
         assertThat(ruleConfig.get().getTrafficStrategies().size(), is(2));
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandlerTest.java
index 015cd45cc3c..e7b3c34da9a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/ImportDatabaseConfigurationHandlerTest.java
@@ -129,7 +129,8 @@ public final class ImportDatabaseConfigurationHandlerTest extends ProxyContextRe
     }
     
     private void init(final String feature) throws Exception {
-        importDatabaseConfigurationHandler = new ImportDatabaseConfigurationHandler().init(getParameter(featureMap.get(feature), mock(ConnectionSession.class)));
+        ImportDatabaseConfigurationHandler handler = importDatabaseConfigurationHandler = new ImportDatabaseConfigurationHandler();
+        handler.init(getParameter(featureMap.get(feature), mock(ConnectionSession.class)));
         Field validatorField = importDatabaseConfigurationHandler.getClass().getDeclaredField("validator");
         validatorField.setAccessible(true);
         validatorField.set(importDatabaseConfigurationHandler, validator);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableBackendHandlerTest.java
index cde1a405b30..d4ba71f80d3 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableBackendHandlerTest.java
@@ -95,7 +95,9 @@ public final class SetVariableBackendHandlerTest extends ProxyContextRestorer {
     @Test
     public void assertSwitchTransactionTypeXA() throws SQLException {
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        ResponseHeader actual = new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "XA"), connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "XA"), connectionSession));
+        ResponseHeader actual = handler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
         assertThat(connectionSession.getTransactionStatus().getTransactionType(), is(TransactionType.XA));
     }
@@ -103,7 +105,9 @@ public final class SetVariableBackendHandlerTest extends ProxyContextRestorer {
     @Test
     public void assertSwitchTransactionTypeBASE() throws SQLException {
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        ResponseHeader actual = new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "BASE"), connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "BASE"), connectionSession));
+        ResponseHeader actual = handler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
         assertThat(connectionSession.getTransactionStatus().getTransactionType(), is(TransactionType.BASE));
     }
@@ -111,42 +115,54 @@ public final class SetVariableBackendHandlerTest extends ProxyContextRestorer {
     @Test
     public void assertSwitchTransactionTypeLOCAL() throws SQLException {
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        ResponseHeader actual = new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "LOCAL"), connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "LOCAL"), connectionSession));
+        ResponseHeader actual = handler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
         assertThat(connectionSession.getTransactionStatus().getTransactionType(), is(TransactionType.LOCAL));
     }
     
     @Test(expected = UnsupportedVariableException.class)
     public void assertSwitchTransactionTypeFailed() throws SQLException {
+        SetVariableHandler handler = new SetVariableHandler();
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "XXX"), connectionSession)).execute();
+        handler.init(new HandlerParameter<>(new SetVariableStatement("transaction_type", "XXX"), connectionSession));
+        handler.execute();
     }
     
     @Test(expected = UnsupportedVariableException.class)
     public void assertNotSupportedVariable() throws SQLException {
-        new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement("@@session", "XXX"), connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(new HandlerParameter<>(new SetVariableStatement("@@session", "XXX"), connectionSession));
+        handler.execute();
     }
     
     @Test
     public void assertSetAgentPluginsEnabledTrue() throws SQLException {
+        SetVariableHandler handler = new SetVariableHandler();
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        ResponseHeader actual = new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.TRUE.toString()), null)).execute();
+        handler.init(new HandlerParameter<>(new SetVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.TRUE.toString()), null));
+        ResponseHeader actual = handler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
         assertThat(SystemPropertyUtil.getSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.FALSE.toString()), is(Boolean.TRUE.toString()));
     }
     
     @Test
     public void assertSetAgentPluginsEnabledFalse() throws SQLException {
+        SetVariableHandler handler = new SetVariableHandler();
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        ResponseHeader actual = new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.FALSE.toString()), null)).execute();
+        handler.init(new HandlerParameter<>(new SetVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.FALSE.toString()), null));
+        ResponseHeader actual = handler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
         assertThat(SystemPropertyUtil.getSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.FALSE.toString()), is(Boolean.FALSE.toString()));
     }
     
     @Test
     public void assertSetAgentPluginsEnabledFalseWithUnknownValue() throws SQLException {
+        SetVariableHandler handler = new SetVariableHandler();
         connectionSession.setCurrentDatabase(String.format(DATABASE_PATTERN, 0));
-        ResponseHeader actual = new SetVariableHandler().init(new HandlerParameter<>(new SetVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name(), "xxx"), connectionSession)).execute();
+        handler.init(new HandlerParameter<>(new SetVariableStatement(VariableEnum.AGENT_PLUGINS_ENABLED.name(), "xxx"), connectionSession));
+        ResponseHeader actual = handler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
         assertThat(SystemPropertyUtil.getSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), Boolean.FALSE.toString()), is(Boolean.FALSE.toString()));
     }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableExecutorTest.java
index 0151206b52a..05641483699 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/SetVariableExecutorTest.java
@@ -50,14 +50,18 @@ public final class SetVariableExecutorTest extends ProxyContextRestorer {
     public void assertExecuteWithTransactionType() throws SQLException {
         SetVariableStatement statement = new SetVariableStatement("transaction_type", "local");
         when(connectionSession.getTransactionStatus()).thenReturn(new TransactionStatus(TransactionType.XA));
-        new SetVariableHandler().init(getParameter(statement, connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(getParameter(statement, connectionSession));
+        handler.execute();
         assertThat(connectionSession.getTransactionStatus().getTransactionType().name(), is(TransactionType.LOCAL.name()));
     }
     
     @Test
     public void assertExecuteWithAgent() throws SQLException {
         SetVariableStatement statement = new SetVariableStatement("AGENT_PLUGINS_ENABLED", Boolean.FALSE.toString());
-        new SetVariableHandler().init(getParameter(statement, connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(getParameter(statement, connectionSession));
+        handler.execute();
         String actualValue = SystemPropertyUtil.getSystemProperty(VariableEnum.AGENT_PLUGINS_ENABLED.name(), "default");
         assertThat(actualValue, is(Boolean.FALSE.toString()));
     }
@@ -67,7 +71,9 @@ public final class SetVariableExecutorTest extends ProxyContextRestorer {
         ContextManager contextManager = new ContextManager(new MetaDataContexts(null), null);
         ProxyContext.init(contextManager);
         SetVariableStatement statement = new SetVariableStatement("proxy_frontend_flush_threshold", "1024");
-        new SetVariableHandler().init(getParameter(statement, connectionSession)).execute();
+        SetVariableHandler handler = new SetVariableHandler();
+        handler.init(getParameter(statement, connectionSession));
+        handler.execute();
         Object actualValue = contextManager.getMetaDataContexts().getMetaData().getProps().getProps().get("proxy-frontend-flush-threshold");
         assertThat(actualValue.toString(), is("1024"));
         assertThat(contextManager.getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_FLUSH_THRESHOLD), is(1024));