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

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


The following commit(s) were added to refs/heads/master by this push:
     new ea03871  Refactor RDLAlterUpdater.buildToBeAlteredRuleConfiguration() 
(#11151)
ea03871 is described below

commit ea03871547a90a0542096ea715f999466c47412e
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Jul 4 21:25:58 2021 +0800

    Refactor RDLAlterUpdater.buildToBeAlteredRuleConfiguration() (#11151)
---
 ...AlterDatabaseDiscoveryRuleStatementUpdater.java | 27 ++++++++++++-------
 ...rDatabaseDiscoveryRuleStatementUpdaterTest.java |  6 -----
 .../update/AlterEncryptRuleStatementUpdater.java   | 31 +++++++++++++---------
 .../AlterEncryptRuleStatementUpdaterTest.java      |  6 -----
 ...lterReadwriteSplittingRuleStatementUpdater.java | 25 ++++++++++-------
 ...ReadwriteSplittingRuleStatementUpdaterTest.java |  6 -----
 ...erShardingBindingTableRuleStatementUpdater.java | 22 ++++++++++-----
 ...ShardingBroadcastTableRuleStatementUpdater.java | 17 ++++++++----
 .../AlterShardingTableRuleStatementUpdater.java    | 27 +++++++++++--------
 ...ardingBindingTableRuleStatementUpdaterTest.java |  6 -----
 ...dingBroadcastTableRuleStatementUpdaterTest.java | 19 +++----------
 ...AlterShardingTableRuleStatementUpdaterTest.java |  6 -----
 .../infra/distsql/update/RDLAlterUpdater.java      | 14 +++++++---
 .../text/distsql/rdl/RDLBackendHandler.java        |  3 ++-
 14 files changed, 109 insertions(+), 106 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDis
 [...]
index cbc98c5..2ddf53b 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdater.java
@@ -24,11 +24,12 @@ import 
org.apache.shardingsphere.dbdiscovery.distsql.handler.converter.DatabaseD
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.segment.DatabaseDiscoveryRuleSegment;
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.AlterDatabaseDiscoveryRuleStatement;
 import org.apache.shardingsphere.dbdiscovery.spi.DatabaseDiscoveryType;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
 import 
org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -104,16 +105,23 @@ public final class 
AlterDatabaseDiscoveryRuleStatementUpdater implements RDLAlte
     }
     
     @Override
-    public void updateCurrentRuleConfiguration(final 
AlterDatabaseDiscoveryRuleStatement sqlStatement, final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
-        dropRuleConfiguration(sqlStatement, currentRuleConfig);
-        addRuleConfiguration(sqlStatement, currentRuleConfig);
+    public RuleConfiguration buildToBeAlteredRuleConfiguration(final 
AlterDatabaseDiscoveryRuleStatement sqlStatement) {
+        return 
DatabaseDiscoveryRuleStatementConverter.convert(sqlStatement.getRules());
     }
     
-    private void dropRuleConfiguration(final 
AlterDatabaseDiscoveryRuleStatement sqlStatement, final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
-        getToBeAlteredRuleNames(sqlStatement).forEach(each -> 
dropDataSourceRuleConfiguration(each, currentRuleConfig));
+    @Override
+    public void updateCurrentRuleConfiguration(final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final 
DatabaseDiscoveryRuleConfiguration toBeAlteredRuleConfig) {
+        dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+        addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+    }
+    
+    private void dropRuleConfiguration(final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final 
DatabaseDiscoveryRuleConfiguration toBeAlteredRuleConfig) {
+        for (DatabaseDiscoveryDataSourceRuleConfiguration each : 
toBeAlteredRuleConfig.getDataSources()) {
+            dropDataSourceRuleConfiguration(currentRuleConfig, each.getName());
+        }
     }
     
-    private void dropDataSourceRuleConfiguration(final String 
toBeDroppedRuleNames, final DatabaseDiscoveryRuleConfiguration 
currentRuleConfig) {
+    private void dropDataSourceRuleConfiguration(final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final String 
toBeDroppedRuleNames) {
         Optional<DatabaseDiscoveryDataSourceRuleConfiguration> 
toBeDroppedDataSourceRuleConfig
                 = currentRuleConfig.getDataSources().stream().filter(each -> 
each.getName().equals(toBeDroppedRuleNames)).findAny();
         Preconditions.checkState(toBeDroppedDataSourceRuleConfig.isPresent());
@@ -121,8 +129,7 @@ public final class 
AlterDatabaseDiscoveryRuleStatementUpdater implements RDLAlte
         
currentRuleConfig.getDiscoveryTypes().remove(toBeDroppedDataSourceRuleConfig.get().getDiscoveryTypeName());
     }
     
-    private void addRuleConfiguration(final 
AlterDatabaseDiscoveryRuleStatement sqlStatement, final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig) {
-        DatabaseDiscoveryRuleConfiguration toBeAlteredRuleConfig = 
DatabaseDiscoveryRuleStatementConverter.convert(sqlStatement.getRules());
+    private void addRuleConfiguration(final DatabaseDiscoveryRuleConfiguration 
currentRuleConfig, final DatabaseDiscoveryRuleConfiguration 
toBeAlteredRuleConfig) {
         
currentRuleConfig.getDataSources().addAll(toBeAlteredRuleConfig.getDataSources());
         
currentRuleConfig.getDiscoveryTypes().putAll(toBeAlteredRuleConfig.getDiscoveryTypes());
     }
diff --git 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabas
 [...]
index be6c05b..cbe0be13 100644
--- 
a/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-db-discovery/shardingsphere-db-discovery-distsql/shardingsphere-db-discovery-distsql-handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/AlterDatabaseDiscoveryRuleStatementUpdaterTest.java
@@ -65,12 +65,6 @@ public final class 
AlterDatabaseDiscoveryRuleStatementUpdaterTest {
         updater.checkSQLStatement("foo", createSQLStatement("INVALID_TYPE"), 
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
     }
     
-    @Test
-    public void assertUpdateCurrentRuleConfiguration() {
-        updater.updateCurrentRuleConfiguration(createSQLStatement("TEST"), 
createCurrentRuleConfiguration());
-        // TODO assert current rule configuration
-    }
-    
     private AlterDatabaseDiscoveryRuleStatement createSQLStatement(final 
String discoveryTypeName) {
         DatabaseDiscoveryRuleSegment ruleSegment = new 
DatabaseDiscoveryRuleSegment("ha_group", Arrays.asList("ds_0", "ds_1"), 
discoveryTypeName, new Properties());
         return new 
AlterDatabaseDiscoveryRuleStatement(Collections.singleton(ruleSegment));
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
index d213529..f983ce7 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdater.java
@@ -24,10 +24,11 @@ import 
org.apache.shardingsphere.encrypt.distsql.handler.converter.EncryptRuleSt
 import 
org.apache.shardingsphere.encrypt.distsql.parser.segment.EncryptRuleSegment;
 import 
org.apache.shardingsphere.encrypt.distsql.parser.statement.AlterEncryptRuleStatement;
 import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -87,22 +88,26 @@ public final class AlterEncryptRuleStatementUpdater 
implements RDLAlterUpdater<A
     }
     
     @Override
-    public void updateCurrentRuleConfiguration(final AlterEncryptRuleStatement 
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
-        dropRuleConfiguration(sqlStatement, currentRuleConfig);
-        addRuleConfiguration(sqlStatement, currentRuleConfig);
+    public RuleConfiguration buildToBeAlteredRuleConfiguration(final 
AlterEncryptRuleStatement sqlStatement) {
+        return EncryptRuleStatementConverter.convert(sqlStatement.getRules());
+    }
+    
+    @Override
+    public void updateCurrentRuleConfiguration(final EncryptRuleConfiguration 
currentRuleConfig, final EncryptRuleConfiguration toBeAlteredRuleConfig) {
+        dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+        addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
     }
     
-    private void dropRuleConfiguration(final AlterEncryptRuleStatement 
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
-        for (String each : getToBeAlteredEncryptTableNames(sqlStatement)) {
-            Optional<EncryptTableRuleConfiguration> 
toBeRemovedEncryptTableRuleConfig = 
currentRuleConfig.getTables().stream().filter(tableRule -> 
tableRule.getName().equals(each)).findAny();
-            
Preconditions.checkState(toBeRemovedEncryptTableRuleConfig.isPresent());
-            
currentRuleConfig.getTables().remove(toBeRemovedEncryptTableRuleConfig.get());
-            
toBeRemovedEncryptTableRuleConfig.get().getColumns().forEach(column -> 
currentRuleConfig.getEncryptors().remove(column.getEncryptorName()));
+    private void dropRuleConfiguration(final EncryptRuleConfiguration 
currentRuleConfig, final EncryptRuleConfiguration toBeAlteredRuleConfig) {
+        for (EncryptTableRuleConfiguration each : 
toBeAlteredRuleConfig.getTables()) {
+            Optional<EncryptTableRuleConfiguration> toBeRemovedTableRuleConfig 
= currentRuleConfig.getTables().stream().filter(tableRule -> 
tableRule.getName().equals(each.getName())).findAny();
+            Preconditions.checkState(toBeRemovedTableRuleConfig.isPresent());
+            
currentRuleConfig.getTables().remove(toBeRemovedTableRuleConfig.get());
+            toBeRemovedTableRuleConfig.get().getColumns().forEach(column -> 
currentRuleConfig.getEncryptors().remove(column.getEncryptorName()));
         }
     }
     
-    private void addRuleConfiguration(final AlterEncryptRuleStatement 
sqlStatement, final EncryptRuleConfiguration currentRuleConfig) {
-        EncryptRuleConfiguration toBeAlteredRuleConfig = 
EncryptRuleStatementConverter.convert(sqlStatement.getRules());
+    private void addRuleConfiguration(final EncryptRuleConfiguration 
currentRuleConfig, final EncryptRuleConfiguration toBeAlteredRuleConfig) {
         
currentRuleConfig.getTables().addAll(toBeAlteredRuleConfig.getTables());
         
currentRuleConfig.getEncryptors().putAll(toBeAlteredRuleConfig.getEncryptors());
     }
diff --git 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
index 4e674d3..10ac9b9 100644
--- 
a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-distsql/shardingsphere-encrypt-distsql-handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/AlterEncryptRuleStatementUpdaterTest.java
@@ -55,12 +55,6 @@ public final class AlterEncryptRuleStatementUpdaterTest {
         updater.checkSQLStatement("foo", createSQLStatement("INVALID_TYPE"), 
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
     }
     
-    @Test
-    public void assertUpdateCurrentRuleConfiguration() {
-        updater.updateCurrentRuleConfiguration(createSQLStatement("MD5"), 
createCurrentRuleConfiguration());
-        // TODO assert current rule configuration
-    }
-    
     private AlterEncryptRuleStatement createSQLStatement(final String 
encryptorName) {
         EncryptColumnSegment columnSegment = new 
EncryptColumnSegment("user_id", "user_cipher", "user_plain", new 
AlgorithmSegment(encryptorName, new Properties()));
         EncryptRuleSegment ruleSegment = new EncryptRuleSegment("t_encrypt", 
Collections.singleton(columnSegment));
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/r
 [...]
index 61ccaa6..034a7dc 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdater.java
@@ -19,11 +19,12 @@ package 
org.apache.shardingsphere.readwritesplitting.distsql.handler.update;
 
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
 import 
org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -100,23 +101,27 @@ public final class 
AlterReadwriteSplittingRuleStatementUpdater implements RDLAlt
     }
     
     @Override
-    public void updateCurrentRuleConfiguration(final 
AlterReadwriteSplittingRuleStatement sqlStatement, final 
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
-        dropRuleConfiguration(sqlStatement, currentRuleConfig);
-        addRuleConfiguration(sqlStatement, currentRuleConfig);
+    public RuleConfiguration buildToBeAlteredRuleConfiguration(final 
AlterReadwriteSplittingRuleStatement sqlStatement) {
+        return 
ReadwriteSplittingRuleStatementConverter.convert(sqlStatement.getRules());
+    }
+    
+    @Override
+    public void updateCurrentRuleConfiguration(final 
ReadwriteSplittingRuleConfiguration currentRuleConfig, final 
ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig) {
+        dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+        addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
     }
     
-    private void dropRuleConfiguration(final 
AlterReadwriteSplittingRuleStatement sqlStatement, final 
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
-        for (String each : getToBeAlteredRuleNames(sqlStatement)) {
+    private void dropRuleConfiguration(final 
ReadwriteSplittingRuleConfiguration currentRuleConfig, final 
ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig) {
+        for (ReadwriteSplittingDataSourceRuleConfiguration each : 
toBeAlteredRuleConfig.getDataSources()) {
             Optional<ReadwriteSplittingDataSourceRuleConfiguration> 
toBeRemovedDataSourceRuleConfig
-                    = 
currentRuleConfig.getDataSources().stream().filter(dataSource -> 
each.equals(dataSource.getName())).findAny();
+                    = 
currentRuleConfig.getDataSources().stream().filter(dataSource -> 
each.getName().equals(dataSource.getName())).findAny();
             
Preconditions.checkState(toBeRemovedDataSourceRuleConfig.isPresent());
             
currentRuleConfig.getDataSources().remove(toBeRemovedDataSourceRuleConfig.get());
             
currentRuleConfig.getLoadBalancers().remove(toBeRemovedDataSourceRuleConfig.get().getLoadBalancerName());
         }
     }
     
-    private void addRuleConfiguration(final 
AlterReadwriteSplittingRuleStatement sqlStatement, final 
ReadwriteSplittingRuleConfiguration currentRuleConfig) {
-        ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig = 
ReadwriteSplittingRuleStatementConverter.convert(sqlStatement.getRules());
+    private void addRuleConfiguration(final 
ReadwriteSplittingRuleConfiguration currentRuleConfig, final 
ReadwriteSplittingRuleConfiguration toBeAlteredRuleConfig) {
         
currentRuleConfig.getDataSources().addAll(toBeAlteredRuleConfig.getDataSources());
         
currentRuleConfig.getLoadBalancers().putAll(toBeAlteredRuleConfig.getLoadBalancers());
     }
diff --git 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphe
 [...]
index 4604f95..ae617e2 100644
--- 
a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingRuleStatementUpdaterTest.java
@@ -64,12 +64,6 @@ public final class 
AlterReadwriteSplittingRuleStatementUpdaterTest {
         updater.checkSQLStatement("foo", createSQLStatement("INVALID_TYPE"), 
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
     }
     
-    @Test
-    public void assertUpdateCurrentRuleConfiguration() {
-        updater.updateCurrentRuleConfiguration(createSQLStatement("TEST"), 
createCurrentRuleConfiguration());
-        // TODO assert current rule configuration
-    }
-    
     private AlterReadwriteSplittingRuleStatement createSQLStatement(final 
String loadBalancerTypeName) {
         ReadwriteSplittingRuleSegment ruleSegment = new 
ReadwriteSplittingRuleSegment("readwrite_ds", "write_ds", 
Arrays.asList("read_ds_0", "ds_read_ds_1"), loadBalancerTypeName, new 
Properties());
         return new 
AlterReadwriteSplittingRuleStatement(Collections.singleton(ruleSegment));
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
index 39c2427..2d98c9e 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBindingTableRuleStatementUpdater.java
@@ -17,10 +17,11 @@
 
 package org.apache.shardingsphere.sharding.distsql.handler.update;
 
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
+import org.apache.shardingsphere.infra.config.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
@@ -76,19 +77,26 @@ public final class 
AlterShardingBindingTableRuleStatementUpdater implements RDLA
     }
     
     @Override
-    public void updateCurrentRuleConfiguration(final 
AlterShardingBindingTableRulesStatement sqlStatement, final 
ShardingRuleConfiguration currentRuleConfig) {
+    public RuleConfiguration buildToBeAlteredRuleConfiguration(final 
AlterShardingBindingTableRulesStatement sqlStatement) {
+        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+        for (BindingTableRuleSegment each : sqlStatement.getRules()) {
+            result.getBindingTableGroups().add(each.getTableGroups());
+        }
+        return result;
+    }
+    
+    @Override
+    public void updateCurrentRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
         dropRuleConfiguration(currentRuleConfig);
-        addRuleConfiguration(sqlStatement, currentRuleConfig);
+        addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
     }
     
     private void dropRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig) {
         currentRuleConfig.getBindingTableGroups().clear();
     }
     
-    private void addRuleConfiguration(final 
AlterShardingBindingTableRulesStatement sqlStatement, final 
ShardingRuleConfiguration currentRuleConfig) {
-        for (BindingTableRuleSegment each : sqlStatement.getRules()) {
-            
currentRuleConfig.getBindingTableGroups().add(each.getTableGroups());
-        }
+    private void addRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+        
currentRuleConfig.getBindingTableGroups().addAll(toBeAlteredRuleConfig.getBindingTableGroups());
     }
     
     @Override
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementU
 [...]
index 507e960..b85c168 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingBroadcastTableRuleStatementUpdater.java
@@ -17,9 +17,9 @@
 
 package org.apache.shardingsphere.sharding.distsql.handler.update;
 
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
@@ -42,17 +42,24 @@ public final class 
AlterShardingBroadcastTableRuleStatementUpdater implements RD
     }
     
     @Override
-    public void updateCurrentRuleConfiguration(final 
AlterShardingBroadcastTableRulesStatement sqlStatement, final 
ShardingRuleConfiguration currentRuleConfig) {
+    public ShardingRuleConfiguration buildToBeAlteredRuleConfiguration(final 
AlterShardingBroadcastTableRulesStatement sqlStatement) {
+        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
+        result.setBroadcastTables(sqlStatement.getTables());
+        return result;
+    }
+    
+    @Override
+    public void updateCurrentRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
         dropRuleConfiguration(currentRuleConfig);
-        addRuleConfiguration(sqlStatement, currentRuleConfig);
+        addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
     }
     
     private void dropRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig) {
         currentRuleConfig.getBroadcastTables().clear();
     }
     
-    private void addRuleConfiguration(final 
AlterShardingBroadcastTableRulesStatement sqlStatement, final 
ShardingRuleConfiguration currentRuleConfig) {
-        
currentRuleConfig.getBroadcastTables().addAll(sqlStatement.getTables());
+    private void addRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+        
currentRuleConfig.getBroadcastTables().addAll(toBeAlteredRuleConfig.getBroadcastTables());
     }
     
     @Override
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
index 94e8ce0..d3b81bc 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
@@ -18,12 +18,12 @@
 package org.apache.shardingsphere.sharding.distsql.handler.update;
 
 import com.google.common.base.Preconditions;
-import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
 import 
org.apache.shardingsphere.infra.distsql.exception.resource.RequiredResourceMissedException;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.InvalidAlgorithmConfigurationException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
+import org.apache.shardingsphere.infra.distsql.update.RDLAlterUpdater;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.infra.spi.typed.TypedSPIRegistry;
@@ -142,14 +142,20 @@ public final class AlterShardingTableRuleStatementUpdater 
implements RDLAlterUpd
     }
     
     @Override
-    public void updateCurrentRuleConfiguration(final 
AlterShardingTableRuleStatement sqlStatement, final ShardingRuleConfiguration 
currentRuleConfig) {
-        dropRuleConfiguration(sqlStatement, currentRuleConfig);
-        addRuleConfiguration(sqlStatement, currentRuleConfig);
+    public ShardingRuleConfiguration buildToBeAlteredRuleConfiguration(final 
AlterShardingTableRuleStatement sqlStatement) {
+        return ShardingRuleStatementConverter.convert(sqlStatement.getRules());
+    }
+    
+    @Override
+    public void updateCurrentRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+        dropRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
+        addRuleConfiguration(currentRuleConfig, toBeAlteredRuleConfig);
     }
     
-    private void dropRuleConfiguration(final AlterShardingTableRuleStatement 
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
-        for (String each : getToBeAlteredTableNames(sqlStatement)) {
-            Optional<ShardingAutoTableRuleConfiguration> 
shardingAutoTableRuleConfig = 
currentRuleConfig.getAutoTables().stream().filter(tableRule -> 
each.equals(tableRule.getLogicTable())).findAny();
+    private void dropRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
+        for (ShardingTableRuleConfiguration each : 
toBeAlteredRuleConfig.getTables()) {
+            Optional<ShardingAutoTableRuleConfiguration> 
shardingAutoTableRuleConfig
+                    = 
currentRuleConfig.getAutoTables().stream().filter(tableRule -> 
each.getLogicTable().equals(tableRule.getLogicTable())).findAny();
             Preconditions.checkState(shardingAutoTableRuleConfig.isPresent());
             
currentRuleConfig.getAutoTables().remove(shardingAutoTableRuleConfig.get());
             
currentRuleConfig.getShardingAlgorithms().remove(shardingAutoTableRuleConfig.get().getShardingStrategy().getShardingAlgorithmName());
@@ -159,8 +165,7 @@ public final class AlterShardingTableRuleStatementUpdater 
implements RDLAlterUpd
         }
     }
     
-    private void addRuleConfiguration(final AlterShardingTableRuleStatement 
sqlStatement, final ShardingRuleConfiguration currentRuleConfig) {
-        ShardingRuleConfiguration toBeAlteredRuleConfig = 
ShardingRuleStatementConverter.convert(sqlStatement.getRules());
+    private void addRuleConfiguration(final ShardingRuleConfiguration 
currentRuleConfig, final ShardingRuleConfiguration toBeAlteredRuleConfig) {
         
currentRuleConfig.getAutoTables().addAll(toBeAlteredRuleConfig.getAutoTables());
         
currentRuleConfig.getShardingAlgorithms().putAll(toBeAlteredRuleConfig.getShardingAlgorithms());
         
currentRuleConfig.getKeyGenerators().putAll(toBeAlteredRuleConfig.getKeyGenerators());
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
index b3a038e..10ab1cc 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBindingTableRuleStatementUpdaterTest.java
@@ -47,12 +47,6 @@ public final class 
AlterShardingBindingTableRuleStatementUpdaterTest {
         updater.checkSQLStatement("foo", createDuplicatedSQLStatement(), 
createCurrentRuleConfiguration(), mock(ShardingSphereResource.class));
     }
     
-    @Test
-    public void assertUpdateCurrentRuleConfiguration() {
-        updater.updateCurrentRuleConfiguration(createDuplicatedSQLStatement(), 
createCurrentRuleConfiguration());
-        // TODO assert current rule configuration
-    }
-    
     private AlterShardingBindingTableRulesStatement createSQLStatement() {
         return new AlterShardingBindingTableRulesStatement(Arrays.asList(new 
BindingTableRuleSegment("t_order,t_order_item"), new 
BindingTableRuleSegment("t_1,t_2")));
     }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
index ba94f2d..88f6e9b 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingBroadcastTableRuleStatementUpdaterTest.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.distsql.update;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
-import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.distsql.handler.update.AlterShardingBroadcastTableRuleStatementUpdater;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
 import org.junit.Test;
@@ -35,22 +34,10 @@ public final class 
AlterShardingBroadcastTableRuleStatementUpdaterTest {
     
     @Test(expected = RequiredRuleMissedException.class)
     public void assertCheckSQLStatementWithoutCurrentRule() throws 
RuleDefinitionViolationException {
-        updater.checkSQLStatement("foo", createSQLStatement("t_1"), null, 
mock(ShardingSphereResource.class));
+        updater.checkSQLStatement("foo", createSQLStatement(), null, 
mock(ShardingSphereResource.class));
     }
     
-    @Test
-    public void assertUpdateCurrentRuleConfiguration() {
-        updater.updateCurrentRuleConfiguration(createSQLStatement("t_2"), 
createCurrentRuleConfiguration());
-        // TODO assert current rule configuration
-    }
-    
-    private AlterShardingBroadcastTableRulesStatement createSQLStatement(final 
String broadcastTableName) {
-        return new 
AlterShardingBroadcastTableRulesStatement(Collections.singleton(broadcastTableName));
-    }
-    
-    private ShardingRuleConfiguration createCurrentRuleConfiguration() {
-        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
-        result.getBroadcastTables().add("t_1");
-        return result;
+    private AlterShardingBroadcastTableRulesStatement createSQLStatement() {
+        return new 
AlterShardingBroadcastTableRulesStatement(Collections.singleton("t_1"));
     }
 }
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
index fc6c8d4..55ee1e4 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/AlterShardingTableRuleStatementUpdaterTest.java
@@ -62,12 +62,6 @@ public final class 
AlterShardingTableRuleStatementUpdaterTest {
         updater.checkSQLStatement("foo", createSQLStatement("t_order", 
"INVALID_TYPE"), createCurrentRuleConfiguration(), 
mock(ShardingSphereResource.class));
     }
     
-    @Test
-    public void assertUpdateCurrentRuleConfiguration() {
-        updater.updateCurrentRuleConfiguration(createSQLStatement("t_order", 
"STANDARD_TEST"), createCurrentRuleConfiguration());
-        // TODO assert current rule configuration
-    }
-    
     private AlterShardingTableRuleStatement createSQLStatement(final String 
tableName, final String shardingAlgorithmName) {
         TableRuleSegment ruleSegment = new TableRuleSegment(tableName, 
Arrays.asList("ds_0", "ds_1"), "order_id", new 
AlgorithmSegment(shardingAlgorithmName, new Properties()), null, null);
         return new 
AlterShardingTableRuleStatement(Collections.singleton(ruleSegment));
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
index 666aee5..b668a69 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/distsql/update/RDLAlterUpdater.java
@@ -29,10 +29,18 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 public interface RDLAlterUpdater<T extends SQLStatement, R extends 
RuleConfiguration> extends RDLUpdater<T, R> {
     
     /**
-     * Update current rule configuration.
-     * 
+     * Build to be altered rule configuration.
+     *
      * @param sqlStatement SQL statement
+     * @return built to be altered rule configuration
+     */
+    RuleConfiguration buildToBeAlteredRuleConfiguration(T sqlStatement);
+    
+    /**
+     * Update current rule configuration.
+     *
      * @param currentRuleConfig current rule configuration to be updated
+     * @param toBeAlteredRuleConfig to be altered rule configuration
      */
-    void updateCurrentRuleConfiguration(T sqlStatement, R currentRuleConfig);
+    void updateCurrentRuleConfiguration(R currentRuleConfig, R 
toBeAlteredRuleConfig);
 }
diff --git 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
index ec3a4b0..a613da5 100644
--- 
a/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
+++ 
b/shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/RDLBackendHandler.java
@@ -98,7 +98,8 @@ public final class RDLBackendHandler<T extends SQLStatement> 
extends SchemaRequi
     
     @SuppressWarnings({"rawtypes", "unchecked"})
     private void processAlter(final T sqlStatement, final RDLAlterUpdater 
updater, final RuleConfiguration currentRuleConfig) {
-        updater.updateCurrentRuleConfiguration(sqlStatement, 
currentRuleConfig);
+        RuleConfiguration toBeAlteredRuleConfig = 
updater.buildToBeAlteredRuleConfiguration(sqlStatement);
+        updater.updateCurrentRuleConfiguration(toBeAlteredRuleConfig, 
currentRuleConfig);
     }
     
     @SuppressWarnings({"rawtypes", "unchecked"})

Reply via email to