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

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


The following commit(s) were added to refs/heads/master by this push:
     new 6b096d0ec04 Refactor DatabaseAwareRALUpdater (#29767)
6b096d0ec04 is described below

commit 6b096d0ec049e278445afaa53841f8824cc62e86
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jan 18 23:38:46 2024 +0800

    Refactor DatabaseAwareRALUpdater (#29767)
    
    * Rename RALUpdater
    
    * Refactor DatabaseAwareRALUpdater
    
    * Refactor DatabaseAwareRALUpdater
    
    * Refactor DatabaseAwareRALUpdater
    
    * Refactor DatabaseAwareRALUpdater
    
    * Refactor DatabaseAwareRALUpdater
---
 .../type/ral/update/DatabaseAwareRALUpdater.java   |   2 +-
 ...DatabaseRuleRALUpdater.java => RALUpdater.java} |   7 +-
 .../handler/update/DropStreamingUpdater.java       |   6 +-
 .../handler/update/CheckMigrationJobUpdater.java   |   6 +-
 .../handler/update/CommitMigrationUpdater.java     |   6 +-
 .../handler/update/DropMigrationCheckUpdater.java  |   6 +-
 .../handler/update/MigrateTableUpdater.java        |  15 ++-
 .../RegisterMigrationSourceStorageUnitUpdater.java |   6 +-
 .../handler/update/RollbackMigrationUpdater.java   |   6 +-
 .../handler/update/StartMigrationCheckUpdater.java |   6 +-
 .../handler/update/StartMigrationUpdater.java      |   6 +-
 .../handler/update/StopMigrationCheckUpdater.java  |   6 +-
 .../handler/update/StopMigrationUpdater.java       |   6 +-
 ...nregisterMigrationSourceStorageUnitUpdater.java |   6 +-
 ...ere.distsql.handler.type.ral.update.RALUpdater} |   0
 .../distsql/ral/RALBackendHandlerFactory.java      |   2 +-
 ...andler.java => UpdatableRALBackendHandler.java} |   8 +-
 ...SplittingStorageUnitStatusStatementUpdater.java | 111 ++++++++++-----------
 .../updatable/AlterTransmissionRuleUpdater.java    |   6 +-
 .../ImportDatabaseConfigurationUpdater.java        |   6 +-
 .../ral/updatable/ImportMetaDataUpdater.java       |   6 +-
 .../ral/updatable/LabelComputeNodeUpdater.java     |   6 +-
 .../distsql/ral/updatable/LockClusterUpdater.java  |   6 +-
 .../updatable/RefreshDatabaseMetaDataUpdater.java  |   6 +-
 .../ral/updatable/RefreshTableMetaDataUpdater.java |  24 ++---
 .../ral/updatable/SetDistVariableUpdater.java      |   6 +-
 .../ral/updatable/SetInstanceStatusUpdater.java    |   6 +-
 .../ral/updatable/UnlabelComputeNodeUpdater.java   |   6 +-
 .../ral/updatable/UnlockClusterUpdater.java        |   8 +-
 ...ere.distsql.handler.type.ral.update.RALUpdater} |   0
 .../handler/ProxyBackendHandlerFactoryTest.java    |   4 +-
 ...ttingStorageUnitStatusStatementUpdaterTest.java |  19 ++--
 .../ImportDatabaseConfigurationUpdaterTest.java    |   2 +-
 .../ral/updatable/ImportMetaDataUpdaterTest.java   |   6 +-
 .../ral/updatable/LabelComputeNodeUpdaterTest.java |   2 +-
 .../ral/updatable/LockClusterUpdaterTest.java      |   6 +-
 .../updatable/RefreshTableMetaDataUpdaterTest.java |  18 ++--
 ...istVariableUpdatableRALBackendHandlerTest.java} |   6 +-
 .../ral/updatable/SetDistVariableUpdaterTest.java  |  10 +-
 .../updatable/SetInstanceStatusUpdaterTest.java    |   8 +-
 .../updatable/UnlabelComputeNodeUpdaterTest.java   |   2 +-
 .../ral/updatable/UnlockClusterUpdaterTest.java    |   4 +-
 42 files changed, 187 insertions(+), 197 deletions(-)

diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseAwareRALUpdater.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseAwareRALUpdater.java
index c00be0baaf5..b15aca45e8b 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseAwareRALUpdater.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseAwareRALUpdater.java
@@ -25,7 +25,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
  * 
  * @param <T> type of SQL statement
  */
-public interface DatabaseAwareRALUpdater<T extends UpdatableRALStatement> 
extends DatabaseRuleRALUpdater<T> {
+public interface DatabaseAwareRALUpdater<T extends UpdatableRALStatement> 
extends RALUpdater<T> {
     
     /**
      * Set database.
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseRuleRALUpdater.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/RALUpdater.java
similarity index 84%
rename from 
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseRuleRALUpdater.java
rename to 
infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/RALUpdater.java
index b3f71567d49..89d83a15f79 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/DatabaseRuleRALUpdater.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/type/ral/update/RALUpdater.java
@@ -24,21 +24,20 @@ import 
org.apache.shardingsphere.infra.spi.type.typed.TypedSPI;
 import java.sql.SQLException;
 
 /**
- * Database rule RAL updater.
+ * RAL updater.
  * 
  * @param <T> type of updatable RAL statement
  */
 @SingletonSPI
-public interface DatabaseRuleRALUpdater<T extends UpdatableRALStatement> 
extends TypedSPI {
+public interface RALUpdater<T extends UpdatableRALStatement> extends TypedSPI {
     
     /**
      * Execute update.
      *
-     * @param databaseName database name
      * @param sqlStatement updatable RAL statement
      * @throws SQLException SQL exception
      */
-    void executeUpdate(String databaseName, T sqlStatement) throws 
SQLException;
+    void executeUpdate(T sqlStatement) throws SQLException;
     
     @Override
     Class<T> getType();
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/handler/update/DropStreamingUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/handler/update/DropStreamingUpdater.java
index 5bfdbaad6ba..cd9b0b75fe2 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/handler/update/DropStreamingUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/cdc/distsql/handler/update/DropStreamingUpdater.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.data.pipeline.cdc.distsql.handler.update;
 import 
org.apache.shardingsphere.data.pipeline.cdc.distsql.statement.DropStreamingStatement;
 import org.apache.shardingsphere.data.pipeline.cdc.api.CDCJobAPI;
 import org.apache.shardingsphere.data.pipeline.core.job.api.TransmissionJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 
 import java.sql.SQLException;
@@ -28,12 +28,12 @@ import java.sql.SQLException;
 /**
  * Drop streaming updater.
  */
-public final class DropStreamingUpdater implements 
DatabaseRuleRALUpdater<DropStreamingStatement> {
+public final class DropStreamingUpdater implements 
RALUpdater<DropStreamingStatement> {
     
     private final CDCJobAPI jobAPI = (CDCJobAPI) 
TypedSPILoader.getService(TransmissionJobAPI.class, "STREAMING");
     
     @Override
-    public void executeUpdate(final String databaseName, final 
DropStreamingStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final DropStreamingStatement sqlStatement) 
throws SQLException {
         jobAPI.drop(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CheckMigrationJobUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CheckMigrationJobUpdater.java
index c23be522d28..97f3af0314b 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CheckMigrationJobUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CheckMigrationJobUpdater.java
@@ -27,7 +27,7 @@ import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.api.Con
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.api.CreateConsistencyCheckJobParameter;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.MigrationJobType;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.config.MigrationJobConfiguration;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import org.apache.shardingsphere.distsql.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.CheckMigrationStatement;
@@ -38,14 +38,14 @@ import java.util.Properties;
 /**
  * Check migration job updater.
  */
-public final class CheckMigrationJobUpdater implements 
DatabaseRuleRALUpdater<CheckMigrationStatement> {
+public final class CheckMigrationJobUpdater implements 
RALUpdater<CheckMigrationStatement> {
     
     private final ConsistencyCheckJobAPI checkJobAPI = new 
ConsistencyCheckJobAPI(new ConsistencyCheckJobType());
     
     private final PipelineJobType migrationJobType = new MigrationJobType();
     
     @Override
-    public void executeUpdate(final String databaseName, final 
CheckMigrationStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final CheckMigrationStatement sqlStatement) 
throws SQLException {
         AlgorithmSegment typeStrategy = sqlStatement.getTypeStrategy();
         String algorithmTypeName = null == typeStrategy ? null : 
typeStrategy.getName();
         Properties algorithmProps = null == typeStrategy ? null : 
typeStrategy.getProps();
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CommitMigrationUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CommitMigrationUpdater.java
index e2965f00491..3347164ba44 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CommitMigrationUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/CommitMigrationUpdater.java
@@ -18,7 +18,7 @@
 package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update;
 
 import org.apache.shardingsphere.data.pipeline.core.job.api.TransmissionJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.CommitMigrationStatement;
 
@@ -27,10 +27,10 @@ import java.sql.SQLException;
 /**
  * Commit migration updater.
  */
-public final class CommitMigrationUpdater implements 
DatabaseRuleRALUpdater<CommitMigrationStatement> {
+public final class CommitMigrationUpdater implements 
RALUpdater<CommitMigrationStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
CommitMigrationStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final CommitMigrationStatement sqlStatement) 
throws SQLException {
         TypedSPILoader.getService(TransmissionJobAPI.class, 
"MIGRATION").commit(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/DropMigrationCheckUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/DropMigrationCheckUpdater.java
index 1abbc81750b..29628a4af64 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/DropMigrationCheckUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/DropMigrationCheckUpdater.java
@@ -19,18 +19,18 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.ConsistencyCheckJobType;
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.api.ConsistencyCheckJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.DropMigrationCheckStatement;
 
 /**
  * Drop migration check updater.
  */
-public final class DropMigrationCheckUpdater implements 
DatabaseRuleRALUpdater<DropMigrationCheckStatement> {
+public final class DropMigrationCheckUpdater implements 
RALUpdater<DropMigrationCheckStatement> {
     
     private final ConsistencyCheckJobAPI jobAPI = new 
ConsistencyCheckJobAPI(new ConsistencyCheckJobType());
     
     @Override
-    public void executeUpdate(final String databaseName, final 
DropMigrationCheckStatement sqlStatement) {
+    public void executeUpdate(final DropMigrationCheckStatement sqlStatement) {
         jobAPI.drop(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableUpdater.java
index 519d379598f..447ca9a8f43 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/MigrateTableUpdater.java
@@ -17,24 +17,29 @@
 
 package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update;
 
+import lombok.Setter;
 import org.apache.shardingsphere.data.pipeline.core.context.PipelineContextKey;
 import 
org.apache.shardingsphere.data.pipeline.core.exception.job.MissingRequiredTargetDatabaseException;
 import org.apache.shardingsphere.data.pipeline.core.job.api.TransmissionJobAPI;
+import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.MigrateTableStatement;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.api.MigrationJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseAwareRALUpdater;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.MigrateTableStatement;
 
 /**
  * Migrate table updater.
  */
-public final class MigrateTableUpdater implements 
DatabaseRuleRALUpdater<MigrateTableStatement> {
+@Setter
+public final class MigrateTableUpdater implements 
DatabaseAwareRALUpdater<MigrateTableStatement> {
+    
+    private ShardingSphereDatabase database;
     
     @Override
-    public void executeUpdate(final String databaseName, final 
MigrateTableStatement sqlStatement) {
-        String targetDatabaseName = null == 
sqlStatement.getTargetDatabaseName() ? databaseName : 
sqlStatement.getTargetDatabaseName();
+    public void executeUpdate(final MigrateTableStatement sqlStatement) {
+        String targetDatabaseName = null == 
sqlStatement.getTargetDatabaseName() ? database.getName() : 
sqlStatement.getTargetDatabaseName();
         ShardingSpherePreconditions.checkNotNull(targetDatabaseName, 
MissingRequiredTargetDatabaseException::new);
         MigrationJobAPI jobAPI = (MigrationJobAPI) 
TypedSPILoader.getService(TransmissionJobAPI.class, "MIGRATION");
         jobAPI.start(new PipelineContextKey(InstanceType.PROXY), new 
MigrateTableStatement(sqlStatement.getSourceTargetEntries(), 
targetDatabaseName));
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitUpdater.java
index adfcc28cdd5..ef5d1c87179 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RegisterMigrationSourceStorageUnitUpdater.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 import org.apache.shardingsphere.data.pipeline.core.context.PipelineContextKey;
 import org.apache.shardingsphere.data.pipeline.core.job.api.TransmissionJobAPI;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.api.MigrationJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.handler.validate.DataSourcePoolPropertiesValidateHandler;
 import org.apache.shardingsphere.distsql.segment.DataSourceSegment;
 import 
org.apache.shardingsphere.distsql.segment.HostnameAndPortBasedDataSourceSegment;
@@ -42,14 +42,14 @@ import java.util.Map;
 /**
  * Register migration source storage unit updater.
  */
-public final class RegisterMigrationSourceStorageUnitUpdater implements 
DatabaseRuleRALUpdater<RegisterMigrationSourceStorageUnitStatement> {
+public final class RegisterMigrationSourceStorageUnitUpdater implements 
RALUpdater<RegisterMigrationSourceStorageUnitStatement> {
     
     private final MigrationJobAPI jobAPI = (MigrationJobAPI) 
TypedSPILoader.getService(TransmissionJobAPI.class, "MIGRATION");
     
     private final DataSourcePoolPropertiesValidateHandler validateHandler = 
new DataSourcePoolPropertiesValidateHandler();
     
     @Override
-    public void executeUpdate(final String databaseName, final 
RegisterMigrationSourceStorageUnitStatement sqlStatement) {
+    public void executeUpdate(final 
RegisterMigrationSourceStorageUnitStatement sqlStatement) {
         List<DataSourceSegment> dataSources = new 
ArrayList<>(sqlStatement.getDataSources());
         
ShardingSpherePreconditions.checkState(dataSources.stream().noneMatch(HostnameAndPortBasedDataSourceSegment.class::isInstance),
                 () -> new UnsupportedSQLOperationException("Not currently 
support add hostname and port, please use url"));
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RollbackMigrationUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RollbackMigrationUpdater.java
index bae752a17c5..8ecb941d65e 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RollbackMigrationUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/RollbackMigrationUpdater.java
@@ -18,7 +18,7 @@
 package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update;
 
 import org.apache.shardingsphere.data.pipeline.core.job.api.TransmissionJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.RollbackMigrationStatement;
 
@@ -27,10 +27,10 @@ import java.sql.SQLException;
 /**
  * Rollback migration updater.
  */
-public final class RollbackMigrationUpdater implements 
DatabaseRuleRALUpdater<RollbackMigrationStatement> {
+public final class RollbackMigrationUpdater implements 
RALUpdater<RollbackMigrationStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
RollbackMigrationStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final RollbackMigrationStatement sqlStatement) 
throws SQLException {
         TypedSPILoader.getService(TransmissionJobAPI.class, 
"MIGRATION").rollback(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationCheckUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationCheckUpdater.java
index 1769ac742a8..413bade4324 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationCheckUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationCheckUpdater.java
@@ -19,18 +19,18 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.ConsistencyCheckJobType;
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.api.ConsistencyCheckJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.StartMigrationCheckStatement;
 
 /**
  * Start migration check updater.
  */
-public final class StartMigrationCheckUpdater implements 
DatabaseRuleRALUpdater<StartMigrationCheckStatement> {
+public final class StartMigrationCheckUpdater implements 
RALUpdater<StartMigrationCheckStatement> {
     
     private final ConsistencyCheckJobAPI jobAPI = new 
ConsistencyCheckJobAPI(new ConsistencyCheckJobType());
     
     @Override
-    public void executeUpdate(final String databaseName, final 
StartMigrationCheckStatement sqlStatement) {
+    public void executeUpdate(final StartMigrationCheckStatement sqlStatement) 
{
         jobAPI.resume(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationUpdater.java
index 4edaa90b888..71d64efc972 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StartMigrationUpdater.java
@@ -19,18 +19,18 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 
 import 
org.apache.shardingsphere.data.pipeline.core.job.service.PipelineJobManager;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.MigrationJobType;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.StartMigrationStatement;
 
 /**
  * Start migration updater.
  */
-public final class StartMigrationUpdater implements 
DatabaseRuleRALUpdater<StartMigrationStatement> {
+public final class StartMigrationUpdater implements 
RALUpdater<StartMigrationStatement> {
     
     private final PipelineJobManager jobManager = new PipelineJobManager(new 
MigrationJobType());
     
     @Override
-    public void executeUpdate(final String databaseName, final 
StartMigrationStatement sqlStatement) {
+    public void executeUpdate(final StartMigrationStatement sqlStatement) {
         jobManager.resume(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationCheckUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationCheckUpdater.java
index 5010f024a4e..ca0b5b57cf3 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationCheckUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationCheckUpdater.java
@@ -19,18 +19,18 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.ConsistencyCheckJobType;
 import 
org.apache.shardingsphere.data.pipeline.scenario.consistencycheck.api.ConsistencyCheckJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.StopMigrationCheckStatement;
 
 /**
  * Stop migration check updater.
  */
-public final class StopMigrationCheckUpdater implements 
DatabaseRuleRALUpdater<StopMigrationCheckStatement> {
+public final class StopMigrationCheckUpdater implements 
RALUpdater<StopMigrationCheckStatement> {
     
     private final ConsistencyCheckJobAPI jobAPI = new 
ConsistencyCheckJobAPI(new ConsistencyCheckJobType());
     
     @Override
-    public void executeUpdate(final String databaseName, final 
StopMigrationCheckStatement sqlStatement) {
+    public void executeUpdate(final StopMigrationCheckStatement sqlStatement) {
         jobAPI.stop(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationUpdater.java
index 9114d3ceb61..358a47376e8 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/StopMigrationUpdater.java
@@ -19,18 +19,18 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 
 import 
org.apache.shardingsphere.data.pipeline.core.job.service.PipelineJobManager;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.MigrationJobType;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.StopMigrationStatement;
 
 /**
  * Stop migration updater.
  */
-public final class StopMigrationUpdater implements 
DatabaseRuleRALUpdater<StopMigrationStatement> {
+public final class StopMigrationUpdater implements 
RALUpdater<StopMigrationStatement> {
     
     private final PipelineJobManager jobManager = new PipelineJobManager(new 
MigrationJobType());
     
     @Override
-    public void executeUpdate(final String databaseName, final 
StopMigrationStatement sqlStatement) {
+    public void executeUpdate(final StopMigrationStatement sqlStatement) {
         jobManager.stop(sqlStatement.getJobId());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/UnregisterMigrationSourceStorageUnitUpdater.java
 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/UnregisterMigrationSourceStorageUnitUpdater.java
index c2621903f2a..348e9c08497 100644
--- 
a/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/UnregisterMigrationSourceStorageUnitUpdater.java
+++ 
b/kernel/data-pipeline/distsql/handler/src/main/java/org/apache/shardingsphere/data/pipeline/migration/distsql/handler/update/UnregisterMigrationSourceStorageUnitUpdater.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.data.pipeline.migration.distsql.handler.update
 import org.apache.shardingsphere.data.pipeline.core.context.PipelineContextKey;
 import org.apache.shardingsphere.data.pipeline.core.job.api.TransmissionJobAPI;
 import 
org.apache.shardingsphere.data.pipeline.scenario.migration.api.MigrationJobAPI;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.UnregisterMigrationSourceStorageUnitStatement;
@@ -28,12 +28,12 @@ import 
org.apache.shardingsphere.data.pipeline.migration.distsql.statement.Unreg
 /**
  * Unregister migration source storage unit updater.
  */
-public final class UnregisterMigrationSourceStorageUnitUpdater implements 
DatabaseRuleRALUpdater<UnregisterMigrationSourceStorageUnitStatement> {
+public final class UnregisterMigrationSourceStorageUnitUpdater implements 
RALUpdater<UnregisterMigrationSourceStorageUnitStatement> {
     
     private final MigrationJobAPI jobAPI = (MigrationJobAPI) 
TypedSPILoader.getService(TransmissionJobAPI.class, "MIGRATION");
     
     @Override
-    public void executeUpdate(final String databaseName, final 
UnregisterMigrationSourceStorageUnitStatement sqlStatement) {
+    public void executeUpdate(final 
UnregisterMigrationSourceStorageUnitStatement sqlStatement) {
         jobAPI.dropMigrationSourceResources(new 
PipelineContextKey(InstanceType.PROXY), sqlStatement.getNames());
     }
     
diff --git 
a/kernel/data-pipeline/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater
 
b/kernel/data-pipeline/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater
similarity index 100%
rename from 
kernel/data-pipeline/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater
rename to 
kernel/data-pipeline/distsql/handler/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
index c953fb106c7..1453fa1e2c6 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/RALBackendHandlerFactory.java
@@ -51,6 +51,6 @@ public final class RALBackendHandlerFactory {
             }
             return new 
UpdatableGlobalRuleRALBackendHandler((UpdatableGlobalRuleRALStatement) 
sqlStatement);
         }
-        return new 
UpdatableDatabaseRuleRALBackendHandler<>((UpdatableRALStatement) sqlStatement, 
connectionSession);
+        return new UpdatableRALBackendHandler<>((UpdatableRALStatement) 
sqlStatement, connectionSession);
     }
 }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/UpdatableDatabaseRuleRALBackendHandler.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/UpdatableRALBackendHandler.java
similarity index 86%
rename from 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/UpdatableDatabaseRuleRALBackendHandler.java
rename to 
proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/UpdatableRALBackendHandler.java
index 3d96540fc90..f656583e176 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/UpdatableDatabaseRuleRALBackendHandler.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/UpdatableRALBackendHandler.java
@@ -18,7 +18,7 @@
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral;
 
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseAwareRALUpdater;
 import org.apache.shardingsphere.distsql.statement.ral.UpdatableRALStatement;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -36,7 +36,7 @@ import java.sql.SQLException;
  * @param <T> type of SQL statement
  */
 @RequiredArgsConstructor
-public final class UpdatableDatabaseRuleRALBackendHandler<T extends 
UpdatableRALStatement> implements RALBackendHandler {
+public final class UpdatableRALBackendHandler<T extends UpdatableRALStatement> 
implements RALBackendHandler {
     
     private final UpdatableRALStatement sqlStatement;
     
@@ -45,11 +45,11 @@ public final class UpdatableDatabaseRuleRALBackendHandler<T 
extends UpdatableRAL
     @SuppressWarnings("unchecked")
     @Override
     public ResponseHeader execute() throws SQLException {
-        DatabaseRuleRALUpdater<T> updater = 
TypedSPILoader.getService(DatabaseRuleRALUpdater.class, 
sqlStatement.getClass());
+        RALUpdater<T> updater = TypedSPILoader.getService(RALUpdater.class, 
sqlStatement.getClass());
         if (updater instanceof DatabaseAwareRALUpdater) {
             ((DatabaseAwareRALUpdater<T>) 
updater).setDatabase(ProxyContext.getInstance().getDatabase(DatabaseNameUtils.getDatabaseName(sqlStatement,
 connectionSession)));
         }
-        updater.executeUpdate(connectionSession.getDatabaseName(), (T) 
sqlStatement);
+        updater.executeUpdate((T) sqlStatement);
         return new UpdateResponseHeader(sqlStatement);
     }
 }
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdater.java
index 2acfc65385f..c3d348e9425 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdater.java
@@ -19,17 +19,17 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
+import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
-import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
+import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseAwareRALUpdater;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
-import 
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.NoDatabaseSelectedException;
-import 
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedDatabase;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.RuleExportEngine;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableConstants;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableItemConstants;
+import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
 import org.apache.shardingsphere.metadata.persist.MetaDataBasedPersistService;
 import org.apache.shardingsphere.mode.event.storage.DataSourceDisabledEvent;
 import org.apache.shardingsphere.mode.event.storage.StorageNodeDataSource;
@@ -53,79 +53,81 @@ import java.util.stream.Collectors;
 /**
  * Set readwrite-splitting storage unit status updater.
  */
-public final class AlterReadwriteSplittingStorageUnitStatusStatementUpdater 
implements 
DatabaseRuleRALUpdater<AlterReadwriteSplittingStorageUnitStatusStatement> {
+@Setter
+public final class AlterReadwriteSplittingStorageUnitStatusStatementUpdater 
implements 
DatabaseAwareRALUpdater<AlterReadwriteSplittingStorageUnitStatusStatement> {
     
     private static final String DISABLE = "DISABLE";
     
+    private ShardingSphereDatabase database;
+    
     @Override
-    public void executeUpdate(final String databaseName, final 
AlterReadwriteSplittingStorageUnitStatusStatement sqlStatement) {
-        String actualDatabaseName = sqlStatement.getDatabase().isPresent() ? 
sqlStatement.getDatabase().get().getIdentifier().getValue() : databaseName;
+    public void executeUpdate(final 
AlterReadwriteSplittingStorageUnitStatusStatement sqlStatement) {
         String toBeUpdatedStorageUnit = sqlStatement.getStorageUnitName();
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
         checkModeAndPersistRepository(contextManager);
-        checkDatabaseName(actualDatabaseName);
-        checkReadwriteSplittingRule(contextManager, actualDatabaseName);
-        Map<String, String> replicaStorageUnits = 
getReplicaResources(contextManager, actualDatabaseName);
-        Map<String, String> disabledStorageUnits = 
getDisabledResources(contextManager, actualDatabaseName);
-        Map<String, String> autoAwareResources = 
getAutoAwareResources(contextManager, actualDatabaseName);
+        checkReadwriteSplittingRule();
+        Map<String, String> replicaStorageUnits = getReplicaResources();
+        Map<String, String> disabledStorageUnits = 
getDisabledResources(contextManager);
+        Map<String, String> autoAwareResources = getAutoAwareResources();
         boolean isDisable = DISABLE.equals(sqlStatement.getStatus());
         if (isDisable) {
-            checkDisable(contextManager, actualDatabaseName, 
disabledStorageUnits.keySet(), toBeUpdatedStorageUnit, replicaStorageUnits);
+            checkDisable(contextManager, database.getName(), 
disabledStorageUnits.keySet(), toBeUpdatedStorageUnit, replicaStorageUnits);
         } else {
-            checkEnable(contextManager, actualDatabaseName, 
disabledStorageUnits, toBeUpdatedStorageUnit);
+            checkEnable(contextManager, database.getName(), 
disabledStorageUnits, toBeUpdatedStorageUnit);
         }
         Collection<String> groupNames = getGroupNames(toBeUpdatedStorageUnit, 
replicaStorageUnits, disabledStorageUnits, autoAwareResources);
         String groupName = sqlStatement.getGroupName();
         if (Strings.isNullOrEmpty(groupName)) {
-            updateStatus(actualDatabaseName, groupNames, 
toBeUpdatedStorageUnit, isDisable);
+            updateStatus(database.getName(), groupNames, 
toBeUpdatedStorageUnit, isDisable);
         } else {
             checkGroupName(groupNames, groupName);
-            updateStatus(actualDatabaseName, Collections.singleton(groupName), 
toBeUpdatedStorageUnit, isDisable);
+            updateStatus(database.getName(), Collections.singleton(groupName), 
toBeUpdatedStorageUnit, isDisable);
         }
     }
     
-    private void checkReadwriteSplittingRule(final ContextManager 
contextManager, final String databaseName) {
-        Optional<ReadwriteSplittingRule> rule = 
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getRuleMetaData().findSingleRule(ReadwriteSplittingRule.class);
-        ShardingSpherePreconditions.checkState(rule.isPresent(), () -> new 
UnsupportedSQLOperationException("The current database has no read_write 
splitting rules"));
-    }
-    
     private void checkModeAndPersistRepository(final ContextManager 
contextManager) {
         
ShardingSpherePreconditions.checkState(contextManager.getInstanceContext().isCluster(),
 () -> new UnsupportedSQLOperationException("Mode must be `Cluster`"));
     }
     
-    private void checkDatabaseName(final String databaseName) {
-        if (Strings.isNullOrEmpty(databaseName)) {
-            throw new NoDatabaseSelectedException();
-        }
-        if (!ProxyContext.getInstance().databaseExists(databaseName)) {
-            throw new UnknownDatabaseException(databaseName);
-        }
+    private void checkReadwriteSplittingRule() {
+        Optional<ReadwriteSplittingRule> rule = 
database.getRuleMetaData().findSingleRule(ReadwriteSplittingRule.class);
+        ShardingSpherePreconditions.checkState(rule.isPresent(), () -> new 
UnsupportedSQLOperationException("The current database has no read_write 
splitting rules"));
     }
     
-    private void checkGroupName(final Collection<String> groupNames, final 
String groupName) {
-        ShardingSpherePreconditions.checkState(groupNames.contains(groupName),
-                () -> new UnsupportedSQLOperationException(String.format("The 
current database does not exist the group `%s`", groupName)));
+    private Map<String, String> getReplicaResources() {
+        Map<String, String> result = new HashMap<>();
+        getExportedReadwriteSplittingRules().entrySet().stream().filter(entry 
-> !entry.getValue().isEmpty()).forEach(entry -> addReplicaResource(result, 
entry));
+        return result;
     }
     
-    private Map<String, String> getReplicaResources(final ContextManager 
contextManager, final String databaseName) {
-        Map<String, Map<String, String>> readwriteSplittingRules = 
getExportedReadwriteSplittingRules(contextManager, databaseName);
-        Map<String, String> result = new HashMap<>();
-        readwriteSplittingRules.entrySet().stream().filter(entry -> 
!entry.getValue().isEmpty()).forEach(entry -> addReplicaResource(result, 
entry));
+    private Map<String, Map<String, String>> 
getExportedReadwriteSplittingRules() {
+        Map<String, Map<String, String>> result = new HashMap<>();
+        database.getRuleMetaData().findSingleRule(ReadwriteSplittingRule.class)
+                .filter(each -> new RuleExportEngine(each)
+                        
.containExportableKey(Arrays.asList(ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE,
 ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE)))
+                .map(each -> new 
RuleExportEngine(each).export(Arrays.asList(ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE,
 ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE)))
+                .ifPresent(optional -> {
+                    result.putAll((Map) 
optional.getOrDefault(ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE,
 Collections.emptyMap()));
+                    result.putAll((Map) 
optional.getOrDefault(ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE,
 Collections.emptyMap()));
+                });
         return result;
     }
     
-    private Map<String, String> getAutoAwareResources(final ContextManager 
contextManager, final String databaseName) {
-        Map<String, Map<String, String>> readwriteSplittingRules = 
getExportedReadwriteSplittingRules(contextManager, databaseName);
+    private Map<String, String> getDisabledResources(final ContextManager 
contextManager) {
+        return 
getDisabledStorageNodes(contextManager.getMetaDataContexts().getPersistService()).stream()
+                
.collect(Collectors.toMap(QualifiedDatabase::getDataSourceName, 
QualifiedDatabase::getGroupName, (value1, value2) -> String.join(",", value1, 
value2)));
+    }
+    
+    private Map<String, String> getAutoAwareResources() {
         Map<String, String> result = new HashMap<>();
-        readwriteSplittingRules.values().stream().filter(each -> 
each.containsKey(ExportableItemConstants.AUTO_AWARE_DATA_SOURCE_NAME)).forEach(each
 -> Splitter.on(",")
+        getExportedReadwriteSplittingRules().values().stream().filter(each -> 
each.containsKey(ExportableItemConstants.AUTO_AWARE_DATA_SOURCE_NAME)).forEach(each
 -> Splitter.on(",")
                 
.splitToList(each.get(ExportableItemConstants.REPLICA_DATA_SOURCE_NAMES)).forEach(each1
 -> put(result, each1, 
each.get(ExportableItemConstants.AUTO_AWARE_DATA_SOURCE_NAME))));
         return result;
     }
     
-    private Map<String, String> getDisabledResources(final ContextManager 
contextManager, final String databaseName) {
-        MetaDataBasedPersistService persistService = 
contextManager.getMetaDataContexts().getPersistService();
-        return getDisabledStorageNodes(databaseName, persistService).stream()
-                
.collect(Collectors.toMap(QualifiedDatabase::getDataSourceName, 
QualifiedDatabase::getGroupName, (value1, value2) -> String.join(",", value1, 
value2)));
+    private void checkGroupName(final Collection<String> groupNames, final 
String groupName) {
+        ShardingSpherePreconditions.checkState(groupNames.contains(groupName),
+                () -> new UnsupportedSQLOperationException(String.format("The 
current database does not exist the group `%s`", groupName)));
     }
     
     private void checkEnable(final ContextManager contextManager, final String 
databaseName, final Map<String, String> disabledResources, final String 
toBeEnabledResource) {
@@ -133,16 +135,16 @@ public final class 
AlterReadwriteSplittingStorageUnitStatusStatementUpdater impl
         checkIsNotDisabled(disabledResources.keySet(), toBeEnabledResource);
     }
     
+    private void checkIsNotDisabled(final Collection<String> 
disabledResources, final String toBeEnabledResource) {
+        
ShardingSpherePreconditions.checkState(disabledResources.contains(toBeEnabledResource),
 () -> new UnsupportedSQLOperationException(String.format("`%s` is not 
disabled", toBeEnabledResource)));
+    }
+    
     private void checkResourceExists(final ContextManager contextManager, 
final String databaseName, final String toBeDisabledResource) {
         Collection<String> notExistedResources = contextManager
                 
.getMetaDataContexts().getMetaData().getDatabase(databaseName).getResourceMetaData().getNotExistedDataSources(Collections.singleton(toBeDisabledResource));
         ShardingSpherePreconditions.checkState(notExistedResources.isEmpty(), 
() -> new MissingRequiredStorageUnitsException(databaseName, 
Collections.singleton(toBeDisabledResource)));
     }
     
-    private void checkIsNotDisabled(final Collection<String> 
disabledResources, final String toBeEnabledResource) {
-        
ShardingSpherePreconditions.checkState(disabledResources.contains(toBeEnabledResource),
 () -> new UnsupportedSQLOperationException(String.format("`%s` is not 
disabled", toBeEnabledResource)));
-    }
-    
     private void checkDisable(final ContextManager contextManager, final 
String databaseName, final Collection<String> disabledStorageUnits, final 
String toBeDisabledStorageUnit,
                               final Map<String, String> replicaResources) {
         checkResourceExists(contextManager, databaseName, 
toBeDisabledStorageUnit);
@@ -175,23 +177,10 @@ public final class 
AlterReadwriteSplittingStorageUnitStatusStatementUpdater impl
         });
     }
     
-    private Collection<QualifiedDatabase> getDisabledStorageNodes(final String 
databaseName, final MetaDataBasedPersistService persistService) {
+    private Collection<QualifiedDatabase> getDisabledStorageNodes(final 
MetaDataBasedPersistService persistService) {
         Map<String, StorageNodeDataSource> storageNodes = new 
StorageNodeStatusService((ClusterPersistRepository) 
persistService.getRepository()).loadStorageNodes();
         return storageNodes.entrySet().stream().filter(each -> 
DataSourceState.DISABLED == each.getValue().getStatus())
-                .map(each -> new QualifiedDatabase(each.getKey())).filter(each 
-> 
databaseName.equalsIgnoreCase(each.getDatabaseName())).collect(Collectors.toList());
-    }
-    
-    private Map<String, Map<String, String>> 
getExportedReadwriteSplittingRules(final ContextManager contextManager, final 
String databaseName) {
-        Map<String, Map<String, String>> result = new HashMap<>();
-        
contextManager.getMetaDataContexts().getMetaData().getDatabase(databaseName).getRuleMetaData().findSingleRule(ReadwriteSplittingRule.class)
-                .filter(each -> new RuleExportEngine(each)
-                        
.containExportableKey(Arrays.asList(ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE,
 ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE)))
-                .map(each -> new 
RuleExportEngine(each).export(Arrays.asList(ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE,
 ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE)))
-                .ifPresent(optional -> {
-                    result.putAll((Map) 
optional.getOrDefault(ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE,
 Collections.emptyMap()));
-                    result.putAll((Map) 
optional.getOrDefault(ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE,
 Collections.emptyMap()));
-                });
-        return result;
+                .map(each -> new QualifiedDatabase(each.getKey())).filter(each 
-> 
database.getName().equalsIgnoreCase(each.getDatabaseName())).collect(Collectors.toList());
     }
     
     private void addReplicaResource(final Map<String, String> 
replicaStorageUnits, final Entry<String, Map<String, String>> 
readwriteSplittingRule) {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterTransmissionRuleUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterTransmissionRuleUpdater.java
index fca40998b0e..aa378948461 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterTransmissionRuleUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterTransmissionRuleUpdater.java
@@ -21,7 +21,7 @@ import 
org.apache.shardingsphere.data.pipeline.core.job.progress.config.Pipeline
 import org.apache.shardingsphere.data.pipeline.core.context.PipelineContextKey;
 import org.apache.shardingsphere.data.pipeline.core.job.type.PipelineJobType;
 import 
org.apache.shardingsphere.data.pipeline.core.metadata.PipelineProcessConfigurationPersistService;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.AlterTransmissionRuleStatement;
 import org.apache.shardingsphere.infra.instance.metadata.InstanceType;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -30,12 +30,12 @@ import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable.con
 /**
  * Alter transmission rule updater.
  */
-public final class AlterTransmissionRuleUpdater implements 
DatabaseRuleRALUpdater<AlterTransmissionRuleStatement> {
+public final class AlterTransmissionRuleUpdater implements 
RALUpdater<AlterTransmissionRuleStatement> {
     
     private final PipelineProcessConfigurationPersistService 
processConfigPersistService = new PipelineProcessConfigurationPersistService();
     
     @Override
-    public void executeUpdate(final String databaseName, final 
AlterTransmissionRuleStatement sqlStatement) {
+    public void executeUpdate(final AlterTransmissionRuleStatement 
sqlStatement) {
         PipelineProcessConfiguration processConfig = 
TransmissionProcessConfigurationSegmentConverter.convert(sqlStatement.getProcessConfigSegment());
         String jobType = TypedSPILoader.getService(PipelineJobType.class, 
sqlStatement.getJobTypeName()).getType();
         processConfigPersistService.persist(new 
PipelineContextKey(InstanceType.PROXY), jobType, processConfig);
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdater.java
index 28f192c2274..f8ef29153b8 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdater.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.ImportDatabaseConfigurationStatement;
 import org.apache.shardingsphere.infra.util.yaml.YamlEngine;
 import 
org.apache.shardingsphere.proxy.backend.config.yaml.YamlProxyDatabaseConfiguration;
@@ -31,12 +31,12 @@ import java.sql.SQLException;
 /**
  * Import database configuration updater.
  */
-public final class ImportDatabaseConfigurationUpdater implements 
DatabaseRuleRALUpdater<ImportDatabaseConfigurationStatement> {
+public final class ImportDatabaseConfigurationUpdater implements 
RALUpdater<ImportDatabaseConfigurationStatement> {
     
     private final YamlDatabaseConfigurationImportExecutor 
databaseConfigImportExecutor = new YamlDatabaseConfigurationImportExecutor();
     
     @Override
-    public void executeUpdate(final String databaseName, final 
ImportDatabaseConfigurationStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final ImportDatabaseConfigurationStatement 
sqlStatement) throws SQLException {
         File file = new File(sqlStatement.getFilePath());
         YamlProxyDatabaseConfiguration yamlConfig;
         try {
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
index 39b864b519b..02af5bcc522 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.FileUtils;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.ImportMetaDataStatement;
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.util.json.JsonUtils;
@@ -42,14 +42,14 @@ import java.util.Collection;
 /**
  * Import meta data updater.
  */
-public final class ImportMetaDataUpdater implements 
DatabaseRuleRALUpdater<ImportMetaDataStatement> {
+public final class ImportMetaDataUpdater implements 
RALUpdater<ImportMetaDataStatement> {
     
     private final YamlRuleConfigurationSwapperEngine ruleConfigSwapperEngine = 
new YamlRuleConfigurationSwapperEngine();
     
     private final YamlDatabaseConfigurationImportExecutor 
databaseConfigImportExecutor = new YamlDatabaseConfigurationImportExecutor();
     
     @Override
-    public void executeUpdate(final String databaseName, final 
ImportMetaDataStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final ImportMetaDataStatement sqlStatement) 
throws SQLException {
         String jsonMetaDataConfig;
         if (sqlStatement.getFilePath().isPresent()) {
             File file = new File(sqlStatement.getFilePath().get());
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdater.java
index 1efc2e28376..8f04a1fe4c1 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdater.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.LabelComputeNodeStatement;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
@@ -37,10 +37,10 @@ import java.util.Optional;
 /**
  * Label compute node updater.
  */
-public final class LabelComputeNodeUpdater implements 
DatabaseRuleRALUpdater<LabelComputeNodeStatement> {
+public final class LabelComputeNodeUpdater implements 
RALUpdater<LabelComputeNodeStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
LabelComputeNodeStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final LabelComputeNodeStatement sqlStatement) 
throws SQLException {
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
         MetaDataBasedPersistService persistService = 
contextManager.getMetaDataContexts().getPersistService();
         ShardingSpherePreconditions.checkState(null != persistService && null 
!= persistService.getRepository() && persistService.getRepository() instanceof 
ClusterPersistRepository,
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdater.java
index 9c23426a298..a2ca46e8f88 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdater.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
 import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.MissingRequiredAlgorithmException;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.LockClusterStatement;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
@@ -37,11 +37,11 @@ import 
org.apache.shardingsphere.proxy.backend.lock.spi.ClusterLockStrategy;
  */
 @RequiredArgsConstructor
 @Setter
-public final class LockClusterUpdater implements 
DatabaseRuleRALUpdater<LockClusterStatement> {
+public final class LockClusterUpdater implements 
RALUpdater<LockClusterStatement> {
     
     @Override
     @SuppressWarnings({"unchecked", "rawtypes"})
-    public void executeUpdate(final String databaseName, final 
LockClusterStatement sqlStatement) {
+    public void executeUpdate(final LockClusterStatement sqlStatement) {
         checkMode();
         checkState();
         checkAlgorithm(sqlStatement);
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataUpdater.java
index 3b6c43e4b89..2124856b806 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshDatabaseMetaDataUpdater.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.RefreshDatabaseMetaDataStatement;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.SystemSchemaUtils;
@@ -31,10 +31,10 @@ import java.util.Optional;
 /**
  * Refresh database meta data updater.
  */
-public final class RefreshDatabaseMetaDataUpdater implements 
DatabaseRuleRALUpdater<RefreshDatabaseMetaDataStatement> {
+public final class RefreshDatabaseMetaDataUpdater implements 
RALUpdater<RefreshDatabaseMetaDataStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
RefreshDatabaseMetaDataStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final RefreshDatabaseMetaDataStatement 
sqlStatement) throws SQLException {
         Optional<String> toBeRefreshedDatabaseName = 
sqlStatement.getDatabaseName();
         Map<String, ShardingSphereDatabase> databases = 
toBeRefreshedDatabaseName.map(optional -> Collections.singletonMap(optional, 
ProxyContext.getInstance().getDatabase(optional)))
                 .orElseGet(() -> 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabases());
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
index df003a4f074..52c2dad455e 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdater.java
@@ -42,36 +42,36 @@ public final class RefreshTableMetaDataUpdater implements 
DatabaseAwareRALUpdate
     private ShardingSphereDatabase database;
     
     @Override
-    public void executeUpdate(final String databaseName, final 
RefreshTableMetaDataStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final RefreshTableMetaDataStatement 
sqlStatement) throws SQLException {
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
-        checkStorageUnit(databaseName, 
contextManager.getStorageUnits(databaseName), sqlStatement);
-        String schemaName = getSchemaName(databaseName, sqlStatement);
+        checkStorageUnit(contextManager.getStorageUnits(database.getName()), 
sqlStatement);
+        String schemaName = getSchemaName(sqlStatement);
         if (sqlStatement.getStorageUnitName().isPresent()) {
             if (sqlStatement.getTableName().isPresent()) {
-                contextManager.reloadTable(databaseName, schemaName, 
sqlStatement.getStorageUnitName().get(), sqlStatement.getTableName().get());
+                contextManager.reloadTable(database.getName(), schemaName, 
sqlStatement.getStorageUnitName().get(), sqlStatement.getTableName().get());
             } else {
-                contextManager.reloadSchema(databaseName, schemaName, 
sqlStatement.getStorageUnitName().get());
+                contextManager.reloadSchema(database.getName(), schemaName, 
sqlStatement.getStorageUnitName().get());
             }
             return;
         }
         if (sqlStatement.getTableName().isPresent()) {
-            contextManager.reloadTable(databaseName, schemaName, 
sqlStatement.getTableName().get());
+            contextManager.reloadTable(database.getName(), schemaName, 
sqlStatement.getTableName().get());
         } else {
-            contextManager.refreshTableMetaData(databaseName);
+            contextManager.refreshTableMetaData(database.getName());
         }
     }
     
-    private void checkStorageUnit(final String databaseName, final Map<String, 
StorageUnit> storageUnits, final RefreshTableMetaDataStatement sqlStatement) {
-        ShardingSpherePreconditions.checkState(!storageUnits.isEmpty(), () -> 
new EmptyStorageUnitException(databaseName));
+    private void checkStorageUnit(final Map<String, StorageUnit> storageUnits, 
final RefreshTableMetaDataStatement sqlStatement) {
+        ShardingSpherePreconditions.checkState(!storageUnits.isEmpty(), () -> 
new EmptyStorageUnitException(database.getName()));
         if (sqlStatement.getStorageUnitName().isPresent()) {
             String storageUnitName = sqlStatement.getStorageUnitName().get();
             ShardingSpherePreconditions.checkState(
-                    storageUnits.containsKey(storageUnitName), () -> new 
MissingRequiredStorageUnitsException(databaseName, 
Collections.singleton(storageUnitName)));
+                    storageUnits.containsKey(storageUnitName), () -> new 
MissingRequiredStorageUnitsException(database.getName(), 
Collections.singleton(storageUnitName)));
         }
     }
     
-    private String getSchemaName(final String databaseName, final 
RefreshTableMetaDataStatement sqlStatement) {
-        return sqlStatement.getSchemaName().isPresent() ? 
sqlStatement.getSchemaName().get() : new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(databaseName);
+    private String getSchemaName(final RefreshTableMetaDataStatement 
sqlStatement) {
+        return sqlStatement.getSchemaName().isPresent() ? 
sqlStatement.getSchemaName().get() : new 
DatabaseTypeRegistry(database.getProtocolType()).getDefaultSchemaName(database.getName());
     }
     
     @Override
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdater.java
index 1dadf0acbfc..5547a1e3865 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdater.java
@@ -20,7 +20,7 @@ package 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 import ch.qos.logback.classic.Level;
 import ch.qos.logback.classic.Logger;
 import ch.qos.logback.classic.LoggerContext;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.SetDistVariableStatement;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import 
org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey;
@@ -43,10 +43,10 @@ import java.util.Properties;
 /**
  * Set dist variable statement updater.
  */
-public final class SetDistVariableUpdater implements 
DatabaseRuleRALUpdater<SetDistVariableStatement> {
+public final class SetDistVariableUpdater implements 
RALUpdater<SetDistVariableStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
SetDistVariableStatement sqlStatement) throws SQLException {
+    public void executeUpdate(final SetDistVariableStatement sqlStatement) 
throws SQLException {
         Enum<?> enumType = getEnumType(sqlStatement.getName());
         ShardingSpherePreconditions.checkState(enumType instanceof 
TypedPropertyKey, () -> new 
UnsupportedVariableException(sqlStatement.getName()));
         handleConfigurationProperty((TypedPropertyKey) enumType, 
sqlStatement.getValue());
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdater.java
index 4a19b49386d..f86abd4b012 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdater.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.SetInstanceStatusStatement;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
@@ -29,10 +29,10 @@ import 
org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 /**
  * Set instance status updater.
  */
-public final class SetInstanceStatusUpdater implements 
DatabaseRuleRALUpdater<SetInstanceStatusStatement> {
+public final class SetInstanceStatusUpdater implements 
RALUpdater<SetInstanceStatusStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
SetInstanceStatusStatement sqlStatement) {
+    public void executeUpdate(final SetInstanceStatusStatement sqlStatement) {
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
         
ShardingSpherePreconditions.checkState(contextManager.getInstanceContext().isCluster(),
 () -> new UnsupportedSQLOperationException("Only allowed in cluster mode"));
         String instanceId = sqlStatement.getInstanceId();
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
index 8d40b09f6fa..807b7bb2f99 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdater.java
@@ -17,7 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.UnlabelComputeNodeStatement;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
@@ -37,10 +37,10 @@ import java.util.Optional;
 /**
  * Unlabel compute node updater.
  */
-public final class UnlabelComputeNodeUpdater implements 
DatabaseRuleRALUpdater<UnlabelComputeNodeStatement> {
+public final class UnlabelComputeNodeUpdater implements 
RALUpdater<UnlabelComputeNodeStatement> {
     
     @Override
-    public void executeUpdate(final String databaseName, final 
UnlabelComputeNodeStatement sqlStatement) {
+    public void executeUpdate(final UnlabelComputeNodeStatement sqlStatement) {
         MetaDataBasedPersistService persistService = 
ProxyContext.getInstance().getContextManager().getMetaDataContexts().getPersistService();
         ShardingSpherePreconditions.checkState(persistService.getRepository() 
instanceof ClusterPersistRepository,
                 () -> new UnsupportedSQLOperationException("Labels can only be 
removed in cluster mode."));
diff --git 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdater.java
 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdater.java
index 94f9a9f57f9..7772108755c 100644
--- 
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdater.java
+++ 
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdater.java
@@ -17,8 +17,7 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater;
+import org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.UnlockClusterStatement;
 import 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
@@ -33,12 +32,11 @@ import 
org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 /**
  * Unlock cluster updater.
  */
-@RequiredArgsConstructor
-public final class UnlockClusterUpdater implements 
DatabaseRuleRALUpdater<UnlockClusterStatement> {
+public final class UnlockClusterUpdater implements 
RALUpdater<UnlockClusterStatement> {
     
     @Override
     @SuppressWarnings({"unchecked", "rawtypes"})
-    public void executeUpdate(final String databaseName, final 
UnlockClusterStatement sqlStatement) {
+    public void executeUpdate(final UnlockClusterStatement sqlStatement) {
         checkMode();
         checkState();
         ContextManager contextManager = 
ProxyContext.getInstance().getContextManager();
diff --git 
a/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater
 
b/proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater
similarity index 100%
rename from 
proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.DatabaseRuleRALUpdater
rename to 
proxy/backend/core/src/main/resources/META-INF/services/org.apache.shardingsphere.distsql.handler.type.ral.update.RALUpdater
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
index a3519e70174..6aa6e2eb69c 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/ProxyBackendHandlerFactoryTest.java
@@ -40,7 +40,7 @@ import 
org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.proxy.backend.handler.admin.DatabaseAdminQueryBackendHandler;
 import 
org.apache.shardingsphere.proxy.backend.handler.data.impl.UnicastDatabaseBackendHandler;
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.QueryableRALBackendHandler;
-import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableDatabaseRuleRALBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALBackendHandler;
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.rql.RQLBackendHandler;
 import 
org.apache.shardingsphere.proxy.backend.handler.distsql.rul.SQLRULBackendHandler;
 import org.apache.shardingsphere.proxy.backend.handler.skip.SkipBackendHandler;
@@ -130,7 +130,7 @@ class ProxyBackendHandlerFactoryTest {
     void assertNewInstanceWithDistSQL() throws SQLException {
         String sql = "set dist variable sql_show='true'";
         ProxyBackendHandler actual = 
ProxyBackendHandlerFactory.newInstance(databaseType, sql, connectionSession, 
new HintValueContext());
-        assertThat(actual, 
instanceOf(UpdatableDatabaseRuleRALBackendHandler.class));
+        assertThat(actual, instanceOf(UpdatableRALBackendHandler.class));
         sql = "show dist variable where name = sql_show";
         actual = ProxyBackendHandlerFactory.newInstance(databaseType, sql, 
connectionSession, new HintValueContext());
         assertThat(actual, instanceOf(QueryableRALBackendHandler.class));
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java
index 5e5026ba31a..349fec88197 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest.java
@@ -17,8 +17,8 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
 
-import 
org.apache.shardingsphere.infra.exception.dialect.exception.syntax.database.UnknownDatabaseException;
 import 
org.apache.shardingsphere.infra.exception.core.external.sql.type.generic.UnsupportedSQLOperationException;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.status.AlterReadwriteSplittingStorageUnitStatusStatement;
@@ -43,26 +43,19 @@ class 
AlterReadwriteSplittingStorageUnitStatusStatementUpdaterTest {
         AlterReadwriteSplittingStorageUnitStatusStatementUpdater updater = new 
AlterReadwriteSplittingStorageUnitStatusStatementUpdater();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(mock(ContextManager.class,
 RETURNS_DEEP_STUBS));
         assertThrows(UnsupportedSQLOperationException.class,
-                () -> updater.executeUpdate("foo_db", new 
AlterReadwriteSplittingStorageUnitStatusStatement(new DatabaseSegment(1, 1, new 
IdentifierValue("foo_db")), "group", "read_ds", "ENABLE")));
-    }
-    
-    @Test
-    void assertWithUnknownDatabase() {
-        ContextManager contextManager = mockContextManager();
-        
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        AlterReadwriteSplittingStorageUnitStatusStatementUpdater updater = new 
AlterReadwriteSplittingStorageUnitStatusStatementUpdater();
-        assertThrows(UnknownDatabaseException.class,
-                () -> updater.executeUpdate("foo_db", new 
AlterReadwriteSplittingStorageUnitStatusStatement(new DatabaseSegment(1, 1, new 
IdentifierValue("foo_db")), "group", "read_ds", "ENABLE")));
+                () -> updater.executeUpdate(new 
AlterReadwriteSplittingStorageUnitStatusStatement(new DatabaseSegment(1, 1, new 
IdentifierValue("foo_db")), "group", "read_ds", "ENABLE")));
     }
     
     @Test
     void assertWithNoReadwriteSplittingRule() {
         ContextManager contextManager = mockContextManager();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
+        
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
         AlterReadwriteSplittingStorageUnitStatusStatementUpdater updater = new 
AlterReadwriteSplittingStorageUnitStatusStatementUpdater();
+        updater.setDatabase(database);
         assertThrows(UnsupportedSQLOperationException.class,
-                () -> updater.executeUpdate("foo_db", new 
AlterReadwriteSplittingStorageUnitStatusStatement(new DatabaseSegment(1, 1, new 
IdentifierValue("foo_db")), "group", "read_ds", "ENABLE")));
+                () -> updater.executeUpdate(new 
AlterReadwriteSplittingStorageUnitStatusStatement(new DatabaseSegment(1, 1, new 
IdentifierValue("foo_db")), "group", "read_ds", "ENABLE")));
     }
     
     private ContextManager mockContextManager() {
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdaterTest.java
index 7f76358c61a..bfd16d107e4 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportDatabaseConfigurationUpdaterTest.java
@@ -121,7 +121,7 @@ class ImportDatabaseConfigurationUpdaterTest {
     
     private void assertExecute(final String databaseName, final String 
filePath) throws SQLException {
         init(databaseName);
-        importDatabaseConfigUpdater.executeUpdate(databaseName, new 
ImportDatabaseConfigurationStatement(ImportDatabaseConfigurationUpdaterTest.class.getResource(filePath).getPath()));
+        importDatabaseConfigUpdater.executeUpdate(new 
ImportDatabaseConfigurationStatement(ImportDatabaseConfigurationUpdaterTest.class.getResource(filePath).getPath()));
     }
     
     @SneakyThrows({IllegalAccessException.class, NoSuchFieldException.class})
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
index a8835f8cf19..dd960e1414e 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
@@ -80,20 +80,20 @@ class ImportMetaDataUpdaterTest {
     void assertCheckImportEmptyMetaData() {
         init(null);
         assertThrows(MissingRequiredDataSourcesException.class, () -> 
importMetaDataUpdater.executeUpdate(
-                EMPTY, new ImportMetaDataStatement(null, 
Objects.requireNonNull(ImportMetaDataUpdaterTest.class.getResource(featureMap.get(EMPTY))).getPath())));
+                new ImportMetaDataStatement(null, 
Objects.requireNonNull(ImportMetaDataUpdaterTest.class.getResource(featureMap.get(EMPTY))).getPath())));
     }
     
     @Test
     void assertImportMetaDataFromJsonValue() {
         init(EMPTY);
-        assertThrows(NullPointerException.class, () -> 
importMetaDataUpdater.executeUpdate(EMPTY, new 
ImportMetaDataStatement(METADATA_VALUE, null)));
+        assertThrows(NullPointerException.class, () -> 
importMetaDataUpdater.executeUpdate(new ImportMetaDataStatement(METADATA_VALUE, 
null)));
     }
     
     @Test
     void assertImportExistedMetaDataFromFile() {
         init(EMPTY);
         assertThrows(UnsupportedSQLOperationException.class, () -> 
importMetaDataUpdater.executeUpdate(
-                EMPTY, new ImportMetaDataStatement(null, 
Objects.requireNonNull(ImportMetaDataUpdaterTest.class.getResource(featureMap.get(EMPTY))).getPath())));
+                new ImportMetaDataStatement(null, 
Objects.requireNonNull(ImportMetaDataUpdaterTest.class.getResource(featureMap.get(EMPTY))).getPath())));
     }
     
     private void init(final String feature) {
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdaterTest.java
index 92fa18d563c..164c7158127 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LabelComputeNodeUpdaterTest.java
@@ -38,6 +38,6 @@ class LabelComputeNodeUpdaterTest {
     @Test
     void assertWithStandaloneMode() {
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(mock(ContextManager.class,
 RETURNS_DEEP_STUBS));
-        assertThrows(UnsupportedSQLOperationException.class, () -> new 
LabelComputeNodeUpdater().executeUpdate("foo", 
mock(LabelComputeNodeStatement.class)));
+        assertThrows(UnsupportedSQLOperationException.class, () -> new 
LabelComputeNodeUpdater().executeUpdate(mock(LabelComputeNodeStatement.class)));
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
index ae68b4b2254..28ce87d89dc 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/LockClusterUpdaterTest.java
@@ -45,7 +45,7 @@ class LockClusterUpdaterTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         LockClusterUpdater updater = new LockClusterUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", new LockClusterStatement(new 
AlgorithmSegment("FOO", new Properties()))));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new 
Properties()))));
     }
     
     @Test
@@ -55,7 +55,7 @@ class LockClusterUpdaterTest {
         
when(contextManager.getClusterStateContext().getCurrentState()).thenReturn(ClusterState.UNAVAILABLE);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         LockClusterUpdater updater = new LockClusterUpdater();
-        assertThrows(IllegalStateException.class, () -> 
updater.executeUpdate("foo", new LockClusterStatement(new 
AlgorithmSegment("FOO", new Properties()))));
+        assertThrows(IllegalStateException.class, () -> 
updater.executeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new 
Properties()))));
     }
     
     @Test
@@ -65,6 +65,6 @@ class LockClusterUpdaterTest {
         
when(contextManager.getClusterStateContext().getCurrentState()).thenReturn(ClusterState.OK);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         LockClusterUpdater updater = new LockClusterUpdater();
-        assertThrows(ServiceProviderNotFoundException.class, () -> 
updater.executeUpdate("foo", new LockClusterStatement(new 
AlgorithmSegment("FOO", new Properties()))));
+        assertThrows(ServiceProviderNotFoundException.class, () -> 
updater.executeUpdate(new LockClusterStatement(new AlgorithmSegment("FOO", new 
Properties()))));
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
index a8607179a90..3a5e4d68057 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/RefreshTableMetaDataUpdaterTest.java
@@ -21,10 +21,11 @@ import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.EmptyStor
 import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.RefreshTableMetaDataStatement;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
+import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
-import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableDatabaseRuleRALBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALBackendHandler;
 import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
 import 
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -55,8 +56,10 @@ class RefreshTableMetaDataUpdaterTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(contextManager.getStorageUnits("foo_db")).thenReturn(Collections.emptyMap());
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
-        UpdatableDatabaseRuleRALBackendHandler<?> backendHandler = new 
UpdatableDatabaseRuleRALBackendHandler<>(new RefreshTableMetaDataStatement(), 
mockConnectionSession("foo_db"));
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("foo_db");
+        
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+        UpdatableRALBackendHandler<?> backendHandler = new 
UpdatableRALBackendHandler<>(new RefreshTableMetaDataStatement(), 
mockConnectionSession("foo_db"));
         assertThrows(EmptyStorageUnitException.class, backendHandler::execute);
     }
     
@@ -65,7 +68,7 @@ class RefreshTableMetaDataUpdaterTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
-        UpdatableDatabaseRuleRALBackendHandler<?> backendHandler = new 
UpdatableDatabaseRuleRALBackendHandler<>(
+        UpdatableRALBackendHandler<?> backendHandler = new 
UpdatableRALBackendHandler<>(
                 new RefreshTableMetaDataStatement("t_order", "ds_1", null), 
mockConnectionSession("foo_db"));
         assertThrows(MissingRequiredStorageUnitsException.class, 
backendHandler::execute);
     }
@@ -74,8 +77,11 @@ class RefreshTableMetaDataUpdaterTest {
     void assertUpdate() throws SQLException {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
-        UpdatableDatabaseRuleRALBackendHandler<?> backendHandler = new 
UpdatableDatabaseRuleRALBackendHandler<>(new RefreshTableMetaDataStatement(), 
mockConnectionSession("foo_db"));
+        ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
+        when(database.getName()).thenReturn("foo_db");
+        
when(database.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
 "FIXTURE"));
+        
when(ProxyContext.getInstance().getDatabase("foo_db")).thenReturn(database);
+        UpdatableRALBackendHandler<?> backendHandler = new 
UpdatableRALBackendHandler<>(new RefreshTableMetaDataStatement(), 
mockConnectionSession("foo_db"));
         ResponseHeader actual = backendHandler.execute();
         assertThat(actual, instanceOf(UpdateResponseHeader.class));
     }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdatableDatabaseRuleRALBackendHandlerTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdatableRALBackendHandlerTest.java
similarity index 87%
rename from 
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdatableDatabaseRuleRALBackendHandlerTest.java
rename to 
proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdatableRALBackendHandlerTest.java
index 9f4bb09c67d..69ee52a6d15 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdatableDatabaseRuleRALBackendHandlerTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdatableRALBackendHandlerTest.java
@@ -21,7 +21,7 @@ import io.netty.util.DefaultAttributeMap;
 import 
org.apache.shardingsphere.distsql.statement.ral.updatable.SetDistVariableStatement;
 import org.apache.shardingsphere.infra.database.mysql.type.MySQLDatabaseType;
 import 
org.apache.shardingsphere.proxy.backend.exception.UnsupportedVariableException;
-import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableDatabaseRuleRALBackendHandler;
+import 
org.apache.shardingsphere.proxy.backend.handler.distsql.ral.UpdatableRALBackendHandler;
 import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
 import org.apache.shardingsphere.transaction.api.TransactionType;
 import org.junit.jupiter.api.BeforeEach;
@@ -30,7 +30,7 @@ import org.junit.jupiter.api.Test;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.mock;
 
-class SetDistVariableUpdatableDatabaseRuleRALBackendHandlerTest {
+class SetDistVariableUpdatableRALBackendHandlerTest {
     
     private ConnectionSession connectionSession;
     
@@ -41,7 +41,7 @@ class 
SetDistVariableUpdatableDatabaseRuleRALBackendHandlerTest {
     
     @Test
     void assertNotSupportedVariable() {
-        UpdatableDatabaseRuleRALBackendHandler<?> handler = new 
UpdatableDatabaseRuleRALBackendHandler<>(new 
SetDistVariableStatement("unsupported", "XXX"), connectionSession);
+        UpdatableRALBackendHandler<?> handler = new 
UpdatableRALBackendHandler<>(new SetDistVariableStatement("unsupported", 
"XXX"), connectionSession);
         assertThrows(UnsupportedVariableException.class, handler::execute);
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdaterTest.java
index 8a7be9cca2b..885233845e1 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetDistVariableUpdaterTest.java
@@ -60,7 +60,7 @@ class SetDistVariableUpdaterTest {
         SetDistVariableUpdater updater = new SetDistVariableUpdater();
         ContextManager contextManager = mockContextManager();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        updater.executeUpdate(null, statement);
+        updater.executeUpdate(statement);
         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));
@@ -72,7 +72,7 @@ class SetDistVariableUpdaterTest {
         SetDistVariableUpdater updater = new SetDistVariableUpdater();
         ContextManager contextManager = mockContextManager();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        updater.executeUpdate(null, statement);
+        updater.executeUpdate(statement);
         Object actualValue = 
contextManager.getMetaDataContexts().getMetaData().getTemporaryProps().getProps().get("proxy-meta-data-collector-enabled");
         assertThat(actualValue.toString(), is("false"));
         
assertThat(contextManager.getMetaDataContexts().getMetaData().getTemporaryProps().getValue(TemporaryConfigurationPropertyKey.PROXY_META_DATA_COLLECTOR_ENABLED),
 is(false));
@@ -84,7 +84,7 @@ class SetDistVariableUpdaterTest {
         SetDistVariableUpdater updater = new SetDistVariableUpdater();
         ContextManager contextManager = mockContextManager();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        updater.executeUpdate(null, statement);
+        updater.executeUpdate(statement);
         Object actualValue = 
contextManager.getMetaDataContexts().getMetaData().getProps().getProps().get("proxy-frontend-database-protocol-type");
         assertThat(actualValue.toString(), is("MySQL"));
         assertInstanceOf(MySQLDatabaseType.class, 
contextManager.getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE));
@@ -96,7 +96,7 @@ class SetDistVariableUpdaterTest {
         SetDistVariableUpdater updater = new SetDistVariableUpdater();
         ContextManager contextManager = mockContextManager();
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-        updater.executeUpdate(null, statement);
+        updater.executeUpdate(statement);
         Object actualValue = 
contextManager.getMetaDataContexts().getMetaData().getProps().getProps().get("system-log-level");
         assertThat(actualValue.toString(), is("DEBUG"));
         
assertThat(contextManager.getMetaDataContexts().getMetaData().getProps().getValue(ConfigurationPropertyKey.SYSTEM_LOG_LEVEL),
 is(Level.DEBUG));
@@ -108,7 +108,7 @@ class SetDistVariableUpdaterTest {
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         SetDistVariableStatement statement = new 
SetDistVariableStatement("system_log_level", "invalid");
         SetDistVariableUpdater updater = new SetDistVariableUpdater();
-        assertThrows(InvalidValueException.class, () -> 
updater.executeUpdate(null, statement));
+        assertThrows(InvalidValueException.class, () -> 
updater.executeUpdate(statement));
     }
     
     private ContextManager mockContextManager() {
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
index 539d4bb50fe..ba8f415dce8 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/SetInstanceStatusUpdaterTest.java
@@ -41,7 +41,7 @@ class SetInstanceStatusUpdaterTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         SetInstanceStatusUpdater updater = new SetInstanceStatusUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", new SetInstanceStatusStatement("ENABLE", 
"instanceID")));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(new SetInstanceStatusStatement("ENABLE", "instanceID")));
     }
     
     @Test
@@ -50,7 +50,7 @@ class SetInstanceStatusUpdaterTest {
         when(contextManager.getInstanceContext().isCluster()).thenReturn(true);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         SetInstanceStatusUpdater updater = new SetInstanceStatusUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", new SetInstanceStatusStatement("ENABLE", 
"instanceID")));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(new SetInstanceStatusStatement("ENABLE", "instanceID")));
     }
     
     @Test
@@ -60,7 +60,7 @@ class SetInstanceStatusUpdaterTest {
         
when(contextManager.getInstanceContext().getInstance().getCurrentInstanceId()).thenReturn("instanceID");
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         SetInstanceStatusUpdater updater = new SetInstanceStatusUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", new SetInstanceStatusStatement("DISABLE", 
"instanceID")));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(new SetInstanceStatusStatement("DISABLE", "instanceID")));
     }
     
     @Test
@@ -72,6 +72,6 @@ class SetInstanceStatusUpdaterTest {
         
when(contextManager.getInstanceContext().getComputeNodeInstanceById("instanceID").get().getState().getCurrentState()).thenReturn(InstanceState.CIRCUIT_BREAK);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         SetInstanceStatusUpdater updater = new SetInstanceStatusUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", new SetInstanceStatusStatement("DISABLE", 
"instanceID")));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(new SetInstanceStatusStatement("DISABLE", "instanceID")));
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
index 71d05d19010..37fc268fde0 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlabelComputeNodeUpdaterTest.java
@@ -39,6 +39,6 @@ class UnlabelComputeNodeUpdaterTest {
     void assertWithStandaloneMode() {
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(mock(ContextManager.class,
 RETURNS_DEEP_STUBS));
         UnlabelComputeNodeUpdater updater = new UnlabelComputeNodeUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", mock(UnlabelComputeNodeStatement.class)));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(mock(UnlabelComputeNodeStatement.class)));
     }
 }
diff --git 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
index 32bb2147bfa..c11316d32a0 100644
--- 
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
+++ 
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/UnlockClusterUpdaterTest.java
@@ -41,7 +41,7 @@ class UnlockClusterUpdaterTest {
         ContextManager contextManager = mock(ContextManager.class, 
RETURNS_DEEP_STUBS);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         UnlockClusterUpdater updater = new UnlockClusterUpdater();
-        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate("foo", new UnlockClusterStatement()));
+        assertThrows(UnsupportedSQLOperationException.class, () -> 
updater.executeUpdate(new UnlockClusterStatement()));
     }
     
     @Test
@@ -51,6 +51,6 @@ class UnlockClusterUpdaterTest {
         
when(contextManager.getClusterStateContext().getCurrentState()).thenReturn(ClusterState.OK);
         
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
         UnlockClusterUpdater updater = new UnlockClusterUpdater();
-        assertThrows(IllegalStateException.class, () -> 
updater.executeUpdate("foo", new UnlockClusterStatement()));
+        assertThrows(IllegalStateException.class, () -> 
updater.executeUpdate(new UnlockClusterStatement()));
     }
 }

Reply via email to