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

[shardingsphere] branch master updated: Refactor sharding rule changed subscriber (#26604)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 499f5e39de0 Refactor sharding rule changed subscriber (#26604)
499f5e39de0 is described below

commit 499f5e39de0599fa7ec6e144b2c97c1039e622c6
Author: ChenJiaHao <Pa...@163.com>
AuthorDate: Tue Jun 27 14:08:56 2023 +0800

    Refactor sharding rule changed subscriber (#26604)
    
    * Refactor sharding rule changed subscriber
    
    * Fix code style
    
    * Fix UT
---
 .../subscriber/ShardingAlgorithmSubscriber.java    | 22 +++++++-
 .../ShardingCacheConfigurationSubscriber.java      | 31 ++++++----
 .../ShardingStrategyConfigurationSubscriber.java   | 66 +++++++---------------
 .../ShardingTableConfigurationSubscriber.java      | 47 ++++++---------
 .../NewYamlShardingRuleConfigurationSwapper.java   |  2 +-
 ...ewYamlShardingRuleConfigurationSwapperTest.java |  2 +-
 6 files changed, 78 insertions(+), 92 deletions(-)

diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
index 870a79d5077..ad491915b8b 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingAlgorithmSubscriber.java
@@ -37,6 +37,7 @@ import org.apache.shardingsphere.sharding.event.algorithm.sharding.DeleteShardin
 import org.apache.shardingsphere.sharding.rule.ShardingRule;
 
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * Sharding algorithm subscriber.
@@ -57,9 +58,10 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
     @Subscribe
     public synchronized void renew(final AlterShardingAlgorithmEvent event) {
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
-        ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
         config.getShardingAlgorithms().put(event.getAlgorithmName(), swapToAlgorithmConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
     /**
@@ -70,9 +72,10 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
     @Subscribe
     public synchronized void renew(final AlterKeyGeneratorEvent event) {
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
-        ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
         config.getKeyGenerators().put(event.getKeyGeneratorName(), swapToAlgorithmConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
     /**
@@ -83,9 +86,10 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
     @Subscribe
     public synchronized void renew(final AlterAuditorEvent event) {
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
-        ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
         config.getAuditors().put(event.getAuditorName(), swapToAlgorithmConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
     /**
@@ -124,6 +128,18 @@ public final class ShardingAlgorithmSubscriber implements RuleChangedSubscriber
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
         config.getAuditors().remove(event.getAuditorName());
+        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
+    }
+    
+    private ShardingRuleConfiguration getShardingRuleConfiguration(final ShardingSphereDatabase database) {
+        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
+        ShardingRuleConfiguration config;
+        if (rule.isPresent()) {
+            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
+        } else {
+            config = new ShardingRuleConfiguration();
+        }
+        return config;
     }
     
     private AlgorithmConfiguration swapToAlgorithmConfig(final String yamlContext) {
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
index 07832e0f895..e10afd2f16f 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingCacheConfigurationSubscriber.java
@@ -34,6 +34,7 @@ import org.apache.shardingsphere.sharding.yaml.config.cache.YamlShardingCacheCon
 import org.apache.shardingsphere.sharding.yaml.swapper.cache.YamlShardingCacheConfigurationSwapper;
 
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * Sharding cache configuration subscriber.
@@ -53,8 +54,18 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
      */
     @Subscribe
     public synchronized void renew(final AddShardingCacheConfigurationEvent event) {
-        renewShardingCacheConfig(event.getDatabaseName(), swapToShardingCacheConfig(
-                instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+        ShardingSphereDatabase database = databases.get(event.getDatabaseName());
+        ShardingCacheConfiguration needToAddedConfig = swapToShardingCacheConfig(
+                instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
+        ShardingRuleConfiguration config;
+        if (rule.isPresent()) {
+            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
+        } else {
+            config = new ShardingRuleConfiguration();
+        }
+        config.setShardingCache(needToAddedConfig);
+        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
     /**
@@ -64,8 +75,12 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
      */
     @Subscribe
     public synchronized void renew(final AlterShardingCacheConfigurationEvent event) {
-        renewShardingCacheConfig(event.getDatabaseName(), swapToShardingCacheConfig(
-                instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion())));
+        ShardingSphereDatabase database = databases.get(event.getDatabaseName());
+        ShardingCacheConfiguration needToAlteredConfig = swapToShardingCacheConfig(
+                instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
+        ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
+        config.setShardingCache(needToAlteredConfig);
+        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
     /**
@@ -81,15 +96,7 @@ public final class ShardingCacheConfigurationSubscriber implements RuleChangedSu
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
-    private void renewShardingCacheConfig(final String databaseName, final ShardingCacheConfiguration shardingCacheConfiguration) {
-        ShardingSphereDatabase database = databases.get(databaseName);
-        ShardingRuleConfiguration config = (ShardingRuleConfiguration) database.getRuleMetaData().getSingleRule(ShardingRule.class).getConfiguration();
-        config.setShardingCache(shardingCacheConfiguration);
-        instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(databaseName, config));
-    }
-    
     private ShardingCacheConfiguration swapToShardingCacheConfig(final String yamlContext) {
         return new YamlShardingCacheConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlShardingCacheConfiguration.class));
     }
-    
 }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
index 24f50ca8c74..33251177e27 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingStrategyConfigurationSubscriber.java
@@ -75,15 +75,8 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingStrategyConfiguration needToAddedConfig = swapShardingStrategyConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.setDefaultDatabaseShardingStrategy(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.setDefaultDatabaseShardingStrategy(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.setDefaultDatabaseShardingStrategy(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -97,15 +90,8 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingStrategyConfiguration needToAddedConfig = swapShardingStrategyConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.setDefaultTableShardingStrategy(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.setDefaultTableShardingStrategy(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.setDefaultTableShardingStrategy(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -119,15 +105,8 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         KeyGenerateStrategyConfiguration needToAddedConfig = swapKeyGenerateStrategyConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.setDefaultKeyGenerateStrategy(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.setDefaultKeyGenerateStrategy(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.setDefaultKeyGenerateStrategy(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -141,15 +120,8 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingAuditStrategyConfiguration needToAddedConfig = swapShardingAuditorStrategyConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.setDefaultAuditStrategy(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.setDefaultAuditStrategy(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.setDefaultAuditStrategy(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -162,15 +134,8 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
     public synchronized void renew(final AddDefaultShardingColumnEvent event) {
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         String needToAddedConfig = instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion());
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.setDefaultShardingColumn(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.setDefaultShardingColumn(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.setDefaultShardingColumn(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -313,6 +278,17 @@ public final class ShardingStrategyConfigurationSubscriber implements RuleChange
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
+    private ShardingRuleConfiguration getShardingRuleConfiguration(final ShardingSphereDatabase database) {
+        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
+        ShardingRuleConfiguration config;
+        if (rule.isPresent()) {
+            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
+        } else {
+            config = new ShardingRuleConfiguration();
+        }
+        return config;
+    }
+    
     private ShardingStrategyConfiguration swapShardingStrategyConfig(final String yamlContext) {
         return new YamlShardingStrategyConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlShardingStrategyConfiguration.class));
     }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
index d1493207dd6..2c22caa31a1 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/subscriber/ShardingTableConfigurationSubscriber.java
@@ -71,16 +71,8 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingTableRuleConfiguration needToAddedConfig = swapShardingTableRuleConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.getTables().removeIf(each -> each.getLogicTable().equals(needToAddedConfig.getLogicTable()));
-            config.getTables().add(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.getTables().add(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.getTables().add(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -97,16 +89,8 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingAutoTableRuleConfiguration needToAddedConfig = swapShardingAutoTableRuleConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.getAutoTables().removeIf(each -> each.getLogicTable().equals(needToAddedConfig.getLogicTable()));
-            config.getAutoTables().add(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.getAutoTables().add(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.getAutoTables().add(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -120,16 +104,8 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
         ShardingSphereDatabase database = databases.get(event.getDatabaseName());
         ShardingTableReferenceRuleConfiguration needToAddedConfig = swapShardingTableReferenceRuleConfig(
                 instanceContext.getModeContextManager().getVersionPathByActiveVersionKey(event.getActiveVersionKey(), event.getActiveVersion()));
-        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
-        ShardingRuleConfiguration config;
-        if (rule.isPresent()) {
-            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
-            config.getBindingTableGroups().removeIf(each -> each.getName().equals(needToAddedConfig.getName()));
-            config.getBindingTableGroups().add(needToAddedConfig);
-        } else {
-            config = new ShardingRuleConfiguration();
-            config.getBindingTableGroups().add(needToAddedConfig);
-        }
+        ShardingRuleConfiguration config = getShardingRuleConfiguration(database);
+        config.getBindingTableGroups().add(needToAddedConfig);
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
@@ -226,6 +202,17 @@ public final class ShardingTableConfigurationSubscriber implements RuleChangedSu
         instanceContext.getEventBusContext().post(new DatabaseRuleConfigurationChangedEvent(event.getDatabaseName(), config));
     }
     
+    private ShardingRuleConfiguration getShardingRuleConfiguration(final ShardingSphereDatabase database) {
+        Optional<ShardingRule> rule = database.getRuleMetaData().findSingleRule(ShardingRule.class);
+        ShardingRuleConfiguration config;
+        if (rule.isPresent()) {
+            config = (ShardingRuleConfiguration) rule.get().getConfiguration();
+        } else {
+            config = new ShardingRuleConfiguration();
+        }
+        return config;
+    }
+    
     private ShardingTableRuleConfiguration swapShardingTableRuleConfig(final String yamlContext) {
         return new YamlShardingTableRuleConfigurationSwapper().swapToObject(YamlEngine.unmarshal(yamlContext, YamlTableRuleConfiguration.class));
     }
diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java
index a02481be3b8..d58671b2634 100644
--- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java
+++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapper.java
@@ -75,7 +75,6 @@ public final class NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
         Collection<YamlDataNode> result = new LinkedHashSet<>();
         swapAlgorithms(data, result);
         swapStrategies(data, result);
-        swapTableRules(data, result);
         if (null != data.getDefaultShardingColumn()) {
             result.add(new YamlDataNode(shardingRuleNodePath.getUniqueItem(ShardingNodePath.DEFAULT_SHARDING_COLUMN).getPath(), data.getDefaultShardingColumn()));
         }
@@ -83,6 +82,7 @@ public final class NewYamlShardingRuleConfigurationSwapper implements NewYamlRul
             result.add(new YamlDataNode(shardingRuleNodePath.getUniqueItem(ShardingNodePath.SHARDING_CACHE).getPath(),
                     YamlEngine.marshal(shardingCacheYamlSwapper.swapToYamlConfiguration(data.getShardingCache()))));
         }
+        swapTableRules(data, result);
         return result;
     }
     
diff --git a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapperTest.java b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapperTest.java
index 1f0a48f7954..0267a078ed4 100644
--- a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapperTest.java
+++ b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/yaml/swapper/NewYamlShardingRuleConfigurationSwapperTest.java
@@ -68,11 +68,11 @@ class NewYamlShardingRuleConfigurationSwapperTest {
         assertThat(iterator.next().getKey(), is("default_strategies/default_table_strategy"));
         assertThat(iterator.next().getKey(), is("default_strategies/default_key_generate_strategy"));
         assertThat(iterator.next().getKey(), is("default_strategies/default_audit_strategy"));
+        assertThat(iterator.next().getKey(), is("default_strategies/default_sharding_column"));
         assertThat(iterator.next().getKey(), is("tables/LOGIC_TABLE"));
         assertThat(iterator.next().getKey(), is("tables/SUB_LOGIC_TABLE"));
         assertThat(iterator.next().getKey(), is("auto_tables/auto_table"));
         assertThat(iterator.next().getKey(), is("binding_tables/foo"));
-        assertThat(iterator.next().getKey(), is("default_strategies/default_sharding_column"));
     }
     
     private ShardingRuleConfiguration createMaximumShardingRule() {