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

panjuan 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 45715422fae Remove empty rule configuration after drop rule. (#22625)
45715422fae is described below

commit 45715422fae25d7409ed88fd54089de858c71ae5
Author: Raigor <[email protected]>
AuthorDate: Sat Dec 3 19:34:57 2022 +0800

    Remove empty rule configuration after drop rule. (#22625)
---
 .../update/DropDatabaseDiscoveryRuleStatementUpdater.java     |  2 +-
 .../update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java |  2 +-
 .../handler/update/DropShadowRuleStatementUpdater.java        |  4 ++--
 .../update/DropBroadcastTableRuleStatementUpdater.java        |  3 ++-
 .../handler/update/DropDefaultStrategyStatementUpdater.java   |  3 ++-
 .../handler/update/DropShardingTableRuleStatementUpdater.java |  3 ++-
 .../update/DropBroadcastTableRuleStatementUpdaterTest.java    |  8 ++------
 .../DropDefaultShardingStrategyStatementUpdaterTest.java      | 11 +++++++++++
 .../update/DropShardingTableRuleStatementUpdaterTest.java     |  3 ++-
 9 files changed, 25 insertions(+), 14 deletions(-)

diff --git 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
index e33ef6821b9..d89da8957dc 100644
--- 
a/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
+++ 
b/features/db-discovery/distsql/handler/src/main/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdater.java
@@ -84,7 +84,7 @@ public final class DropDatabaseDiscoveryRuleStatementUpdater 
implements RuleDefi
         sqlStatement.getNames().forEach(each -> dropRule(currentRuleConfig, 
each));
         dropUnusedType(currentRuleConfig);
         dropUnusedHeartbeat(currentRuleConfig);
-        return false;
+        return currentRuleConfig.getDataSources().isEmpty();
     }
     
     private void dropRule(final DatabaseDiscoveryRuleConfiguration 
currentRuleConfig, final String ruleName) {
diff --git 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
index 0fd2990f99a..1794d421b2d 100644
--- 
a/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
+++ 
b/features/db-discovery/distsql/handler/src/test/java/org/apache/shardingsphere/dbdiscovery/distsql/handler/update/DropDatabaseDiscoveryRuleStatementUpdaterTest.java
@@ -105,7 +105,7 @@ public final class 
DropDatabaseDiscoveryRuleStatementUpdaterTest {
     @Test
     public void assertUpdateCurrentRuleConfiguration() {
         DatabaseDiscoveryRuleConfiguration databaseDiscoveryRuleConfig = 
createCurrentRuleConfiguration();
-        updater.updateCurrentRuleConfiguration(createSQLStatement(), 
databaseDiscoveryRuleConfig);
+        
assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement(), 
databaseDiscoveryRuleConfig));
         assertTrue(databaseDiscoveryRuleConfig.getDataSources().isEmpty());
         assertTrue(databaseDiscoveryRuleConfig.getDiscoveryTypes().isEmpty());
         
assertTrue(databaseDiscoveryRuleConfig.getDiscoveryHeartbeats().isEmpty());
diff --git 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
index d4f314f6681..854ef3b876c 100644
--- 
a/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
+++ 
b/features/shadow/distsql/handler/src/main/java/org/apache/shardingsphere/shadow/distsql/handler/update/DropShadowRuleStatementUpdater.java
@@ -68,11 +68,11 @@ public final class DropShadowRuleStatementUpdater 
implements RuleDefinitionDropU
         currentRuleConfig.getDataSources().removeIf(each -> 
sqlStatement.getNames().contains(each.getName()));
         currentRuleConfig.getTables().forEach((key, value) -> 
value.getDataSourceNames().removeIf(sqlStatement.getNames()::contains));
         currentRuleConfig.getTables().entrySet().removeIf(entry -> 
entry.getValue().getDataSourceNames().isEmpty());
-        removeUnusedAlgorithm(currentRuleConfig);
+        dropUnusedAlgorithm(currentRuleConfig);
         return currentRuleConfig.getDataSources().isEmpty() || 
currentRuleConfig.getTables().isEmpty();
     }
     
-    private void removeUnusedAlgorithm(final ShadowRuleConfiguration 
currentRuleConfig) {
+    private void dropUnusedAlgorithm(final ShadowRuleConfiguration 
currentRuleConfig) {
         Collection<String> inUsedAlgorithms = 
currentRuleConfig.getTables().entrySet().stream().flatMap(entry -> 
entry.getValue().getShadowAlgorithmNames().stream()).collect(Collectors.toSet());
         if (null != currentRuleConfig.getDefaultShadowAlgorithmName()) {
             
inUsedAlgorithms.add(currentRuleConfig.getDefaultShadowAlgorithmName());
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
index 56439a7aa84..b563fa24bc6 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropBroadcastTableRuleStatementUpdater.java
@@ -68,7 +68,8 @@ public final class DropBroadcastTableRuleStatementUpdater 
implements RuleDefinit
     @Override
     public boolean updateCurrentRuleConfiguration(final 
DropBroadcastTableRuleStatement sqlStatement, final ShardingRuleConfiguration 
currentRuleConfig) {
         currentRuleConfig.getBroadcastTables().removeIf(each -> 
containsIgnoreCase(sqlStatement.getTables(), each));
-        return false;
+        return currentRuleConfig.getTables().isEmpty() && 
currentRuleConfig.getAutoTables().isEmpty() && 
currentRuleConfig.getBroadcastTables().isEmpty()
+                && null == 
currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == 
currentRuleConfig.getDefaultTableShardingStrategy();
     }
     
     @Override
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
index 7aac168c60f..c06e24586e3 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultStrategyStatementUpdater.java
@@ -80,7 +80,8 @@ public final class DropDefaultStrategyStatementUpdater 
extends AbstractDropShard
             currentRuleConfig.setDefaultDatabaseShardingStrategy(null);
         }
         dropUnusedAlgorithm(currentRuleConfig);
-        return false;
+        return currentRuleConfig.getTables().isEmpty() && 
currentRuleConfig.getAutoTables().isEmpty() && 
currentRuleConfig.getBroadcastTables().isEmpty()
+                && null == 
currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == 
currentRuleConfig.getDefaultTableShardingStrategy();
     }
     
     @Override
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
index 46bb7f7e831..d8993d76298 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropShardingTableRuleStatementUpdater.java
@@ -115,7 +115,8 @@ public final class DropShardingTableRuleStatementUpdater 
extends AbstractDropSha
         dropUnusedAlgorithm(currentRuleConfig);
         dropUnusedKeyGenerator(currentRuleConfig);
         dropUnusedAuditor(currentRuleConfig);
-        return false;
+        return currentRuleConfig.getTables().isEmpty() && 
currentRuleConfig.getAutoTables().isEmpty() && 
currentRuleConfig.getBroadcastTables().isEmpty()
+                && null == 
currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == 
currentRuleConfig.getDefaultTableShardingStrategy();
     }
     
     private void dropUnusedKeyGenerator(final ShardingRuleConfiguration 
currentRuleConfig) {
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
index 5252bbc50a5..daa63bc9394 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropBroadcastTableRuleStatementUpdaterTest.java
@@ -20,8 +20,6 @@ package org.apache.shardingsphere.sharding.distsql.update;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.MissingRequiredRuleException;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
-import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.distsql.handler.update.DropBroadcastTableRuleStatementUpdater;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.DropBroadcastTableRuleStatement;
 import org.junit.Test;
@@ -75,8 +73,8 @@ public final class DropBroadcastTableRuleStatementUpdaterTest 
{
     @Test
     public void assertDropSpecifiedRule() {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
-        updater.updateCurrentRuleConfiguration(createSQLStatement("t_order"), 
currentRuleConfig);
-        
updater.updateCurrentRuleConfiguration(createSQLStatement("t_address"), 
currentRuleConfig);
+        
assertFalse(updater.updateCurrentRuleConfiguration(createSQLStatement("t_order"),
 currentRuleConfig));
+        
assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement("t_address"),
 currentRuleConfig));
         assertTrue(currentRuleConfig.getBroadcastTables().isEmpty());
     }
     
@@ -108,8 +106,6 @@ public final class 
DropBroadcastTableRuleStatementUpdaterTest {
     
     private ShardingRuleConfiguration createCurrentRuleConfiguration() {
         ShardingRuleConfiguration result = new ShardingRuleConfiguration();
-        result.getTables().add(new 
ShardingTableRuleConfiguration("t_order_item"));
-        result.getAutoTables().add(new 
ShardingAutoTableRuleConfiguration("t_order", null));
         result.getBroadcastTables().add("t_order");
         result.getBroadcastTables().add("t_address");
         return result;
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
index 35258a805df..829cd25dd8f 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropDefaultShardingStrategyStatementUpdaterTest.java
@@ -36,6 +36,7 @@ import java.util.Properties;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
@@ -79,6 +80,16 @@ public final class 
DropDefaultShardingStrategyStatementUpdaterTest {
         assertThat(currentRuleConfig.getShardingAlgorithms().size(), is(1));
     }
     
+    @Test
+    public void assertUpdateMultipleStrategies() {
+        ShardingRuleConfiguration currentRuleConfig = 
createMultipleCurrentRuleConfiguration();
+        
assertFalse(updater.updateCurrentRuleConfiguration(createSQLStatement("Database"),
 currentRuleConfig));
+        
assertTrue(updater.updateCurrentRuleConfiguration(createSQLStatement("Table"), 
currentRuleConfig));
+        assertNull(currentRuleConfig.getDefaultTableShardingStrategy());
+        assertNull(currentRuleConfig.getDefaultTableShardingStrategy());
+        assertTrue(currentRuleConfig.getShardingAlgorithms().isEmpty());
+    }
+    
     private DropDefaultShardingStrategyStatement createSQLStatement(final 
String defaultType) {
         return new DropDefaultShardingStrategyStatement(false, defaultType);
     }
diff --git 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
index 3af737ec15f..552080b6e8b 100644
--- 
a/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
+++ 
b/features/sharding/distsql/handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/DropShardingTableRuleStatementUpdaterTest.java
@@ -81,7 +81,8 @@ public final class DropShardingTableRuleStatementUpdaterTest {
     @Test
     public void assertUpdate() {
         ShardingRuleConfiguration currentRuleConfig = 
createCurrentRuleConfiguration();
-        new 
DropShardingTableRuleStatementUpdater().updateCurrentRuleConfiguration(createSQLStatement("t_order"),
 currentRuleConfig);
+        assertFalse(new 
DropShardingTableRuleStatementUpdater().updateCurrentRuleConfiguration(createSQLStatement("t_order"),
 currentRuleConfig));
+        assertTrue(new 
DropShardingTableRuleStatementUpdater().updateCurrentRuleConfiguration(createSQLStatement("t_order"),
 new ShardingRuleConfiguration()));
         assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
         
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
     }

Reply via email to