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());
}