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 eb01313  Adjust the type of exception. (#12940)
eb01313 is described below

commit eb01313bed2c4afa194b4cbf72123254ca69271d
Author: lanchengx <[email protected]>
AuthorDate: Fri Oct 8 04:11:07 2021 -0500

    Adjust the type of exception. (#12940)
---
 ...teShardingBindingTableRuleStatementUpdater.java | 24 ++++++++--------------
 ...ardingBindingTableRuleStatementUpdaterTest.java |  9 ++++----
 2 files changed, 14 insertions(+), 19 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingBindingTableRuleStatementUpdater.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingBindingTableRuleStatementUpd
 [...]
index d52d0ef..ddd213c 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingBindingTableRuleStatementUpdater.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateShardingBindingTableRuleStatementUpdater.java
@@ -17,10 +17,10 @@
 
 package org.apache.shardingsphere.sharding.distsql.handler.update;
 
-import 
org.apache.shardingsphere.infra.distsql.update.RuleDefinitionCreateUpdater;
+import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import 
org.apache.shardingsphere.infra.distsql.update.RuleDefinitionCreateUpdater;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
@@ -31,6 +31,7 @@ import 
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardin
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -39,8 +40,8 @@ import java.util.stream.Collectors;
 public final class CreateShardingBindingTableRuleStatementUpdater implements 
RuleDefinitionCreateUpdater<CreateShardingBindingTableRulesStatement, 
ShardingRuleConfiguration> {
     
     @Override
-    public void checkSQLStatement(final ShardingSphereMetaData 
shardingSphereMetaData, final CreateShardingBindingTableRulesStatement 
sqlStatement, 
-                                  final ShardingRuleConfiguration 
currentRuleConfig) throws RuleDefinitionViolationException {
+    public void checkSQLStatement(final ShardingSphereMetaData 
shardingSphereMetaData, final CreateShardingBindingTableRulesStatement 
sqlStatement,
+                                  final ShardingRuleConfiguration 
currentRuleConfig) throws DistSQLException {
         String schemaName = shardingSphereMetaData.getName();
         checkCurrentRuleConfiguration(schemaName, currentRuleConfig);
         checkToBeCreatedBindingTables(schemaName, sqlStatement, 
currentRuleConfig);
@@ -53,18 +54,11 @@ public final class 
CreateShardingBindingTableRuleStatementUpdater implements Rul
         }
     }
     
-    private void checkToBeCreatedBindingTables(final String schemaName, final 
CreateShardingBindingTableRulesStatement sqlStatement, 
-                                               final ShardingRuleConfiguration 
currentRuleConfig) throws DuplicateRuleException {
-        Collection<String> notExistedBindingTables = new HashSet<>();
+    private void checkToBeCreatedBindingTables(final String schemaName, final 
CreateShardingBindingTableRulesStatement sqlStatement,
+                                               final ShardingRuleConfiguration 
currentRuleConfig) throws DistSQLException {
         Collection<String> currentLogicTables = 
getCurrentLogicTables(currentRuleConfig);
-        for (String each : sqlStatement.getBindingTables()) {
-            if (!currentLogicTables.contains(each)) {
-                notExistedBindingTables.add(each);
-            }
-        }
-        if (!notExistedBindingTables.isEmpty()) {
-            throw new DuplicateRuleException("binding", schemaName, 
notExistedBindingTables);
-        }
+        Set<String> notExistedBindingTables = 
sqlStatement.getBindingTables().stream().filter(each -> 
!currentLogicTables.contains(each)).collect(Collectors.toSet());
+        DistSQLException.predictionThrow(notExistedBindingTables.isEmpty(), 
new RequiredRuleMissedException("Sharding", schemaName, 
notExistedBindingTables));
     }
     
     private Collection<String> getCurrentLogicTables(final 
ShardingRuleConfiguration currentRuleConfig) {
diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingBindingTableRuleStatementUpdaterTest.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingBindingTableRuleStatementUpdaterTest.java
index cf61dc3..f1e7287 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingBindingTableRuleStatementUpdaterTest.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-distsql/shardingsphere-sharding-distsql-handler/src/test/java/org/apache/shardingsphere/sharding/distsql/update/CreateShardingBindingTableRuleStatementUpdaterTest.java
@@ -17,8 +17,9 @@
 
 package org.apache.shardingsphere.sharding.distsql.update;
 
+import org.apache.shardingsphere.infra.distsql.exception.DistSQLException;
 import 
org.apache.shardingsphere.infra.distsql.exception.rule.DuplicateRuleException;
-import 
org.apache.shardingsphere.infra.distsql.exception.rule.RuleDefinitionViolationException;
+import 
org.apache.shardingsphere.infra.distsql.exception.rule.RequiredRuleMissedException;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration;
@@ -40,13 +41,13 @@ public final class 
CreateShardingBindingTableRuleStatementUpdaterTest {
     
     private final CreateShardingBindingTableRuleStatementUpdater updater = new 
CreateShardingBindingTableRuleStatementUpdater();
     
-    @Test(expected = DuplicateRuleException.class)
-    public void assertCheckSQLStatementWithoutCurrentTableRule() throws 
RuleDefinitionViolationException {
+    @Test(expected = RequiredRuleMissedException.class)
+    public void assertCheckSQLStatementWithoutCurrentTableRule() throws 
DistSQLException {
         updater.checkSQLStatement(shardingSphereMetaData, 
createSQLStatement(), new ShardingRuleConfiguration());
     }
     
     @Test(expected = DuplicateRuleException.class)
-    public void assertCheckSQLStatementWithDuplicateTables() throws 
RuleDefinitionViolationException {
+    public void assertCheckSQLStatementWithDuplicateTables() throws 
DistSQLException {
         updater.checkSQLStatement(shardingSphereMetaData, 
createDuplicatedSQLStatement(), getCurrentRuleConfig());
     }
     

Reply via email to