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 77bba859501 Fix DROP SHARDING TABLE RULE (#23934)
77bba859501 is described below

commit 77bba85950122a3c47400458d0c6569699dbf3d4
Author: ChenJiaHao <[email protected]>
AuthorDate: Thu Feb 2 18:04:59 2023 +0800

    Fix DROP SHARDING TABLE RULE (#23934)
    
    * Fix DROP SHARDING TABLE RULE
    
    * Improve DROP SHARDING TABLE RULE test case
    
    * Fix code style
---
 .../update/AbstractDropShardingRuleUpdater.java      | 13 +++++++++----
 .../DropShardingTableRuleStatementUpdater.java       | 20 +++++++++++++-------
 .../DropShardingTableRuleStatementUpdaterTest.java   | 17 +++++++++++++----
 3 files changed, 35 insertions(+), 15 deletions(-)

diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
index 5322c340248..e26e080eab9 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AbstractDropShardingRuleUpdater.java
@@ -38,13 +38,18 @@ public abstract class AbstractDropShardingRuleUpdater {
     public void dropUnusedAlgorithm(final ShardingRuleConfiguration 
currentRuleConfig) {
         Collection<String> inUsedAlgorithms = 
currentRuleConfig.getTables().stream().map(each -> 
Arrays.asList(each.getTableShardingStrategy(), 
each.getDatabaseShardingStrategy()))
                 
.flatMap(Collection::stream).filter(Objects::nonNull).map(ShardingStrategyConfiguration::getShardingAlgorithmName).collect(Collectors.toSet());
-        
inUsedAlgorithms.addAll(currentRuleConfig.getAutoTables().stream().map(each -> 
each.getShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
-        if (null != currentRuleConfig.getDefaultTableShardingStrategy()) {
-            
inUsedAlgorithms.add(currentRuleConfig.getDefaultTableShardingStrategy().getShardingAlgorithmName());
-        }
+        
inUsedAlgorithms.addAll(currentRuleConfig.getTables().stream().filter(each -> 
Objects.nonNull(each.getDatabaseShardingStrategy()))
+                .map(each -> 
each.getDatabaseShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
+        
inUsedAlgorithms.addAll(currentRuleConfig.getTables().stream().filter(each -> 
Objects.nonNull(each.getTableShardingStrategy()))
+                .map(each -> 
each.getTableShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
+        
inUsedAlgorithms.addAll(currentRuleConfig.getAutoTables().stream().filter(each 
-> Objects.nonNull(each.getShardingStrategy()))
+                .map(each -> 
each.getShardingStrategy().getShardingAlgorithmName()).collect(Collectors.toSet()));
         if (null != currentRuleConfig.getDefaultDatabaseShardingStrategy()) {
             
inUsedAlgorithms.add(currentRuleConfig.getDefaultDatabaseShardingStrategy().getShardingAlgorithmName());
         }
+        if (null != currentRuleConfig.getDefaultTableShardingStrategy()) {
+            
inUsedAlgorithms.add(currentRuleConfig.getDefaultTableShardingStrategy().getShardingAlgorithmName());
+        }
         Collection<String> unusedAlgorithms = 
currentRuleConfig.getShardingAlgorithms().keySet().stream().filter(each -> 
!inUsedAlgorithms.contains(each)).collect(Collectors.toSet());
         unusedAlgorithms.forEach(each -> 
currentRuleConfig.getShardingAlgorithms().remove(each));
     }
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 04f4048b67e..f8e7e774f0c 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
@@ -119,10 +119,18 @@ public final class DropShardingTableRuleStatementUpdater 
extends AbstractDropSha
                 && null == 
currentRuleConfig.getDefaultDatabaseShardingStrategy() && null == 
currentRuleConfig.getDefaultTableShardingStrategy();
     }
     
+    private void dropShardingTable(final ShardingRuleConfiguration 
currentRuleConfig, final String tableName) {
+        
currentRuleConfig.getTables().removeAll(currentRuleConfig.getTables().stream().filter(each
 -> 
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
+        
currentRuleConfig.getAutoTables().removeAll(currentRuleConfig.getAutoTables().stream().filter(each
 -> 
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
+    }
+    
     private void dropUnusedKeyGenerator(final ShardingRuleConfiguration 
currentRuleConfig) {
         Collection<String> inUsedKeyGenerators = 
currentRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getKeyGenerateStrategy).filter(Objects::nonNull)
                 
.map(KeyGenerateStrategyConfiguration::getKeyGeneratorName).collect(Collectors.toSet());
-        
inUsedKeyGenerators.addAll(currentRuleConfig.getAutoTables().stream().map(each 
-> 
each.getKeyGenerateStrategy().getKeyGeneratorName()).collect(Collectors.toSet()));
+        
inUsedKeyGenerators.addAll(currentRuleConfig.getTables().stream().filter(each 
-> Objects.nonNull(each.getKeyGenerateStrategy()))
+                .map(each -> 
each.getKeyGenerateStrategy().getKeyGeneratorName()).collect(Collectors.toSet()));
+        
inUsedKeyGenerators.addAll(currentRuleConfig.getAutoTables().stream().filter(each
 -> Objects.nonNull(each.getKeyGenerateStrategy()))
+                .map(each -> 
each.getKeyGenerateStrategy().getKeyGeneratorName()).collect(Collectors.toSet()));
         if (null != currentRuleConfig.getDefaultKeyGenerateStrategy()) {
             
inUsedKeyGenerators.add(currentRuleConfig.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
         }
@@ -133,7 +141,10 @@ public final class DropShardingTableRuleStatementUpdater 
extends AbstractDropSha
     private void dropUnusedAuditor(final ShardingRuleConfiguration 
currentRuleConfig) {
         Collection<String> inUsedAuditors = 
currentRuleConfig.getTables().stream().map(ShardingTableRuleConfiguration::getAuditStrategy).filter(Objects::nonNull)
                 .flatMap(each -> 
each.getAuditorNames().stream()).collect(Collectors.toSet());
-        
inUsedAuditors.addAll(currentRuleConfig.getAutoTables().stream().flatMap(each 
-> 
each.getAuditStrategy().getAuditorNames().stream()).collect(Collectors.toSet()));
+        
inUsedAuditors.addAll(currentRuleConfig.getTables().stream().filter(each -> 
Objects.nonNull(each.getAuditStrategy()))
+                .flatMap(each -> 
each.getAuditStrategy().getAuditorNames().stream()).collect(Collectors.toSet()));
+        
inUsedAuditors.addAll(currentRuleConfig.getAutoTables().stream().filter(each -> 
Objects.nonNull(each.getAuditStrategy()))
+                .flatMap(each -> 
each.getAuditStrategy().getAuditorNames().stream()).collect(Collectors.toSet()));
         if (null != currentRuleConfig.getDefaultAuditStrategy()) {
             
inUsedAuditors.addAll(currentRuleConfig.getDefaultAuditStrategy().getAuditorNames());
         }
@@ -141,11 +152,6 @@ public final class DropShardingTableRuleStatementUpdater 
extends AbstractDropSha
         unusedAuditors.forEach(each -> 
currentRuleConfig.getAuditors().remove(each));
     }
     
-    private void dropShardingTable(final ShardingRuleConfiguration 
currentRuleConfig, final String tableName) {
-        
currentRuleConfig.getTables().removeAll(currentRuleConfig.getTables().stream().filter(each
 -> 
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
-        
currentRuleConfig.getAutoTables().removeAll(currentRuleConfig.getAutoTables().stream().filter(each
 -> 
tableName.equalsIgnoreCase(each.getLogicTable())).collect(Collectors.toList()));
-    }
-    
     @Override
     public Class<ShardingRuleConfiguration> getRuleConfigurationClass() {
         return ShardingRuleConfiguration.class;
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 aa075e46d2d..d5c5e53fb0e 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
@@ -26,6 +26,8 @@ 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.ShardingTableReferenceRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.audit.ShardingAuditStrategyConfiguration;
+import 
org.apache.shardingsphere.sharding.api.config.strategy.keygen.KeyGenerateStrategyConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.strategy.sharding.StandardShardingStrategyConfiguration;
 import 
org.apache.shardingsphere.sharding.distsql.handler.update.DropShardingTableRuleStatementUpdater;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.DropShardingTableRuleStatement;
@@ -103,8 +105,8 @@ public final class 
DropShardingTableRuleStatementUpdaterTest {
         assertFalse(getShardingTables(currentRuleConfig).contains("t_order"));
         
assertTrue(getBindingTables(currentRuleConfig).contains("t_order_item"));
         assertThat(currentRuleConfig.getShardingAlgorithms().size(), is(2));
-        assertThat(currentRuleConfig.getKeyGenerators().size(), is(0));
-        assertThat(currentRuleConfig.getAuditors().size(), is(0));
+        assertThat(currentRuleConfig.getKeyGenerators().size(), is(1));
+        assertThat(currentRuleConfig.getAuditors().size(), is(1));
     }
     
     private DropShardingTableRuleStatement createSQLStatement(final String 
tableName) {
@@ -112,17 +114,24 @@ public final class 
DropShardingTableRuleStatementUpdaterTest {
     }
     
     private ShardingRuleConfiguration createCurrentRuleConfiguration() {
-        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         ShardingTableRuleConfiguration tableRuleConfig = new 
ShardingTableRuleConfiguration("t_order_item", null);
         tableRuleConfig.setDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "t_order_item_algorithm"));
+        tableRuleConfig.setKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("id", "in_used_key_generator"));
+        tableRuleConfig.setAuditStrategy(new 
ShardingAuditStrategyConfiguration(Collections.singleton("in_used_auditor"), 
false));
+        ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         result.getTables().add(tableRuleConfig);
-        result.getAutoTables().add(new 
ShardingAutoTableRuleConfiguration("t_order", null));
+        ShardingAutoTableRuleConfiguration autoTableRuleConfig = new 
ShardingAutoTableRuleConfiguration("t_order", null);
+        autoTableRuleConfig.setShardingStrategy(new 
StandardShardingStrategyConfiguration("order_id", "t_order_algorithm"));
+        result.getAutoTables().add(autoTableRuleConfig);
         result.getBindingTableGroups().add(new 
ShardingTableReferenceRuleConfiguration("reference_0", "t_order_item"));
         result.setDefaultTableShardingStrategy(new 
StandardShardingStrategyConfiguration("user_id", "default_table_strategy"));
         result.getShardingAlgorithms().put("unused_algorithm", null);
         result.getShardingAlgorithms().put("t_order_item_algorithm", null);
+        result.getShardingAlgorithms().put("t_order_algorithm", null);
         result.getShardingAlgorithms().put("default_table_strategy", null);
+        result.getKeyGenerators().put("in_used_key_generator", null);
         result.getKeyGenerators().put("unused_key_generator", null);
+        result.getAuditors().put("in_used_auditor", null);
         result.getAuditors().put("unused_auditor", null);
         return result;
     }

Reply via email to