menghaoranss commented on a change in pull request #10465:
URL: https://github.com/apache/shardingsphere/pull/10465#discussion_r639387119



##########
File path: 
shardingsphere-proxy/shardingsphere-proxy-backend/src/main/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/DropShardingTableRuleBackendHandler.java
##########
@@ -49,24 +49,23 @@ public DropShardingTableRuleBackendHandler(final 
DropShardingTableRuleStatement
     @Override
     public ResponseHeader execute(final String schemaName, final 
DropShardingTableRuleStatement sqlStatement) {
         Collection<String> tableNames = 
sqlStatement.getTableNames().stream().map(each -> 
each.getIdentifier().getValue()).collect(Collectors.toList());
-        ShardingRuleConfiguration shardingRuleConfiguration = 
check(schemaName, tableNames);
-        drop(shardingRuleConfiguration, tableNames);
+        Optional<ShardingRuleConfiguration> shardingRuleConfiguration = 
getShardingRuleConfiguration(schemaName);
+        check(schemaName, shardingRuleConfiguration, tableNames);
+        drop(shardingRuleConfiguration.get(), tableNames);
         post(schemaName);
         return new UpdateResponseHeader(sqlStatement);
     }
     
-    private ShardingRuleConfiguration check(final String schemaName, final 
Collection<String> tableNames) {
-        Optional<ShardingRuleConfiguration> shardingRuleConfiguration = 
getShardingRuleConfiguration(schemaName);
+    private void check(final String schemaName, final 
Optional<ShardingRuleConfiguration> shardingRuleConfiguration, final 
Collection<String> tableNames) {
         if (!shardingRuleConfiguration.isPresent()) {
             throw new ShardingTableRuleNotExistedException(schemaName, 
tableNames);
         }
         Collection<String> shardingTableNames = 
getShardingTables(shardingRuleConfiguration.get());
-        Collection<String> notExistedTableNames = 
tableNames.stream().filter(each -> 
!shardingTableNames.contains(each)).collect(Collectors.toList());
-        if (!notExistedTableNames.isEmpty()) {
-            throw new ShardingTableRuleNotExistedException(schemaName, 
notExistedTableNames);
+        Collection<String> bindingTables = 
getBindingTables(shardingRuleConfiguration.get());
+        Collection<String> notSatisfiedTableNames = 
tableNames.stream().filter(each -> !shardingTableNames.contains(each) || 
bindingTables.contains(each)).collect(Collectors.toList());

Review comment:
       2. Check whether the dropped table rules exist in the binding table rule
    3. throw ShardingTableRulesInUsedException if exist
   
   please check.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to