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 d6df93334de Remove useless algorithm after drop sharing config item 
(#26806)
d6df93334de is described below

commit d6df93334de3db39a792df4fe5eb6c2b47b77edf
Author: ChenJiaHao <[email protected]>
AuthorDate: Fri Jul 7 18:22:22 2023 +0800

    Remove useless algorithm after drop sharing config item (#26806)
---
 .../AlterShardingTableRuleStatementUpdater.java       |  1 -
 .../DropDefaultShardingStrategyStatementUpdater.java  |  4 +++-
 .../update/DropShardingTableRuleStatementUpdater.java | 19 ++++++++++++++-----
 .../handler/update/RuleDefinitionDropUpdater.java     |  1 +
 4 files changed, 18 insertions(+), 7 deletions(-)

diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
index 08a5a58aec1..a46d4b64906 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterShardingTableRuleStatementUpdater.java
@@ -62,7 +62,6 @@ public final class AlterShardingTableRuleStatementUpdater 
implements RuleDefinit
                 result.getTables().add(each);
             }
         }
-        // TODO find unused algorithm
         return result;
     }
     
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyStatementUpdater.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyStatementUpdater.java
index 2e1c919d37a..168b42f3ace 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyStatementUpdater.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/DropDefaultShardingStrategyStatementUpdater.java
@@ -77,10 +77,12 @@ public final class 
DropDefaultShardingStrategyStatementUpdater implements RuleDe
         ShardingRuleConfiguration result = new ShardingRuleConfiguration();
         if 
(sqlStatement.getDefaultType().equalsIgnoreCase(ShardingStrategyLevelType.TABLE.name()))
 {
             
result.setDefaultTableShardingStrategy(currentRuleConfig.getDefaultTableShardingStrategy());
+            currentRuleConfig.setDefaultTableShardingStrategy(null);
         } else {
             
result.setDefaultDatabaseShardingStrategy(currentRuleConfig.getDefaultDatabaseShardingStrategy());
+            currentRuleConfig.setDefaultDatabaseShardingStrategy(null);
         }
-        // TODO find unused algorithm
+        UnusedAlgorithmFinder.find(currentRuleConfig).forEach(each -> 
result.getShardingAlgorithms().put(each, 
currentRuleConfig.getShardingAlgorithms().get(each)));
         return result;
     }
     
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 7faa990b44b..239d5775d25 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
@@ -112,8 +112,11 @@ public final class DropShardingTableRuleStatementUpdater 
implements RuleDefiniti
         for (String each : toBeDroppedShardingTableNames) {
             
result.getTables().addAll(currentRuleConfig.getTables().stream().filter(table 
-> each.equalsIgnoreCase(table.getLogicTable())).collect(Collectors.toList()));
             
result.getAutoTables().addAll(currentRuleConfig.getAutoTables().stream().filter(table
 -> each.equalsIgnoreCase(table.getLogicTable())).collect(Collectors.toList()));
+            dropShardingTable(currentRuleConfig, each);
         }
-        // TODO find unused algorithm
+        UnusedAlgorithmFinder.find(currentRuleConfig).forEach(each -> 
result.getShardingAlgorithms().put(each, 
currentRuleConfig.getShardingAlgorithms().get(each)));
+        findUnusedKeyGenerator(currentRuleConfig).forEach(each -> 
result.getKeyGenerators().put(each, 
currentRuleConfig.getKeyGenerators().get(each)));
+        findUnusedAuditors(currentRuleConfig).forEach(each -> 
result.getAuditors().put(each, currentRuleConfig.getAuditors().get(each)));
         return result;
     }
     
@@ -133,6 +136,10 @@ public final class DropShardingTableRuleStatementUpdater 
implements RuleDefiniti
     }
     
     private void dropUnusedKeyGenerator(final ShardingRuleConfiguration 
currentRuleConfig) {
+        findUnusedKeyGenerator(currentRuleConfig).forEach(each -> 
currentRuleConfig.getKeyGenerators().remove(each));
+    }
+    
+    private static Collection<String> findUnusedKeyGenerator(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(ShardingAutoTableRuleConfiguration::getKeyGenerateStrategy).filter(Objects::nonNull)
@@ -140,11 +147,14 @@ public final class DropShardingTableRuleStatementUpdater 
implements RuleDefiniti
         if (null != currentRuleConfig.getDefaultKeyGenerateStrategy()) {
             
inUsedKeyGenerators.add(currentRuleConfig.getDefaultKeyGenerateStrategy().getKeyGeneratorName());
         }
-        Collection<String> unusedKeyGenerators = 
currentRuleConfig.getKeyGenerators().keySet().stream().filter(each -> 
!inUsedKeyGenerators.contains(each)).collect(Collectors.toSet());
-        unusedKeyGenerators.forEach(each -> 
currentRuleConfig.getKeyGenerators().remove(each));
+        return 
currentRuleConfig.getKeyGenerators().keySet().stream().filter(each -> 
!inUsedKeyGenerators.contains(each)).collect(Collectors.toSet());
     }
     
     private void dropUnusedAuditor(final ShardingRuleConfiguration 
currentRuleConfig) {
+        findUnusedAuditors(currentRuleConfig).forEach(each -> 
currentRuleConfig.getAuditors().remove(each));
+    }
+    
+    private static Collection<String> findUnusedAuditors(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().map(ShardingAutoTableRuleConfiguration::getAuditStrategy).filter(Objects::nonNull)
@@ -152,8 +162,7 @@ public final class DropShardingTableRuleStatementUpdater 
implements RuleDefiniti
         if (null != currentRuleConfig.getDefaultAuditStrategy()) {
             
inUsedAuditors.addAll(currentRuleConfig.getDefaultAuditStrategy().getAuditorNames());
         }
-        Collection<String> unusedAuditors = 
currentRuleConfig.getAuditors().keySet().stream().filter(each -> 
!inUsedAuditors.contains(each)).collect(Collectors.toSet());
-        unusedAuditors.forEach(each -> 
currentRuleConfig.getAuditors().remove(each));
+        return currentRuleConfig.getAuditors().keySet().stream().filter(each 
-> !inUsedAuditors.contains(each)).collect(Collectors.toSet());
     }
     
     private boolean isEmptyShardingTables(final ShardingRuleConfiguration 
currentRuleConfig) {
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionDropUpdater.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionDropUpdater.java
index 161ca2f3af8..bf848d87f02 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionDropUpdater.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/update/RuleDefinitionDropUpdater.java
@@ -55,6 +55,7 @@ public interface RuleDefinitionDropUpdater<T extends 
SQLStatement, R extends Rul
     }
     
     /**
+     * TODO remove this method after remove Compatible_Cluster mode
      * Update current rule configuration.
      *
      * @param sqlStatement SQL statement

Reply via email to