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

jianglongtao 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 58946adaf34 Method parameter adjustment in 
RuleDefinitionCreateUpdater. (#23172)
58946adaf34 is described below

commit 58946adaf34f604c8955d426b256f8ca24643742
Author: yx9o <[email protected]>
AuthorDate: Fri Dec 30 21:40:52 2022 +0800

    Method parameter adjustment in RuleDefinitionCreateUpdater. (#23172)
    
    * Method parameter adjustment in RuleDefinitionCreateUpdater.
    
    * Update.
    
    * Update.
---
 .../handler/update/RuleDefinitionCreateUpdater.java      |  9 +++++----
 ...CreateDatabaseDiscoveryHeartbeatStatementUpdater.java |  3 ++-
 .../CreateDatabaseDiscoveryRuleStatementUpdater.java     |  2 +-
 .../CreateDatabaseDiscoveryTypeStatementUpdater.java     |  2 +-
 ...teDatabaseDiscoveryHeartbeatStatementUpdaterTest.java |  2 +-
 ...seDiscoveryProviderAlgorithmStatementUpdaterTest.java |  8 ++++----
 .../CreateDatabaseDiscoveryRuleStatementUpdaterTest.java | 16 ++++++++--------
 .../update/CreateEncryptRuleStatementUpdater.java        |  2 +-
 .../update/CreateEncryptRuleStatementUpdaterTest.java    |  2 +-
 .../handler/update/CreateMaskRuleStatementUpdater.java   |  2 +-
 .../CreateReadwriteSplittingRuleStatementUpdater.java    |  3 ++-
 ...CreateReadwriteSplittingRuleStatementUpdaterTest.java |  2 +-
 .../CreateDefaultShadowAlgorithmStatementUpdater.java    |  2 +-
 .../handler/update/CreateShadowRuleStatementUpdater.java |  2 +-
 .../update/CreateBroadcastTableRuleStatementUpdater.java |  2 +-
 .../CreateDefaultShardingStrategyStatementUpdater.java   |  8 ++++----
 ...CreateShardingTableReferenceRuleStatementUpdater.java |  4 ++--
 .../update/CreateShardingTableRuleStatementUpdater.java  |  2 +-
 .../CreateBroadcastTableRuleStatementUpdaterTest.java    |  6 +++---
 ...reateDefaultShardingStrategyStatementUpdaterTest.java | 16 ++++++++--------
 ...teShardingTableReferenceRuleStatementUpdaterTest.java |  2 +-
 .../CreateShardingTableRuleStatementUpdaterTest.java     |  6 +++---
 .../distsql/rdl/rule/RuleDefinitionBackendHandler.java   |  2 +-
 ...SetDefaultSingleTableStorageUnitStatementUpdater.java |  4 ++--
 .../fixture/FixtureRuleDefinitionCreateUpdater.java      |  4 ++--
 .../SetDefaultSingleTableStorageUnitUpdaterTest.java     |  8 ++++----
 26 files changed, 62 insertions(+), 59 deletions(-)

diff --git 
a/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionCreateUpdater.java
 
b/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionCreateUpdater.java
index e2e8981ca3f..3ee160c44db 100644
--- 
a/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionCreateUpdater.java
+++ 
b/distsql/handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionCreateUpdater.java
@@ -22,7 +22,7 @@ import 
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
 
 /**
  * Create rule definition updater.
- * 
+ *
  * @param <T> type of SQL statement
  * @param <R> type of rule configuration
  */
@@ -30,15 +30,16 @@ public interface RuleDefinitionCreateUpdater<T extends 
SQLStatement, R extends R
     
     /**
      * Build to be created rule configuration.
-     * 
+     *
+     * @param currentRuleConfig current rule configuration to be updated
      * @param sqlStatement SQL statement
      * @return built to be created rule configuration
      */
-    RuleConfiguration buildToBeCreatedRuleConfiguration(T sqlStatement);
+    RuleConfiguration buildToBeCreatedRuleConfiguration(R currentRuleConfig, T 
sqlStatement);
     
     /**
      * Update current rule configuration.
-     * 
+     *
      * @param currentRuleConfig current rule configuration to be updated
      * @param toBeCreatedRuleConfig to be created rule configuration
      */
diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdater.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdater.java
index 206ff0d93c1..8560f2392d4 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdater.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdater.java
@@ -35,7 +35,8 @@ public final class 
CreateDatabaseDiscoveryHeartbeatStatementUpdater implements R
     private static final String RULE_TYPE = "database discovery";
     
     @Override
-    public DatabaseDiscoveryRuleConfiguration 
buildToBeCreatedRuleConfiguration(final 
CreateDatabaseDiscoveryHeartbeatStatement sqlStatement) {
+    public DatabaseDiscoveryRuleConfiguration 
buildToBeCreatedRuleConfiguration(final DatabaseDiscoveryRuleConfiguration 
currentRuleConfig,
+                                                                               
 final CreateDatabaseDiscoveryHeartbeatStatement sqlStatement) {
         return 
DatabaseDiscoveryRuleStatementConverter.convertDiscoveryHeartbeat(sqlStatement.getHeartbeats());
     }
     
diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
index 9082ce38fe8..1f79d5e006c 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdater.java
@@ -95,7 +95,7 @@ public final class 
CreateDatabaseDiscoveryRuleStatementUpdater implements RuleDe
     }
     
     @Override
-    public DatabaseDiscoveryRuleConfiguration 
buildToBeCreatedRuleConfiguration(final CreateDatabaseDiscoveryRuleStatement 
sqlStatement) {
+    public DatabaseDiscoveryRuleConfiguration 
buildToBeCreatedRuleConfiguration(final DatabaseDiscoveryRuleConfiguration 
currentRuleConfig, final CreateDatabaseDiscoveryRuleStatement sqlStatement) {
         return 
DatabaseDiscoveryRuleStatementConverter.convert(sqlStatement.getRules());
     }
     
diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryTypeStatementUpdater.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryTypeStatementUpdater.java
index f6f14995f51..7382eed030e 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryTypeStatementUpdater.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryTypeStatementUpdater.java
@@ -71,7 +71,7 @@ public final class 
CreateDatabaseDiscoveryTypeStatementUpdater implements RuleDe
     }
     
     @Override
-    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateDatabaseDiscoveryTypeStatement sqlStatement) {
+    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
DatabaseDiscoveryRuleConfiguration currentRuleConfig, final 
CreateDatabaseDiscoveryTypeStatement sqlStatement) {
         return 
DatabaseDiscoveryRuleStatementConverter.convertDiscoveryProviderAlgorithm(sqlStatement.getProviders());
     }
     
diff --git 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdaterTest.java
 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdaterTest.java
index 5e3afb31090..88e280009dc 100644
--- 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdaterTest.java
+++ 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryHeartbeatStatementUpdaterTest.java
@@ -64,8 +64,8 @@ public final class 
CreateDatabaseDiscoveryHeartbeatStatementUpdaterTest {
     public void assertUpdate() {
         DatabaseDiscoveryHeartbeatSegment segment1 = new 
DatabaseDiscoveryHeartbeatSegment("heartbeat_1", createProperties("key_1", 
"value_1"));
         DatabaseDiscoveryHeartbeatSegment segment2 = new 
DatabaseDiscoveryHeartbeatSegment("heartbeat_2", createProperties("key_2", 
"value_2"));
-        DatabaseDiscoveryRuleConfiguration ruleConfig = 
updater.buildToBeCreatedRuleConfiguration(new 
CreateDatabaseDiscoveryHeartbeatStatement(Arrays.asList(segment1, segment2)));
         DatabaseDiscoveryRuleConfiguration currentConfig = new 
DatabaseDiscoveryRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>(), 
new LinkedHashMap<>());
+        DatabaseDiscoveryRuleConfiguration ruleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig, new 
CreateDatabaseDiscoveryHeartbeatStatement(Arrays.asList(segment1, segment2)));
         updater.updateCurrentRuleConfiguration(currentConfig, ruleConfig);
         assertThat(currentConfig.getDiscoveryHeartbeats().size(), is(2));
         
assertThat(currentConfig.getDiscoveryHeartbeats().get("heartbeat_1").getProps(),
 is(createProperties("key_1", "value_1")));
diff --git 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryProviderAlgorithmStatementUpdaterTest.java
 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryProviderAlgorithmStatementUpdaterTest.java
index f939387791c..43874b4be5f 100644
--- 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryProviderAlgorithmStatementUpdaterTest.java
+++ 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryProviderAlgorithmStatementUpdaterTest.java
@@ -21,10 +21,10 @@ import 
org.apache.shardingsphere.dbdiscovery.api.config.DatabaseDiscoveryRuleCon
 import 
org.apache.shardingsphere.dbdiscovery.api.config.rule.DatabaseDiscoveryDataSourceRuleConfiguration;
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.segment.DatabaseDiscoveryProviderAlgorithmSegment;
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryTypeStatement;
+import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.InvalidAlgorithmConfigurationException;
+import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
 import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
-import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.InvalidAlgorithmConfigurationException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -82,9 +82,9 @@ public final class 
CreateDatabaseDiscoveryProviderAlgorithmStatementUpdaterTest
         Collection<DatabaseDiscoveryProviderAlgorithmSegment> 
algorithmSegments = Collections.singleton(
                 new 
DatabaseDiscoveryProviderAlgorithmSegment("discovery_type", new 
AlgorithmSegment("DISTSQL.FIXTURE", new Properties())));
         updater.checkSQLStatement(database, new 
CreateDatabaseDiscoveryTypeStatement(algorithmSegments), null);
-        DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig =
-                (DatabaseDiscoveryRuleConfiguration) 
updater.buildToBeCreatedRuleConfiguration(new 
CreateDatabaseDiscoveryTypeStatement(algorithmSegments));
         DatabaseDiscoveryRuleConfiguration currentConfig = new 
DatabaseDiscoveryRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>(), 
new LinkedHashMap<>());
+        DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig =
+                (DatabaseDiscoveryRuleConfiguration) 
updater.buildToBeCreatedRuleConfiguration(currentConfig, new 
CreateDatabaseDiscoveryTypeStatement(algorithmSegments));
         updater.updateCurrentRuleConfiguration(currentConfig, 
databaseDiscoveryRuleConfig);
         assertThat(currentConfig.getDiscoveryTypes().size(), is(1));
         
assertThat(currentConfig.getDiscoveryTypes().get("discovery_type").getType(), 
is("DISTSQL.FIXTURE"));
diff --git 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdaterTest.java
 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdaterTest.java
index 046083a76ca..96e15279cc5 100644
--- 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdaterTest.java
+++ 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/CreateDatabaseDiscoveryRuleStatementUpdaterTest.java
@@ -23,9 +23,9 @@ import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.segment.AbstractData
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.segment.DatabaseDiscoveryDefinitionSegment;
 import 
org.apache.shardingsphere.dbdiscovery.distsql.parser.statement.CreateDatabaseDiscoveryRuleStatement;
 import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.InvalidAlgorithmConfigurationException;
-import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
-import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
+import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
 import org.junit.Before;
@@ -97,7 +97,7 @@ public final class 
CreateDatabaseDiscoveryRuleStatementUpdaterTest {
         AlgorithmSegment algorithmSegment = new AlgorithmSegment("MySQL.MGR", 
new Properties());
         DatabaseDiscoveryDefinitionSegment definitionSegment = new 
DatabaseDiscoveryDefinitionSegment("readwrite_ds_1", Arrays.asList("ds_read_0", 
"ds_read_1"), algorithmSegment, new Properties());
         DatabaseDiscoveryRuleConfiguration ruleConfig =
-                updater.buildToBeCreatedRuleConfiguration(new 
CreateDatabaseDiscoveryRuleStatement(false, 
Collections.singletonList(definitionSegment)));
+                updater.buildToBeCreatedRuleConfiguration(null, new 
CreateDatabaseDiscoveryRuleStatement(false, 
Collections.singletonList(definitionSegment)));
         assertThat(ruleConfig.getDataSources().size(), is(1));
         
assertTrue(ruleConfig.getDataSources().stream().map(DatabaseDiscoveryDataSourceRuleConfiguration::getGroupName)
                 
.collect(Collectors.toList()).removeAll(Collections.singletonList("readwrite_ds_1")));
@@ -109,9 +109,9 @@ public final class 
CreateDatabaseDiscoveryRuleStatementUpdaterTest {
     public void assertUpdate() {
         AlgorithmSegment algorithmSegment = new AlgorithmSegment("MySQL.MGR", 
new Properties());
         DatabaseDiscoveryDefinitionSegment definitionSegment = new 
DatabaseDiscoveryDefinitionSegment("readwrite_ds_1", Arrays.asList("ds_read_0", 
"ds_read_1"), algorithmSegment, new Properties());
-        DatabaseDiscoveryRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(
-                new CreateDatabaseDiscoveryRuleStatement(false, 
Collections.singletonList(definitionSegment)));
         DatabaseDiscoveryRuleConfiguration currentConfig = new 
DatabaseDiscoveryRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>(), 
new LinkedHashMap<>());
+        DatabaseDiscoveryRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig,
+                new CreateDatabaseDiscoveryRuleStatement(false, 
Collections.singletonList(definitionSegment)));
         updater.updateCurrentRuleConfiguration(currentConfig, 
toBeCreatedRuleConfig);
         assertThat(currentConfig.getDataSources().size(), is(1));
         
assertTrue(currentConfig.getDataSources().stream().map(DatabaseDiscoveryDataSourceRuleConfiguration::getGroupName)
@@ -130,9 +130,9 @@ public final class 
CreateDatabaseDiscoveryRuleStatementUpdaterTest {
         Collection<AbstractDatabaseDiscoverySegment> currentRules = new 
LinkedList<>();
         currentRules.add(definitionSegmentDS1);
         currentRules.add(definitionSegmentDS2);
-        DatabaseDiscoveryRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(
-                new CreateDatabaseDiscoveryRuleStatement(false, currentRules));
         DatabaseDiscoveryRuleConfiguration currentConfig = new 
DatabaseDiscoveryRuleConfiguration(new LinkedList<>(), new LinkedHashMap<>(), 
new LinkedHashMap<>());
+        DatabaseDiscoveryRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig,
+                new CreateDatabaseDiscoveryRuleStatement(false, currentRules));
         updater.updateCurrentRuleConfiguration(currentConfig, 
toBeCreatedRuleConfig);
         definitionSegmentDS1 = new 
DatabaseDiscoveryDefinitionSegment("readwrite_ds_1", Arrays.asList("ds_read_0", 
"ds_read_1", "ds_read_3"), algorithmSegment, new Properties());
         definitionSegmentDS2 = new 
DatabaseDiscoveryDefinitionSegment("readwrite_ds_2", Arrays.asList("ds_read_0", 
"ds_read_1", "ds_read_3"), algorithmSegment, new Properties());
@@ -141,7 +141,7 @@ public final class 
CreateDatabaseDiscoveryRuleStatementUpdaterTest {
         rules.add(definitionSegmentDS2);
         CreateDatabaseDiscoveryRuleStatement statement = new 
CreateDatabaseDiscoveryRuleStatement(true, rules);
         updater.checkSQLStatement(database, statement, currentConfig);
-        toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig, statement);
         updater.updateCurrentRuleConfiguration(currentConfig, 
toBeCreatedRuleConfig);
         assertThat(currentConfig.getDataSources().size(), is(2));
         
assertTrue(currentConfig.getDataSources().stream().map(DatabaseDiscoveryDataSourceRuleConfiguration::getGroupName)
diff --git 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
index 14b78cdd940..47687d5d9f4 100644
--- 
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
+++ 
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdater.java
@@ -88,7 +88,7 @@ public final class CreateEncryptRuleStatementUpdater 
implements RuleDefinitionCr
     }
     
     @Override
-    public EncryptRuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateEncryptRuleStatement sqlStatement) {
+    public EncryptRuleConfiguration buildToBeCreatedRuleConfiguration(final 
EncryptRuleConfiguration currentRuleConfig, final CreateEncryptRuleStatement 
sqlStatement) {
         return EncryptRuleStatementConverter.convert(sqlStatement.getRules());
     }
     
diff --git 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
index 1752a369ef6..15f2d8c7f28 100644
--- 
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
+++ 
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/update/CreateEncryptRuleStatementUpdaterTest.java
@@ -77,7 +77,7 @@ public final class CreateEncryptRuleStatementUpdaterTest {
         EncryptRuleConfiguration currentRuleConfig = getCurrentRuleConfig();
         CreateEncryptRuleStatement sqlStatement = createSQLStatement(true, 
"AES");
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
-        EncryptRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(sqlStatement);
+        EncryptRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         assertThat(currentRuleConfig.getTables().size(), is(2));
         assertTrue(currentRuleConfig.getEncryptors().isEmpty());
diff --git 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
index 29d937b00fb..006a298c88d 100644
--- 
a/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
+++ 
b/features/mask/distsql/handler/src/main/java/org/apache/shardingsphere/mask/distsql/handler/update/CreateMaskRuleStatementUpdater.java
@@ -73,7 +73,7 @@ public final class CreateMaskRuleStatementUpdater implements 
RuleDefinitionCreat
     }
     
     @Override
-    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateMaskRuleStatement sqlStatement) {
+    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
MaskRuleConfiguration currentRuleConfig, final CreateMaskRuleStatement 
sqlStatement) {
         return MaskRuleStatementConverter.convert(sqlStatement.getRules());
     }
     
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdater.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdater.java
index 16518701820..503955ad537 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdater.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdater.java
@@ -43,7 +43,8 @@ public final class 
CreateReadwriteSplittingRuleStatementUpdater implements RuleD
     }
     
     @Override
-    public ReadwriteSplittingRuleConfiguration 
buildToBeCreatedRuleConfiguration(final CreateReadwriteSplittingRuleStatement 
sqlStatement) {
+    public ReadwriteSplittingRuleConfiguration 
buildToBeCreatedRuleConfiguration(final ReadwriteSplittingRuleConfiguration 
currentRuleConfig,
+                                                                               
  final CreateReadwriteSplittingRuleStatement sqlStatement) {
         Collection<ReadwriteSplittingRuleSegment> segments = 
sqlStatement.getRules();
         if (!duplicatedRuleNames.isEmpty()) {
             segments.removeIf(each -> 
duplicatedRuleNames.contains(each.getName()));
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
index af833c08da5..0190bd9ef57 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/CreateReadwriteSplittingRuleStatementUpdaterTest.java
@@ -142,8 +142,8 @@ public final class 
CreateReadwriteSplittingRuleStatementUpdaterTest {
             ReadwriteSplittingRuleSegment staticSegment = new 
ReadwriteSplittingRuleSegment("static_rule", "write_ds_0", 
Arrays.asList("read_ds_0", "read_ds_1"), "TEST", new Properties());
             CreateReadwriteSplittingRuleStatement statement = 
createSQLStatement(false, dynamicSegment, staticSegment);
             updater.checkSQLStatement(database, statement, null);
-            ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
             ReadwriteSplittingRuleConfiguration currentRuleConfig = new 
ReadwriteSplittingRuleConfiguration(new ArrayList<>(), new HashMap<>());
+            ReadwriteSplittingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
             updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
             assertThat(currentRuleConfig.getDataSources().size(), is(2));
         }
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
index 229b49399d0..e471da2e90a 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateDefaultShadowAlgorithmStatementUpdater.java
@@ -47,7 +47,7 @@ public final class 
CreateDefaultShadowAlgorithmStatementUpdater implements RuleD
     private static final String DEFAULT_ALGORITHM_NAME = 
"default_shadow_algorithm";
     
     @Override
-    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateDefaultShadowAlgorithmStatement sqlStatement) {
+    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
ShadowRuleConfiguration currentRuleConfig, final 
CreateDefaultShadowAlgorithmStatement sqlStatement) {
         ShadowRuleConfiguration result = new ShadowRuleConfiguration();
         result.setShadowAlgorithms(buildAlgorithmMap(sqlStatement));
         result.setDefaultShadowAlgorithmName(DEFAULT_ALGORITHM_NAME);
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
index 4af3dbd5aa1..514e43b6940 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/CreateShadowRuleStatementUpdater.java
@@ -46,7 +46,7 @@ public final class CreateShadowRuleStatementUpdater 
implements RuleDefinitionCre
     private Collection<String> duplicatedRuleNames = new LinkedList<>();
     
     @Override
-    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateShadowRuleStatement sqlStatement) {
+    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
ShadowRuleConfiguration currentRuleConfig, final CreateShadowRuleStatement 
sqlStatement) {
         Collection<ShadowRuleSegment> segments = sqlStatement.getRules();
         if (!duplicatedRuleNames.isEmpty()) {
             segments.removeIf(each -> 
duplicatedRuleNames.contains(each.getRuleName()));
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateBroadcastTableRuleStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateBroadcastTableRuleStatementUpdater.java
index cae41635af4..6a5ec3e0a3d 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateBroadcastTableRuleStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateBroadcastTableRuleStatementUpdater.java
@@ -55,7 +55,7 @@ public final class CreateBroadcastTableRuleStatementUpdater 
implements RuleDefin
     }
     
     @Override
-    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateBroadcastTableRuleStatement sqlStatement) {
+    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
ShardingRuleConfiguration currentRuleConfig, final 
CreateBroadcastTableRuleStatement sqlStatement) {
         ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         result.setBroadcastTables(sqlStatement.getTables());
         return result;
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
index d13a20d032a..4837896ffd5 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyStatementUpdater.java
@@ -17,13 +17,13 @@
 
 package org.apache.shardingsphere.sharding.distsql.handler.update;
 
-import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
-import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
-import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.InvalidAlgorithmConfigurationException;
 import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.MissingRequiredAlgorithmException;
+import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.distsql.handler.exception.rule.MissingRequiredRuleException;
 import 
org.apache.shardingsphere.distsql.handler.update.RuleDefinitionCreateUpdater;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
@@ -79,7 +79,7 @@ public final class 
CreateDefaultShardingStrategyStatementUpdater implements Rule
     }
     
     @Override
-    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateDefaultShardingStrategyStatement sqlStatement) {
+    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
ShardingRuleConfiguration currentRuleConfig, final 
CreateDefaultShardingStrategyStatement sqlStatement) {
         ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         String shardingAlgorithmName = getShardingAlgorithmName(sqlStatement, 
result);
         ShardingStrategyConfiguration strategyConfig = 
ShardingTableRuleStatementConverter.createStrategyConfiguration(
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
index bf513f92ec5..4476b17cd06 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableReferenceRuleStatementUpdater.java
@@ -92,7 +92,7 @@ public final class 
CreateShardingTableReferenceRuleStatementUpdater implements R
     }
     
     private void checkShardingTableReferenceRulesValid(final 
CreateShardingTableReferenceRuleStatement sqlStatement, final 
ShardingRuleConfiguration currentRuleConfig) {
-        Collection<ShardingTableReferenceRuleConfiguration> bindingTableGroups 
= buildToBeCreatedRuleConfiguration(sqlStatement).getBindingTableGroups();
+        Collection<ShardingTableReferenceRuleConfiguration> bindingTableGroups 
= buildToBeCreatedRuleConfiguration(currentRuleConfig, 
sqlStatement).getBindingTableGroups();
         Collection<String> names = 
bindingTableGroups.stream().map(ShardingTableReferenceRuleConfiguration::getName).collect(Collectors.toList());
         
ShardingSpherePreconditions.checkState(ShardingTableRuleStatementChecker.isValidBindingTableGroups(bindingTableGroups,
 currentRuleConfig),
                 () -> new InvalidRuleConfigurationException("sharding table", 
names, Collections.singleton("invalid sharding table reference.")));
@@ -107,7 +107,7 @@ public final class 
CreateShardingTableReferenceRuleStatementUpdater implements R
     }
     
     @Override
-    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateShardingTableReferenceRuleStatement sqlStatement) {
+    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
ShardingRuleConfiguration currentRuleConfig, final 
CreateShardingTableReferenceRuleStatement sqlStatement) {
         ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         sqlStatement.getRules().forEach(each -> 
result.getBindingTableGroups().add(new 
ShardingTableReferenceRuleConfiguration(each.getName(), each.getReference())));
         return result;
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableRuleStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableRuleStatementUpdater.java
index 4934086d4ff..cfbb2c84482 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableRuleStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingTableRuleStatementUpdater.java
@@ -41,7 +41,7 @@ public final class CreateShardingTableRuleStatementUpdater 
implements RuleDefini
     }
     
     @Override
-    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateShardingTableRuleStatement sqlStatement) {
+    public ShardingRuleConfiguration buildToBeCreatedRuleConfiguration(final 
ShardingRuleConfiguration currentRuleConfig, final 
CreateShardingTableRuleStatement sqlStatement) {
         return 
ShardingTableRuleStatementConverter.convert(sqlStatement.getRules());
     }
     
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateBroadcastTableRuleStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateBroadcastTableRuleStatementUpdaterTest.java
index 571ff5756bc..b6a58064e34 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateBroadcastTableRuleStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateBroadcastTableRuleStatementUpdaterTest.java
@@ -49,7 +49,7 @@ public final class 
CreateBroadcastTableRuleStatementUpdaterTest {
         ShardingRuleConfiguration currentRuleConfig = new 
ShardingRuleConfiguration();
         CreateBroadcastTableRuleStatement sqlStatement = new 
CreateBroadcastTableRuleStatement(false, Arrays.asList("t_1", "t_2"));
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(sqlStatement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         assertThat(currentRuleConfig.getBroadcastTables().size(), is(2));
         assertTrue(currentRuleConfig.getBroadcastTables().contains("t_1"));
@@ -68,7 +68,7 @@ public final class 
CreateBroadcastTableRuleStatementUpdaterTest {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
         CreateBroadcastTableRuleStatement sqlStatement = new 
CreateBroadcastTableRuleStatement(false, Arrays.asList("t_1", "t_2"));
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(sqlStatement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         assertThat(currentRuleConfig.getBroadcastTables().size(), is(4));
         assertTrue(currentRuleConfig.getBroadcastTables().contains("t_1"));
@@ -87,7 +87,7 @@ public final class 
CreateBroadcastTableRuleStatementUpdaterTest {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
         CreateBroadcastTableRuleStatement sqlStatement = new 
CreateBroadcastTableRuleStatement(true, tables);
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(sqlStatement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         assertThat(currentRuleConfig.getBroadcastTables().size(), is(4));
         assertTrue(currentRuleConfig.getBroadcastTables().contains("t_1"));
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
index 4bd5199b43c..688a34382ac 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateDefaultShardingStrategyStatementUpdaterTest.java
@@ -17,10 +17,10 @@
 
 package org.apache.shardingsphere.sharding.distsql.update;
 
-import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
-import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.distsql.handler.exception.algorithm.InvalidAlgorithmConfigurationException;
+import 
org.apache.shardingsphere.distsql.handler.exception.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.distsql.handler.exception.rule.MissingRequiredRuleException;
+import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
@@ -90,7 +90,7 @@ public final class 
CreateDefaultShardingStrategyStatementUpdaterTest {
         currentRuleConfig.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
         currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm", 
null);
         updater.checkSQLStatement(database, statement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         StandardShardingStrategyConfiguration defaultTableShardingStrategy = 
(StandardShardingStrategyConfiguration) 
currentRuleConfig.getDefaultTableShardingStrategy();
         assertThat(defaultTableShardingStrategy.getShardingAlgorithmName(), 
is("default_table_order_id_algorithm"));
@@ -103,7 +103,7 @@ public final class 
CreateDefaultShardingStrategyStatementUpdaterTest {
         CreateDefaultShardingStrategyStatement statement = new 
CreateDefaultShardingStrategyStatement(false, "DATABASE", "standard", 
"user_id", databaseAlgorithmSegment);
         ShardingRuleConfiguration currentRuleConfig = new 
ShardingRuleConfiguration();
         updater.checkSQLStatement(database, statement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         StandardShardingStrategyConfiguration defaultDatabaseShardingStrategy 
= (StandardShardingStrategyConfiguration) 
currentRuleConfig.getDefaultDatabaseShardingStrategy();
         assertThat(defaultDatabaseShardingStrategy.getShardingAlgorithmName(), 
is("default_database_inline"));
@@ -118,12 +118,12 @@ public final class 
CreateDefaultShardingStrategyStatementUpdaterTest {
         currentRuleConfig.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "orderAlgorithm"));
         currentRuleConfig.getShardingAlgorithms().put("order_id_algorithm", 
null);
         updater.checkSQLStatement(database, statement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         algorithm = new AlgorithmSegment("user_id_algorithm", new 
Properties());
         CreateDefaultShardingStrategyStatement statementWithIfNotExists = new 
CreateDefaultShardingStrategyStatement(true, "TABLE", "standard", "order_id", 
algorithm);
         updater.checkSQLStatement(database, statementWithIfNotExists, 
currentRuleConfig);
-        toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statementWithIfNotExists);
+        toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, 
statementWithIfNotExists);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         StandardShardingStrategyConfiguration defaultTableShardingStrategy = 
(StandardShardingStrategyConfiguration) 
currentRuleConfig.getDefaultTableShardingStrategy();
         assertThat(defaultTableShardingStrategy.getShardingAlgorithmName(), 
is("default_table_order_id_algorithm"));
@@ -136,12 +136,12 @@ public final class 
CreateDefaultShardingStrategyStatementUpdaterTest {
         CreateDefaultShardingStrategyStatement statement = new 
CreateDefaultShardingStrategyStatement(false, "DATABASE", "standard", 
"user_id", databaseAlgorithmSegment);
         ShardingRuleConfiguration currentRuleConfig = new 
ShardingRuleConfiguration();
         updater.checkSQLStatement(database, statement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         databaseAlgorithmSegment = getAutoCreativeAlgorithmSegment("inline", 
newProperties("algorithm-expression", "ds_${order_id% 2}"));
         CreateDefaultShardingStrategyStatement statementWithIfNotExists = new 
CreateDefaultShardingStrategyStatement(true, "TABLE", "standard", "order_id", 
databaseAlgorithmSegment);
         updater.checkSQLStatement(database, statementWithIfNotExists, 
currentRuleConfig);
-        toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statementWithIfNotExists);
+        toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, 
statementWithIfNotExists);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         StandardShardingStrategyConfiguration defaultDatabaseShardingStrategy 
= (StandardShardingStrategyConfiguration) 
currentRuleConfig.getDefaultDatabaseShardingStrategy();
         assertThat(defaultDatabaseShardingStrategy.getShardingAlgorithmName(), 
is("default_database_inline"));
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableReferenceRuleStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableReferenceRuleStatementUpdaterTest.java
index 763ee24ae63..12dca3e4603 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableReferenceRuleStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableReferenceRuleStatementUpdaterTest.java
@@ -66,7 +66,7 @@ public final class 
CreateShardingTableReferenceRuleStatementUpdaterTest {
         CreateShardingTableReferenceRuleStatement sqlStatement = 
createSQLStatement(true, "foo", "t_order,t_order_item");
         ShardingRuleConfiguration currentRuleConfig = getCurrentRuleConfig();
         updater.checkSQLStatement(database, sqlStatement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(sqlStatement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         Collection<ShardingTableReferenceRuleConfiguration> 
referenceRuleConfigurations = currentRuleConfig.getBindingTableGroups();
         assertThat(referenceRuleConfigurations.size(), is(1));
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
index 6c9d161f973..d4bfc2d4e44 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingTableRuleStatementUpdaterTest.java
@@ -95,7 +95,7 @@ public final class 
CreateShardingTableRuleStatementUpdaterTest {
     public void assertUpdate() {
         CreateShardingTableRuleStatement statement = new 
CreateShardingTableRuleStatement(false, 
Arrays.asList(createCompleteAutoTableRule(), createCompleteTableRule()));
         updater.checkSQLStatement(database, statement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         assertThat(currentRuleConfig.getTables().size(), is(2));
         Iterator<ShardingTableRuleConfiguration> tableRuleIterator = 
currentRuleConfig.getTables().iterator();
@@ -157,7 +157,7 @@ public final class 
CreateShardingTableRuleStatementUpdaterTest {
     public void assertUpdateWithIfNotExistsStatement() {
         CreateShardingTableRuleStatement statement = new 
CreateShardingTableRuleStatement(false, 
Arrays.asList(createCompleteAutoTableRule(), createCompleteTableRule()));
         updater.checkSQLStatement(database, statement, currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfig);
         AutoTableRuleSegment autoTableRuleSegment = new 
AutoTableRuleSegment("t_order_item_input", 
Collections.singletonList("logic_ds"));
         autoTableRuleSegment.setKeyGenerateStrategySegment(new 
KeyGenerateStrategySegment("test_product_id", new 
AlgorithmSegment("DISTSQL.FIXTURE", new Properties())));
@@ -170,7 +170,7 @@ public final class 
CreateShardingTableRuleStatementUpdaterTest {
         tableRuleSegment.setKeyGenerateStrategySegment(new 
KeyGenerateStrategySegment("order_id", new AlgorithmSegment("DISTSQL.FIXTURE", 
new Properties())));
         CreateShardingTableRuleStatement statementWithIfNotExists = new 
CreateShardingTableRuleStatement(true, Arrays.asList(autoTableRuleSegment, 
tableRuleSegment));
         updater.checkSQLStatement(database, statementWithIfNotExists, 
currentRuleConfig);
-        ShardingRuleConfiguration toBeCreatedRuleConfigWithIfNotExists = 
updater.buildToBeCreatedRuleConfiguration(statement);
+        ShardingRuleConfiguration toBeCreatedRuleConfigWithIfNotExists = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, statement);
         updater.updateCurrentRuleConfiguration(currentRuleConfig, 
toBeCreatedRuleConfigWithIfNotExists);
         assertThat(currentRuleConfig.getTables().size(), is(2));
         Iterator<ShardingTableRuleConfiguration> tableRuleIterator = 
currentRuleConfig.getTables().iterator();
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
index 1c6ff34de01..c3dc5a8ab8f 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/RuleDefinitionBackendHandler.java
@@ -95,7 +95,7 @@ public final class RuleDefinitionBackendHandler<T extends 
RuleDefinitionStatemen
     
     @SuppressWarnings({"rawtypes", "unchecked"})
     private RuleConfiguration processCreate(final T sqlStatement, final 
RuleDefinitionCreateUpdater updater, final RuleConfiguration currentRuleConfig) 
{
-        RuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(sqlStatement);
+        RuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentRuleConfig, sqlStatement);
         if (null == currentRuleConfig) {
             return toBeCreatedRuleConfig;
         }
diff --git 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
index 060f1485167..cebdb18c7a7 100644
--- 
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
+++ 
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitStatementUpdater.java
@@ -18,9 +18,9 @@
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule;
 
 import org.apache.commons.lang3.StringUtils;
-import 
org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
 import 
org.apache.shardingsphere.distsql.handler.update.RuleDefinitionCreateUpdater;
+import 
org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.util.exception.ShardingSpherePreconditions;
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
@@ -47,7 +47,7 @@ public final class 
SetDefaultSingleTableStorageUnitStatementUpdater implements R
     }
     
     @Override
-    public SingleRuleConfiguration buildToBeCreatedRuleConfiguration(final 
SetDefaultSingleTableStorageUnitStatement sqlStatement) {
+    public SingleRuleConfiguration buildToBeCreatedRuleConfiguration(final 
SingleRuleConfiguration currentRuleConfig, final 
SetDefaultSingleTableStorageUnitStatement sqlStatement) {
         SingleRuleConfiguration result = new SingleRuleConfiguration();
         result.setDefaultDataSource(sqlStatement.getDefaultStorageUnit());
         return result;
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/fixture/FixtureRuleDefinitionCreateUpdater.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/fixture/FixtureRuleDefinitionCreateUpdater.java
index af3fdb1a443..73fc2b28a6e 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/fixture/FixtureRuleDefinitionCreateUpdater.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/fixture/FixtureRuleDefinitionCreateUpdater.java
@@ -17,14 +17,14 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.fixture;
 
-import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.distsql.handler.update.RuleDefinitionCreateUpdater;
+import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 
 public final class FixtureRuleDefinitionCreateUpdater implements 
RuleDefinitionCreateUpdater<CreateFixtureRuleStatement, 
FixtureRuleConfiguration> {
     
     @Override
-    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
CreateFixtureRuleStatement sqlStatement) {
+    public RuleConfiguration buildToBeCreatedRuleConfiguration(final 
FixtureRuleConfiguration currentRuleConfig, final CreateFixtureRuleStatement 
sqlStatement) {
         return new FixtureRuleConfiguration();
     }
     
diff --git 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitUpdaterTest.java
 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitUpdaterTest.java
index c639418cd3d..0a848deceaf 100644
--- 
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitUpdaterTest.java
+++ 
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rdl/rule/SetDefaultSingleTableStorageUnitUpdaterTest.java
@@ -17,8 +17,8 @@
 
 package org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.rule;
 
-import 
org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import 
org.apache.shardingsphere.distsql.handler.exception.storageunit.MissingRequiredStorageUnitsException;
+import 
org.apache.shardingsphere.distsql.parser.statement.rdl.create.SetDefaultSingleTableStorageUnitStatement;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.single.api.config.SingleRuleConfiguration;
 import org.apache.shardingsphere.test.fixture.jdbc.MockedDataSource;
@@ -61,15 +61,15 @@ public final class 
SetDefaultSingleTableStorageUnitUpdaterTest {
     
     @Test
     public void assertBuild() {
-        SingleRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(new 
SetDefaultSingleTableStorageUnitStatement("ds_0"));
+        SingleRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig, new 
SetDefaultSingleTableStorageUnitStatement("ds_0"));
         assertTrue(toBeCreatedRuleConfig.getDefaultDataSource().isPresent());
         assertThat(toBeCreatedRuleConfig.getDefaultDataSource().get(), 
is("ds_0"));
     }
     
     @Test
     public void assertUpdate() {
-        SingleRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(new 
SetDefaultSingleTableStorageUnitStatement("ds_0"));
         SingleRuleConfiguration currentConfig = new SingleRuleConfiguration();
+        SingleRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig, new 
SetDefaultSingleTableStorageUnitStatement("ds_0"));
         updater.updateCurrentRuleConfiguration(currentConfig, 
toBeCreatedRuleConfig);
         assertTrue(currentConfig.getDefaultDataSource().isPresent());
         assertThat(currentConfig.getDefaultDataSource().get(), is("ds_0"));
@@ -77,8 +77,8 @@ public final class 
SetDefaultSingleTableStorageUnitUpdaterTest {
     
     @Test
     public void assertRandom() {
-        SingleRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(new 
SetDefaultSingleTableStorageUnitStatement(null));
         SingleRuleConfiguration currentConfig = new SingleRuleConfiguration();
+        SingleRuleConfiguration toBeCreatedRuleConfig = 
updater.buildToBeCreatedRuleConfiguration(currentConfig, new 
SetDefaultSingleTableStorageUnitStatement(null));
         updater.updateCurrentRuleConfiguration(currentConfig, 
toBeCreatedRuleConfig);
         assertFalse(currentConfig.getDefaultDataSource().isPresent());
     }

Reply via email to